Поиск пересечений

объект Поиск пересечений; IntersectorReactor

Данный объект используется для поиска пересечений виртуального луча, исходящего из заданной точки, с объектами Сцены.

Обзор возможностей

Свойство

Описание

Исходная система координат (sourceTransform)

Объект типа Система координат (TransformNodeReactor), определяющий начало и направление луча. Луч исходит из центра СК, а его направление противоположно оси Oz.

Мировая система координат (worldTransform)

Объект типа Группа (GroupNodeReactor), определяющий множество объектов, с которыми будет искаться пересечение.

Длина сегмента (segmentLength)

Длина виртуального луча, с которым рассчитываются пересечения, в метрах.

Визуализация лучом (visualizationEnabled)

Включение/отключение визуализации виртуального луча цилиндром.

Радиус луча (visualizationWidth)

Радиус визуализации виртуального луча в метрах.

Цвет луча (visualizationColor)

Цвет цилиндра, исползуемого для визуализации.

Событие

Описание

Пересечение (onHit)

Запускается при включении объекта.

Действие

Описание

Найти пересечение (findIntersection)

Включает объект.

параметр Исходная система координат; sourceTransform

Объект типа Система координат (TransformNodeReactor), определяющий начало и направление луча. Луч исходит из центра СК, а его направление противоположно оси Oz. Если выбранный объект или его родительские узлы имеет не единичный масштаб, это отразиться на свойствах Длина сегмента (segmentLength) и Радиус луча (visualizationWidth).

параметр Мировая система координат; worldTransform

Объект типа Группа (GroupNodeReactor), определяющий множество объектов, с которыми будет искаться пересечение. Важно, чтобы Исходная система координат (sourceTransform) являлся дочерним узлом Мировая система координат (worldTransform), в противном случае результат рассчета пересечений будет непредсказуем.

параметр Длина сегмента; segmentLength

Длина виртуального луча, с которым рассчитываются пересечения, в метрах. Длина указывается в локальных координатах объекта, определяемого свойством Исходная система координат (sourceTransform). Если расстояние между некоторым объектом и объектом, определенным свойством Исходная система координат (sourceTransform), больше значения Мировая система координат (worldTransform), пересечение с этим объектом будет заранее отсутствовать.

параметр Визуализация лучом; visualizationEnabled

Включение/отключение визуализации виртуального луча цилиндром. Высота цилиндра не превышает значение параметра Длина сегмента (segmentLength), при этом, если найдено пересечение с некоторым объектом сцены, высота цилиндра соответсвует расстоянию до этого объекта.

параметр Радиус луча; visualizationWidth

Радиус визуализации виртуального луча в метрах. Определяет радиус цилиндра при визуализации и не влияет на результат расчета пересечений.

параметр Цвет луча; visualizationColor

Цвет цилиндра, исползуемого для визуализации.

событие Пересечение; onHit()

Запускается при нахождении/отсутствии пересечения с заданным объектом сцены.

Параметры
  • Пересечение с / reactorName – Объект, наличие пересечения с которым проверяется.

  • Не найдено / missed – аргумент, определяющий, должно ли событие приходить при отсутствии пересечения с заданным объектом или наоборот.

действие Найти пересечение; findIntersection()

Поиск пересечения с объектами и обновление визуализации, если она включена. Пересесения рассчитываются только с объектами, которые видны в сцене и у которых включен параметр Узел.Обработка мыши (NodeReactor.handleClick).

Поиск пересечений на практике

Чтобы обновлять отображение цилиндра, используемого для визуализации, необходимо в обязательном порядке вызывать действие Найти пересечение (findIntersection).

Пересесения рассчитываются только с объектами у которых включены Узел.Видимость (NodeReactor.visible) и Узел.Обработка мыши (NodeReactor.handleClick). Если пересечение найдено с несколькими объектами, обработано будет пересечение с ближайшим.

Случай «Не найдено ни одного пересечения»

Если необходимо обработать случай, когда пересечение найдено, но не важен объектом, с которым оно найдено, необходимо в событии Пересечение (onHit) параметр «Пересечение с» установить в значение «Не определено», а параметр «Не найдено» в значение false.

Случай «Найдено какое-либо пересечение»

Если необходимо обработать случай, когда не найдено ни одного пересечения, необходимо в событии Пересечение (onHit) параметр «Пересечение с» установить в значение «Не определено», а параметр «Не найдено» в значение true.