Поиск пересечений¶
Contents
-
объект
Поиск пересечений;
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
()¶ Запускается при нахождении/отсутствии пересечения с заданным объектом сцены.
Parameters: - Пересечение с / reactorName – Объект, наличие пересечения с которым проверяется.
- Не найдено / missed – аргумент, определяющий, должно ли событие приходить при отсутствии пересечения с заданным объектом или наоборот.
-
действие
Найти пересечение;
findIntersection
()¶ Поиск пересечения с объектами и обновление визуализации, если она включена. Пересесения рассчитываются только с объектами, которые видны в сцене и у которых включен параметр Узел.Обработка мыши (NodeReactor.handleClick).
Поиск пересечений на практике¶
Чтобы обновлять отображение цилиндра, используемого для визуализации, необходимо в обязательном порядке вызывать действие Найти пересечение (findIntersection).
Пересесения рассчитываются только с объектами у которых включены Узел.Видимость (NodeReactor.visible) и Узел.Обработка мыши (NodeReactor.handleClick). Если пересечение найдено с несколькими объектами, обработано будет пересечение с ближайшим.
Случай “Не найдено ни одного пересечения”¶
Если необходимо обработать случай, когда пересечение найдено, но не важен объектом, с которым оно найдено, необходимо в событии Пересечение (onHit) параметр “Пересечение с” установить в значение “Не определено”, а параметр “Не найдено” в значение false
.
Случай “Найдено какое-либо пересечени唶
Если необходимо обработать случай, когда не найдено ни одного пересечения, необходимо в событии Пересечение (onHit) параметр “Пересечение с” установить в значение “Не определено”, а параметр “Не найдено” в значение true
.