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

объект Поиск пересечений
объект 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.