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