Узлы используют VRML и X3D типы данных виртуального мира для определения объектов и типов данных, которые могут отображаться в полях узлов и событиях.
В этом разделе описываются типы данных полей и типы классов данных.
Продукт Simulink ® 3D Animation™ обеспечивает интерфейс между средой MATLAB ® и Simulink и сценами виртуальной реальности. С помощью этого интерфейса можно задать и получить значения полей узла сцены. Работа с этими значениями требует понимания взаимосвязи между типами данных виртуального мира и соответствующими типами данных MATLAB. В следующей таблице представлены типы данных виртуального мира и способы их преобразования в типы MATLAB и из них.
Подробное описание полей VRML см. в стандарте VRML97.
Команды MATLAB можно использовать для чтения и сохранения X3D файлов, а также для связывания X3D файлов с моделями Simulink. Дополнительные сведения о поддержке X3D в Simulink 3D Animation см. в разделе Поддержка X3D.
Для получения информации о поддерживаемых спецификациях X3D см. ISO/IEC 19775-1: 2013. Сведения о поддерживаемой кодировке X3D см. в документах ISO/IEC 19776-1,3: 201x и ISO/IEC 19776-2,3: 201x .
| Тип VRML | Описание | Тип анимации Simulink 3D |
|---|---|---|
| Логическое значение true или false. |
|
| 32-разрядное значение с плавающей запятой. |
|
| 32-разрядное значение со знаком целого числа. |
|
| Абсолютное или относительное значение времени. |
|
| Вектор двух значений с плавающей запятой, которые обычно используются для 2-D координат. Например, координаты текстуры. | Один массив (1 на 2) |
| Вектор из трех значений с плавающей запятой, которые обычно используются для 3-D координат. | Один массив (1 на 3) |
| Вектор трех значений с плавающей запятой, используемый для цветовой спецификации RGB. | Один массив (1 на 3) |
| Вектор из четырех значений с плавающей точкой, используемый для задания координат поворота (x, y, z) оси плюс угол поворота вокруг этой оси. | Один массив (1 на 4) |
| Двумерный массив, представленный последовательностью чисел с плавающей запятой. | Массив uint8 (n-by-m-by-3) |
| Строка в кодировке UTF-8. Совместим с ASCII, позволяя использовать символы Юникод ®. |
|
| Контейнер для узла. |
|
| Массив | Один массив (n-by-1) |
| Массив |
|
| Массив | Одиночный массив (n-by-2) |
| Массив | Одиночный массив (n-by-3) |
| Массив | Одиночный массив (n-by-3) |
| Массив | Одиночный массив (n-by-4) |
| Массив |
|
| Массив |
|
Программное обеспечение Simulink 3D Animation может работать с различными типами данных MATLAB, преобразуя их при необходимости:
Входные данные для setfield функция (и ее форма точечной записи) и блоки VR Sink и VR Source принимают все значимые типы данных на входе. При необходимости оба типа данных преобразуются в типы естественного виртуального мира. Типы данных включают логики, подписанные и неподписанные целые числа, одиночные и двойные числа.
getfield функция и ее форма точечной записи возвращают свои естественные типы данных в соответствии с приведенной выше таблицей.
Для обеспечения обратной совместимости с существующими моделями и приложениями используйте Simulink 3D Animation
vrsetpref для определения поддержки типа данных. Их имена следующие:
| Собственность | Описание |
|---|---|
| Задает значение |
| Задает значение |
| Задает значение |
Узел может содержать четыре класса данных: field, exposedField, eventIn, и eventOut. Эти классы определяют поведение узлов, как узлы хранятся в памяти и как они могут взаимодействовать с другими узлами и внешними объектами.
| Класс данных VRML | Описание |
|---|---|
| Событие, которое может получить узел |
| Событие, которое узел может отправить |
| Член частного узла, содержащий данные узла |
| Член открытого узла, содержащий данные узла |
Обычно, eventIn события соответствуют полю в узле. Поля узла недоступны извне узла. Единственным способом их изменения является наличие соответствующего eventIn.
Некоторые узлы имеют eventIn события, которые не соответствуют какому-либо полю этого узла, но обеспечивают для него дополнительные функциональные возможности. Например, узел Transform имеет addChildren eventIn. При получении этого события передаваемые дочерние узлы добавляются в список нижестоящих элементов данного преобразования.
Этот тип класса используется для полей, открытых для других объектов.
Это событие отправляется всякий раз, когда значение соответствующего поля узла, которое позволяет отправлять события, изменяет его значение.
Этот тип класса используется для полей с этой функциональностью.
Поле может иметь определенное значение в файле 3D виртуального мира. Как правило, поле является частным для узла, и его значение может быть изменено только в том случае, если его узел получает соответствующий eventIn. Важно понимать, что другие узлы или внешний авторский интерфейс не могут изменить поле.
Этот тип класса используется для полей, которые не доступны и не имеют eventOut функциональные возможности.
Этот мощный класс данных служит многим целям. Этот тип класса используется для полей, имеющих оба типа eventIn и eventOut функциональные возможности. Альтернативное имя соответствующего eventIn всегда является именем поля с set_ префикс. Имя eventOut всегда является именем поля с _changed суффикс.
exposedField класс определяет, каким образом соответствующий eventIn и eventOut вести себя. Для всех exposedField классы, когда происходит событие, значение поля изменяется с соответствующим изменением внешнего вида сцены и eventOut отправляется с новым значением поля. Эти изменения позволяют связывать события через множество узлов.
exposedField класс доступен для сценариев, тогда как field класс не является.