Типы данных виртуального мира

Узлы используют VRML и типы данных виртуального мира X3D, чтобы задать объекты и типы данных, которые могут появиться в полях узла и событиях.

Этот раздел объясняет эти полевые типы данных и типы классов данных.

Полевые типы данных

Продукт Simulink® 3D Animation™ обеспечивает интерфейс между MATLAB® и сценами виртуальной реальности и окружением Simulink. С этим интерфейсом можно установить и получить значения полей узла сцены. Работа с этими значениями требует, чтобы вы поняли отношение между типами данных виртуального мира и соответствующими типами данных MATLAB. Следующая таблица иллюстрирует типы данных виртуального мира и как они преобразованы в и от типов MATLAB.

Для подробного описания полей VRML обратитесь к Стандарту VRML97.

Можно использовать команды MATLAB, чтобы считать и сохранить файлы X3D и сопоставить файлы X3D с моделями Simulink. Для получения дополнительной информации о поддержке X3D в Simulink 3D Animation см. Поддержку X3D.

Для получения информации о поддержанной спецификации X3D смотрите 19775-1:2013 ISO/IEC. Для получения информации о поддерживаемом кодировании X3D смотрите 19776-1.3:201x ISO/IEC и 19776-2.3:201x ISO/IEC.

Тип VRMLОписаниеТип Simulink 3D Animation

SFBool

TRUE или FALSE булева значения.

logical

SFFloat

32-битное, значение с плавающей точкой.

single

SFInt32

32-битное значение целого числа со знаком.

int32

SFTime

Абсолютная или относительная временная стоимость.

double

SFVec2f

Вектор двух значений с плавающей точкой, которые вы обычно используете для 2D координат. Например, координаты текстуры.

Единый массив (1 2)

SFVec3f

Вектор трех значений с плавающей точкой, которые вы обычно используете для 3-D координат.

Единый массив (1 3)

SFColor

Вектор трех значений с плавающей точкой вы используете для спецификации цветов RGB.

Единый массив (1 3)

SFRotation

Вектор четырех значений с плавающей точкой вы используете для определения координат вращения (x, y, z) оси плюс угол поворота вокруг той оси.

Единый массив (1-by-4)

SFImage

Двумерный массив представлен последовательностью чисел с плавающей запятой.

массив uint8 (n m 3)

SFString

Представьте в виде строки в кодировании UTF-8. Совместимый с ASCII, позволяя вам использовать символы Unicode®.

char

SFNode

Контейнер для узла.

vrnode

MFFloat

Массив значений SFFloat.

Единый массив (n-1)

MFInt32

Массив значений SFInt32.

Массив int32 (n-1)

MFVec2f

Массив значений SFVec2f.

Единый массив (n-2)

MFVec3f

Массив значений SFvec3f.

Единый массив (n-3)

MFColor

Массив значений SFColor.

Единый массив (n-3)

MFRotation

Массив значений SFRotation.

Единый массив (n-4)

MFString

Массив значений SFString.

Массив char (n-1)

MFNode

Массив значений SFNode.

vrnode

Программное обеспечение Simulink 3D Animation может работать с различными типами данных MATLAB, преобразовывая их при необходимости:

  • Входные параметры для функции setfield (и ее форма записи через точку) и Приемник VR и Исходные блоки VR, примите все значимые типы данных на входе. Оба преобразовывают типы данных в естественные типы виртуального мира по мере необходимости. Типы данных включают logicals, целые числа со знаком и беззнаковое целое, одиночные игры, и удваивается.

  • Функция getfield и ее форма записи через точку возвращают их естественные типы данных согласно приведенной выше таблице.

Чтобы гарантировать обратную совместимость существующими моделями и приложениями, используйте Simulink 3D Animation функция vrsetpref, чтобы задать поддержку типов данных. Их имена следующие:

СвойствоОписание

DataTypeBool

Задает тип данных boolean для vrnode/setfield и vrnode/getfield. Допустимыми значениями является 'logical' и 'char'. Если установлено в 'logical', виртуальный мир тип данных boolean возвращен как логическое значение. Если установлено в 'char', виртуальный мир типом данных boolean является возвращенный 'on' или 'off'.

DataTypeInt32

Задает тип данных int32 для vrnode/setfield и vrnode/getfield. Допустимыми значениями является 'int32' и 'double'. Если установлено в 'int32', виртуальный мир тип данных int32 возвращен как int32. Если установлено в 'double', виртуальный мир тип данных int32 возвращен как 'double'.

DataTypeFloat

Задает тип данных float для vrnode/setfield и vrnode/getfield. Допустимыми значениями является 'single' и 'double'. Если установлено в 'single', виртуальный мир float и типы данных color (типы большинства полей виртуального мира) возвращены как 'single'. Если установлено в 'double', виртуальный мир float и типы данных color возвращены как 'double'.

Типы классов данных о виртуальном мире

Узел может содержать четыре класса данных: field, exposedField, eventIn и eventOut. Эти классы задают поведение узлов, как узлы хранятся в памяти, и как они могут взаимодействовать с другими узлами и внешними объектами.

Класс данных о VRMLОписание

eventIn

Событие, которое может получить узел

eventOut

Событие, которое может отправить узел

field

Частный участник узла, содержа данные об узле

exposedField

Общедоступный участник узла, содержа данные об узле

обработка событий

Обычно, события eventIn соответствуют полю в узле. Поля узла не доступны снаружи узла. Единственным путем можно изменить их, при наличии соответствующего eventIn.

Некоторые узлы имеют события eventIn, которые не соответствуют никакому полю того узла, но обеспечивают дополнительную функциональность для него. Например, узел Преобразования имеет addChildren eventIn. Когда это событие получено, дочерние узлы, которые передаются, добавляются к списку дочерних элементов данного, преобразовывают.

Вы используете этот тип класса для полей, которые представлены другим объектам.

eventOut

Это событие отправляется каждый раз, когда значение соответствующего поля узла, которое позволяет отправлять события, изменяет свое значение.

Вы используете этот тип класса для полей, которые имеют эту функциональность.

поле

Поле может быть установлено в особое значение в виртуальном мире 3D файл. Обычно поле является частным к узлу, и его значение может быть изменено, только если его узел получает соответствующий eventIn. Важно понять, что другие узлы или внешний авторский интерфейс не могут изменить поле.

Вы используете этот тип класса для полей, которые не представлены и не имеют функциональности eventOut.

exposedField

Этот мощный класс данных служит многим целям. Вы используете этот тип класса для полей, которые имеют и eventIn и функциональность eventOut. Альтернативное имя соответствующего eventIn всегда является именем поля с префиксом set_. Имя eventOut всегда является именем поля с суффиксом _changed.

Класс exposedField задает, как соответствующий eventIn и eventOut ведут себя. Для всех классов exposedField, когда событие имеет место, значение поля изменяется с соответствующим изменением во внешнем виде сцены, и eventOut отправляется с новым значением поля. Эти изменения позволяют объединение в цепочку событий через многие узлы.

Класс exposedField доступен для скриптов, тогда как класс field не.

Похожие темы