Пример vrcollisions показывает простой способ реализации обнаружения столкновений в Simulink ® 3D Animation™.
В виртуальном мире определяется X3D LinePickSensor. Этот датчик обнаруживает приблизительные столкновения нескольких лучей (смоделированных как IndexedLineSet) с произвольной геометрией в сцене. В случае геометрических примитивов обнаруживаются точные коллизии. Одним из выходных полей LinePickSensor является поле isActive, которое становится TRUE, как только обнаруживается столкновение между любым из лучей и окружающими объектами сцены.
LinePickSensor с 3 видимыми желтыми лучами обнаружения присоединен к тривиальной модели робота (представленной синим цилиндром). Робот находится внутри комнаты с несколькими препятствиями. Во время моделирования робот перемещается вперед до тех пор, пока его датчик не врывается в стену или препятствие. Используйте кнопки «Влево» и «Вправо», чтобы повернуть робота так, чтобы впереди был свободный путь, и робот снова начинает движение.
В модели определены блоки VR Sink и VR Source, связанные с одной и той же виртуальной сценой. VR Source используется для считывания сигнала isActive датчика и текущего положения робота. VR Sink используется для установки положения/поворота робота и цвета - робот становится красным при блокировке.
В виртуальном мире определены две точки зрения - одна статическая - «Обзор», и одна прикрепленная к роботу - «Следовать за роботом». Перейдите к последнему, чтобы увидеть сцену с другой точки зрения.

