Чтобы взаимодействовать с симуляцией основанного на модели на пользовательских действиях или событиях, происходящих в виртуальном мире, можно использовать датчики виртуальной реальности. Чтобы переместить графические объекты в виртуальном мире во время симуляции или изменить их внешний вид, на основе пользовательских действий или событий, вы можете:
Задайте узел датчика, который генерирует события и выходные значения в зависимости от времени, навигации, и действий и изменений расстояния в сцене. Например, узел TouchSensor
отслеживает местоположение и состояние манипулятора. Датчик обнаруживает, когда вы указываете на геометрию, содержавшую в родительской группе узла TouchSensor
. Смотрите Добавляют Датчики к Виртуальным мирам.
Добавьте Исходный блок VR и выберите свойства датчика читать. Смотрите, что Значения Датчика Чтения Используют MATLAB.
Вместо того, чтобы использовать Исходный блок VR, чтобы считать значения датчика, можно записать S-функцию или использовать блок MATLAB function.
Если вы работаете в MATLAB®, можно считать значения датчика с помощью свойств объектов vrnode
.
Считайте значения датчика с помощью Исходного блока VR, выходные параметры которого могут использоваться, чтобы управлять поведением симуляции.
Можно настроить интерфейс в блок-схеме Simulink® к датчикам в сцене виртуальной реальности. Вы можете также входные сигналы программно от виртуального мира в имитационную модель.
Сцены виртуальной реальности могут содержать датчики, которые являются узлами, которые генерируют события и выходные значения в зависимости от времени, навигации, и действий и изменений расстояния в сцене. Эти узлы добавляют интерактивность в виртуальный мир. Датчики виртуального мира напоминают датчики реального мира, такой как сверхзвуковые, лазерный дальномер и сенсорные датчики. Можно использовать функции Simulink 3D Animation™, чтобы считать значения полей датчика в имитационные модели и симуляцию управления на основе взаимодействия с пользователем с виртуальной сценой.
Путями можно использовать датчики, включайте:
Используйте данные о датчике из виртуального мира, чтобы управлять симуляцией.
Обеспечьте интерактивность между пользовательской навигацией и взаимодействием в виртуальном мире и симуляции модели.
Имейте симуляцию, реагируют на события виртуального мира, такие как метки деления времени или выходные параметры из скриптов.
Используйте статическую информацию от виртуального мира, такого как размер поля, чтобы управлять симуляцией.
Можно использовать обнаружение столкновений, чтобы точно смоделировать физические ограничения объектов в реальном мире, где обычно два объекта не могут быть в том же месте одновременно. Можно использовать узел обнаружения столкновений выходные параметры для:
Измените состояние других узлов виртуального мира.
Примените алгоритмы MATLAB к данным о столкновении.
Модели Drive Simulink.
Например, можно использовать геометрические датчики для моделирования робототехники. Для получения дополнительной информации смотрите, Обнаруживают Объектные Столкновения.
Можно задать эти датчики в сцене.
Датчики | Описание |
---|---|
CylinderSensor | Движение указателя карт (например, мышь) во вращение на невидимом цилиндре, который выравнивается с y - ось системы локальной координаты. |
PlaneSensor | Движение манипулятора карт в двумерный перевод в плоской параллели к z =0 плоскостей системы локальной координаты. |
ProximitySensor | Генерирует события, когда средство просмотра входит, выходит и перемещается в области в пробел (заданный полем) |
SphereSensor | Движение манипулятора карт в сферическое вращение вокруг источника системы локальной координаты |
TimeSensor | Генерирует события как передачи времени |
TouchSensor | Отслеживает местоположение и состояние манипулятора и обнаруживает, когда вы указываете на геометрию, содержавшую в родительской группе узла TouchSensor . |
VisibilitySensor | Обнаруживает изменения видимости прямоугольника, когда вы перемещаетесь по миру. |
PointPickSensor | Облака точек использования, чтобы обнаружить, какая из точек является внутренними сталкивающимися конфигурациями |
LinePickSensor | Использование излучает вентиляторы или другие наборы строк, которые обнаруживают расстояние до сталкивающихся конфигураций |
PrimitivePickSensor | Примитивные конфигурации (такие как конус, сфера или поле), которые обнаруживают сталкивающиеся конфигурации |
Можно считать значения из узлов датчика в виртуальном мире при помощи:
Можно использовать Исходный блок VR для интерактивности между пользователем, перемещающимся по виртуальному миру и симуляцией модели Simulink. Исходный блок VR указывает взаимодействие с пользователем с виртуальным миром и передает те данные модели, чтобы влиять на симуляцию модели. Исходный блок VR читает значения из полей виртуального мира, заданных в диалоговом окне Block Parameters, и вводит их к модели.
Например, можно задать заданные значения (желаемые положения) в виртуальном мире, так, чтобы пользователь мог указать, что местоположение виртуального мира возражает в интерактивном режиме. Симуляция затем отвечает на измененное местоположение объекта. Исходный блок VR может читать в образцовые события из виртуального мира, такие как метки деления времени или выходные параметры из скриптов. Исходный блок VR может также читать в статическую информацию модели о виртуальном мире (например, размер поля, заданного в виртуальном мире 3D файл).
Для примеров, которые используют Исходный блок VR, см. Виртуальную Модель Панели управления и Магнитной левитации.
Чтобы использовать заданное значение в модели Simulink, можно записать S-функцию или блок MATLAB function, который читает датчик вывод периодически. Этот пример использует S-функцию.
Щелкните правой кнопкой по блоку VR Sensor Reader модели Magnetic Levitation Model (vrmaglev
) и выберите Mask> Look Under Mask.
Отображения модели vrmaglev/VR Sensor Reader
. Эта модель содержит блок vrextin
, который является Блоком s-function. vrextin S-функция синхронизирует поле датчика в методе setup
и периодически читает его значение в методе mdlUpdate
.
Исследуйте S-параметры-функции. Щелкните правой кнопкой по vrextin
и выберите S-Function Parameters.
Параметры, заданные в маске, предоставляют шаг расчета, виртуальный мир, и узел и поле, чтобы читать.
Примечания О vrextin S-функции
Вместо того, чтобы установить его собственный блок выходные параметры, S-функция vrextin
устанавливает значение смежного блока Constant 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
, не только поле Sensor eventOut
. Смотрите Типы классов Данных о VRML для получения дополнительной информации о типах классов данных о виртуальном мире.
Для полей класса exposedField
можно использовать альтернативное название с помощью имени поля с суффиксом, _changed
. Например, translation
и translation_changed
являются альтернативными названиями для запроса значения поля перевода узла Grab_Sensor
.