Virtual World Data Types
Nodes use VRML and X3D virtual world data types to define objects and the types of data that can appear in the node fields and events.
This section explains these field data types and data class types.
Field Data Types
The Simulink® 3D Animation™ product provides an interface between the MATLAB® and Simulink environment and virtual reality scenes. With this interface, you can set and get the scene node field values. Working with these values requires that you understand the relationship between virtual world data types and the corresponding MATLAB data types. The following table illustrates the virtual world data types and how they are converted to and from MATLAB types.
For a detailed description of the VRML fields, refer to the VRML97 Standard.
You can use MATLAB commands to read and save X3D files and to associate X3D files with Simulink models. For additional information about X3D support in Simulink 3D Animation, see X3D Support.
For information about the supported X3D specification, see ISO/IEC 19775-1:2013. For information about supported X3D encoding, see ISO/IEC 19776-1.3:201x and ISO/IEC 19776-2.3:201x.
VRML Type | Description | Simulink 3D Animation Type |
---|---|---|
| Boolean value true or false. |
|
| 32–bit, floating-point value. |
|
| 32–bit, signed-integer value. |
|
| Absolute or relative time value. |
|
| Vector of two floating-point values that you usually use for 2-D coordinates. For example, texture coordinates. | Single array (1-by-2) |
| Vector of three floating-point values that you usually use for 3-D coordinates. | Single array (1-by-3) |
| Vector of three floating-point values you use for RGB color specification. | Single array (1-by-3) |
| Vector of four floating-point values you use for specifying rotation coordinates (x, y, z) of an axis plus rotation angle around that axis. | Single array (1-by-4) |
| Two-dimensional array represented by a sequence of floating-point numbers. | uint8 array (n-by-m-by-3) |
| String in UTF-8 encoding. Compatible with ASCII, allowing you to use Unicode® characters. |
|
| Container for a node. |
|
| Array of | Single array (n-by-1) |
| Array of |
|
| Array of | Single array (n-by-2) |
| Array of | Single array (n-by-3) |
| Array of | Single array (n-by-3) |
| Array of | Single array (n-by-4) |
| Array of |
|
| Array of |
|
The Simulink 3D Animation software can work with various MATLAB data types, converting them if necessary:
The inputs for the
setfield
function (and its dot notation form) and VR Sink and VR Source blocks, accept all meaningful data types on input. Both convert the data types into natural virtual world types as necessary. The data types include logicals, signed and unsigned integers, singles, and doubles.The
getfield
function and its dot notation form return their natural data types according to the table above.
To ensure backward compatibility with existing models and applications, use the
Simulink
3D Animation
vrsetpref
function to define the data type support. Their names are as
follows:
Property | Description |
---|---|
| Specifies the |
| Specifies the |
| Specifies the |
Virtual World Data Class Types
A node can contain four classes of data: field
,
exposedField
, eventIn
, and
eventOut
. These classes define the behavior of the nodes, how nodes are
stored in memory, and how they can interact with other nodes and external objects.
VRML Data Class | Description |
---|---|
| An event that the node can receive |
| An event that the node can send |
| A private node member, holding node data |
| A public node member, holding node data |
eventIn
Usually, eventIn
events correspond to a field in the node. Node
fields are not accessible from outside the node. The only way you can change them is by
having a corresponding eventIn
.
Some nodes have eventIn
events that do not correspond to any field
of that node, but provide additional functionality for it. For example, the Transform node has an addChildren eventIn
.
When this event is received, the child nodes that are passed are added to the list of
children of a given transform.
You use this class type for fields that are exposed to other objects.
eventOut
This event is sent whenever the value of a corresponding node field that allows sending events changes its value.
You use this class type for fields that have this functionality.
field
A field can be set to a particular value in the virtual world 3D file. Generally, the
field is private to the node and its value can be changed only if its node receives a
corresponding eventIn
. It is important to understand that other nodes
or the external authoring interface cannot change the field.
You use this class type for fields that are not exposed and do not have the
eventOut
functionality.
exposedField
This powerful data class serves many purposes. You use this class type for fields that
have both eventIn
and eventOut
functionality. The
alternative name of the corresponding eventIn
is always the field name
with a set_
prefix. The name of the eventOut
is
always the field name with a _changed
suffix.
The exposedField
class defines how the corresponding
eventIn
and eventOut
behave. For all
exposedField
classes, when an event occurs, the field value is
changed, with a corresponding change to the scene appearance, and an
eventOut
is sent with the new field value. These changes allow the
chaining of events through many nodes.
The exposedField
class is accessible to scripts, whereas the
field
class is not.