exponenta event banner

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

Узлы используют 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

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-by-m-by-3)

SFString

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

char

SFNode

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

vrnode

MFFloat

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

Один массив (n-by-1)

MFInt32

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

int32 массив (n-by-1)

MFVec2f

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

Одиночный массив (n-by-2)

MFVec3f

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

Одиночный массив (n-by-3)

MFColor

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

Одиночный массив (n-by-3)

MFRotation

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

Одиночный массив (n-by-4)

MFString

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

char массив (n-by-1)

MFNode

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

vrnode

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

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

  • 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 события, которые не соответствуют какому-либо полю этого узла, но обеспечивают для него дополнительные функциональные возможности. Например, узел Transform имеет addChildren eventIn. При получении этого события передаваемые дочерние узлы добавляются в список нижестоящих элементов данного преобразования.

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

eventOut

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

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

область

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

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

exposedField

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

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

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

Связанные темы