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

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

В этом разделе описываются эти типы данных полей и типы классов данных.

Типы полевых данных

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

Подробное описание полей VRML см. в VRML97 Standard.

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

Информацию о поддерживаемых спецификациях X3D см. в стандарте ISO/IEC 19975-1: 2013. Для получения информации о поддерживаемой кодировке X3D смотрите ISO/IEC 19776-1,3: 201x и ISO/IEC 19776-2,3: 201x .

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

SFBool

Логическое значение true или false.

logical

SFFloat

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

single

SFInt32

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

int32

SFTime

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

double

SFVec2f

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

Один массив (1 на 2)

SFVec3f

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

Один массив (1 на 3)

SFColor

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

Один массив (1 на 3)

SFRotation

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

Один массив (1 на 4)

SFImage

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

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

SFString

Строка в UTF-8 кодировке. Совместимость с ASCII, позволяющая использовать Юникод® персонажи.

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 Sink и VR Source принимают все значимые типы данных при входе. Оба типа данных преобразуются в естественные типы виртуального мира по мере необходимости. Типы данных включают логики, подписанные и беззнаковые целые числа, синглы и двойные числа.

  • The 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.

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

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

eventOut

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

Этот тип класса используется для полей с этой функциональностью.

область

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

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

exposedField

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

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

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

Похожие темы