Для взаимодействия с моделированием модели на основе действий пользователя или событий, происходящих в виртуальном мире, можно использовать датчики виртуальной реальности. Чтобы перемещать графические объекты в виртуальном мире во время моделирования или изменять их внешний вид на основе действий или событий пользователя, можно:
Определите узел датчика, который генерирует события и выходные значения в зависимости от времени, навигации, действий и изменений расстояния в сцене. Например, TouchSensor узел отслеживает местоположение и состояние устройства указания. Датчик обнаруживает, когда вы указываете на геометрию, содержащуюся в TouchSensor родительская группа узла. См. раздел Добавление датчиков в виртуальные миры.
Добавьте блок VR Source и выберите свойства датчика для чтения. См. раздел Считывание значений датчиков с помощью MATLAB.
Примечание
Вместо использования блока VR Source для считывания значений датчиков можно записать S-функцию или использовать блок MATLAB Function.
При работе в MATLAB ® можно считывать значения датчиков с помощьюvrnode свойства объекта.
Считывание значений датчиков с помощью блока VR Source, выходы которого можно использовать для управления поведением моделирования.
В блок-схеме Simulink ® можно настроить интерфейс для датчиков в сцене виртуальной реальности. Вы также можете вводить сигналы программно из виртуального мира в имитационную модель.
Сцены виртуальной реальности могут содержать датчики, которые являются узлами, генерирующими события и выходные значения в зависимости от времени, навигации, действий и изменений расстояния в сцене. Эти узлы добавляют интерактивность в виртуальный мир. Датчики виртуального мира напоминают датчики реального мира, такие как ультразвуковые, лидарные и сенсорные датчики. Функции Simulink 3D Animation™ можно использовать для считывания значений полей датчиков в модели моделирования и управления моделированием на основе взаимодействия пользователя с виртуальной сценой.
Способы использования датчиков:
Используйте данные датчиков из виртуального мира для управления моделированием.
Обеспечение взаимодействия между навигацией пользователя и взаимодействием в виртуальном мире и моделированием модели.
Чтобы моделирование реагировало на события виртуального мира, такие как отметки времени или выходные данные сценариев.
Для управления моделированием используется статическая информация из виртуального мира, например размер окна.
Обнаружение столкновений можно использовать для точного моделирования физических ограничений объектов в реальном мире, где, как правило, два объекта не могут находиться в одном и том же месте одновременно. Выходные данные узла обнаружения коллизий можно использовать для:
Изменение состояния других узлов виртуального мира.
Применение алгоритмов MATLAB к данным коллизий.
Приводите модели Simulink.
Например, можно использовать геометрические датчики для робототехнического моделирования. Дополнительные сведения см. в разделе Обнаружение конфликтов объектов.
Эти датчики можно определить в сцене.
| Датчики | Описание |
|---|---|
CylinderSensor | Отображает движение указателя (например, мыши) в поворот невидимого цилиндра, выровненного по оси Y локальной системы координат. |
PlaneSensor | Отображение движения указывающего устройства в двумерное перемещение в плоскости, параллельной плоскости z = 0 локальной системы координат. |
ProximitySensor | Создает события при входе, выходе и перемещении средства просмотра в пределах области в пространстве (определяемой полем) |
SphereSensor | Отображение движения указателя в сферический поворот относительно начала локальной системы координат |
TimeSensor | Создает события по мере прохождения времени |
TouchSensor | Отслеживает расположение и состояние устройства указания и обнаруживает, когда вы указываете на геометрию, содержащуюся в TouchSensor родительская группа узла. |
VisibilitySensor | Обнаружение изменений видимости прямоугольной рамки при навигации по миру. |
PointPickSensor | Использование облаков точек для определения того, какая из точек находится внутри сталкивающейся геометрии |
LinePickSensor | Использует вентиляторы лучей или другие наборы линий, которые определяют расстояние до сопряженных геометрий |
PrimitivePickSensor | Примитивные геометрии (такие как конус, сфера или рамка), которые обнаруживают конфликтующие геометрии |
Можно считывать значения из узлов датчиков в виртуальном мире с помощью:
Блок VR Source можно использовать для взаимодействия пользователя, перемещающегося по виртуальному миру, и моделирования модели Simulink. Блок VR Source регистрирует взаимодействие пользователя с виртуальным миром и передает эти данные в модель, чтобы повлиять на моделирование модели. Блок VR Source считывает значения из полей виртуального мира, указанных в диалоговом окне Параметры блока (Block Parameters), и вводит их в модель.
Например, можно задать уставки (требуемые позиции) в виртуальном мире, чтобы пользователь мог указать местоположение объекта виртуального мира в интерактивном режиме. Затем моделирование реагирует на измененное местоположение объекта. Блок VR Source может считывать события модели из виртуального мира, такие как отметки времени или выходные данные из сценариев. Блок VR Source также может считывать в модель статическую информацию о виртуальном мире (например, размер поля, определенного в файле 3D виртуального мира).
Примеры использования блока VR Source см. в разделе Виртуальная панель управления и магнитная модель левитации.
Чтобы использовать значение уставки в модели Simulink, можно записать S-функцию или блок MATLAB Function, который периодически считывает выходной сигнал датчика. В этом примере используется S-функция.
Щелкните правой кнопкой мыши блок считывания датчика VR модели магнитной левитации (vrmaglev) и выберите «Маска» > «Искать под маской».
vrmaglev/VR Sensor Reader отображается модель. Эта модель содержит vrextin блок, который является S-функциональным блоком. S-функция vrextin синхронизирует поле датчика в setup и периодически считывает его значение в mdlUpdate способ.
Проверьте параметры S-функции. Щелкните правой кнопкой мыши vrextin и выберите S-Function Parameters.
Параметры, определенные в маске, предоставляют время выборки, виртуальный мир, узел и поле для чтения.
Примечания о функции vrextin S
Вместо установки собственных блочных выходов, vrextin S-функция устанавливает значение соседнего блока константы value_holder. Этот параметр делает блок VR Sensor Reader совместимым с генерацией кода Simulink Coder™, чтобы модель могла работать на целевых устройствах Simulink Coder.
Сигнальная петля между действиями пользователя (перемещение мяча в нужное положение с помощью мыши) замыкается через связанную модель Simulink vrmaglev. Захват мяча и перемещение его в новое положение работает только тогда, когда модель работает и когда модель устанавливает синий метод выбора переключиться на путь сигнала датчика виртуальной реальности. Для просмотра поведения PlaneSensor с использованием только виртуальной сцены сохраните maglev.wrl под новым именем. Удалите символ комментария (#), чтобы включить последнюю строку этого файла. Эти действия активируют прямую маршрутизацию выходного сигнала датчика в поступательное движение шарика. Затем можно поэкспериментировать с вновь созданной сценой вместо оригинала maglev.wrl в мире.
ROUTE Grab_Sensor.translation_changed TO Ball.translation
Этот подход можно использовать для ввода информации из всех полей узла данного типа. exposedField или eventOut, не только датчик eventOut поле. Дополнительные сведения о типах виртуального мирового класса данных см. в разделе Типы классов данных VRML.
Для полей класса exposedField, можно использовать альтернативное имя, используя имя поля с суффиксом, _changed. Например, translation и translation_changed являются альтернативными именами для запроса значения поля перевода Grab_Sensor узел.