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