Metanode Structure Definitions
Listing of metanode structures, describing their purpose and listing their property index and any other supplementary enumerations.
Note
This documentation is generated from the application headers, where, conventionally, a Meta_
prefix is used, and an IDX
enum lists the properties in order, with an Idx_
prefix. So Meta_Animation::Idx_Interpolation
refers to the Interpolation
property on the Animation
metanode.
When applying this information to scripts and plugins, which operate on node and property names, omit the Meta_
and Idx_
prefixes
Enum values that specify "symbols" are for int properties that expect a particular internal value. Since this value may change over time, in order to allow plugins to remain compatible between versions, it is recommended to use these symbols to set these values, rather than the raw integer values. The Lua symbol can be used as-is, as it is global in the Lua state. The C symbols can be used with
VRSetPropertyEnum and related functions.
Classes
An animation is a collection of keyframes and/or actions to apply to a target node.
Animation keyframes for bool, int, float, double and world float properties.
A PRS frame is a keyframe with a position, rotation and scale at a specified time.
An animation link permits a Meta_Animation node to be inserted into a track at a specified time. This level of indirection is necessary in order to reuse a single animation in multiple places.
An Annotation node is a method of associating information with an object in the scene.
An AnnotationComment contains a text comment made on an Annotation.
An AnnotationList node is a container for multiple Annotation nodes.
AnnotationStyles is a container for GUI style nodes, applied to annotations. These are usually Meta_ModelMarkerStyle or similar and are saved with the scene so are customisable.
An ApplicationMenuCustom is used by context menus to populate the menu with dynamic data (for example, a list of nodes in the tree)
An ApplicationMenuEntry is a menu entry that can appear in the context menu or main file menu.
An ApplicationMenuHeader inserts a header before its sibling items, using the name of the node as the caption.
An ApplicationMenuSeparator inserts a separator into a context menu or main menu.
An Assembly is the main node type in the scenegraph, used to build the transform hierarchy of the scene.
An AssemblyPRS node is used to store hints for matrix edit gui controls.
An AudioBuffer represents sound data that can be played by multiple sources.
An AudioSound represents a "one-shot" playback method for Meta_AudioBuffer nodes.
A container for AudioStreamBuffer nodes.
An AudioTrack provides full control over playback and looping of data in a Meta_AudioBuffer.
A Billboard allows its children to be rendered in various alignment and sizing modes.
A Bone is a component of an inverse kinematics (IK) system.
A BufferedStack is a stack that renders its contents into a texture internally to improve performance.
A ButtonGroup is an invisible object referenced by Meta_Button to specify radio groups (mutually exclusive toggles)
A Camera represents a body position in the world, which viewports can render from.
A CameraCollisionGuard prevents script event dispatch unless the camera is within Radius metres of the parent assembly.
A ChromaKey texture can beused to change a colour in a Meta_Movie or Meta_Texture to some other colour (which can be transparent).
A Collision node adds greater control over object collisions in the scene and allows the dispatching of script events in response to collisions.
A CollisionGuard prevents script event dispatch unless the specified assembly is the one being collided with.
A ColouredButtonStyle provides flat Meta_Button colours as well as button content layout controls.
A ColouredPanelStyle provides a background colour for a panel or stack.
A component track is a collection of animations to apply to a component of a vector property.
A Container is a generic container for other nodes.
A ConvexDecomposition is used to store pre-computed convex decomposition data as part of the scene.
A Dimension references two Meta_MeasuringPoint nodes and calculates the distances between them. It also provides scene visuals depicting the dimensions.
A dummy viewport type that passes through the image for testing.
A DynamicSection is a cutting plane that can be placed in the scene.
A container of Dynamic Sections.
Meta_Environment contains a background scene and separates it from the rest of the data, so that an imported CAD model can be dropped into a variety of ready-made environments.
An EventFunction is attached to a Meta_EventHandler, and refers to a named function registered via the C API.
An EventHandler can be attached to any other node to trigger script execution.
An EventScript is attached to a Meta_EventHandler, and contains Lua script to execute when the event is triggered.
An Eyes node allows tweaks to tracked setups to improve the viewing experience.
A Filter prevents itself and any descendants from appearing in the Scenes tree view.
A Font provides text rendering for Buttons and other UI elements that display text.
A FontList is automatically populated with instances of Meta_Typeface for every font detected on the system.
A GeoGroup contains a collection of polygons which share a single material. It may contain multiple Meta_Mesh nodes.
A Gesture contains data for matching a gesture or pose.
A GestureGuard prevents script event dispatch unless the specified gesture is matched.
A Gradient is a type of 2D texture that is automatically generated by adding Meta_GradientPoint children.
A GradientPanelStyle provides a simple background gradient for a panel or stack.
A GradientPoint is used to describe a colour point in a Meta_Gradient.
A GroupList is a container intended to be a direct child of the Scenes node. It contains Meta_Group nodes.
A GroupMember is a child of a Meta_Group and links to a node that is a member of the group.
A GUI is a container for other GUI elements such as buttons and stacks. It controls how the GUI is drawn.
Contains the description of a Gui layout group - that is, a collection of controls whose interfaces should display based on a value condition or a rollout button. If a property is to be a member of the group, it should be linked to by the GuiHints group property. Groups can be linked to other groups, in which case they are sub-groups.
Extra GUI hints, if further hints for a user interface are desired. e.g. its caption, help topic, tooltip, group layout, etc. Not specifically related to the usage of the property, but hints as to how it is intended to be seen by a user. A UI implementation is free to ignore this if it wants...
Contains a link to a gui hints node. This can be placed on a node or property to specify that it should use the hints of another node/property to avoid the need to copy large amounts of hints.
A GUIMaterial is a material that can specify its draw layer, so it may appear above or below other types of object.
Contains the description of an "option" - a value that can be used in an int property. This effectively describes the contents of multiple choice controls (e.g. dropdown boxes) when the value of the property would only make sense as one of a number of preset values. These should be placed under a Meta_GuiHints node.
Contains a link to a child node of the owner of the GuiHints. There may be many of these under a Meta_GuiHints node, a UI should prioritise its display so that properties of the linked item are displayed in the order that the GuiOrderHints appear in the tree, followed by any other properties not referenced by GuiOrderHints. For example, if Assembly::Enabled should be first, followed by Assembly::Transform, there would be two GuiOrderHints, the first linking to the Enabled MetaValue, the second to the Transform MetaValue. Node semantics specifying these nodes should override any ordering in the metanode semantics.
A HapticDevice represents a connection to a device such as a Phantom Omni. Only one instance is required in a scene.
An ImageMarkerStyle provides styling for a marker, using a custom texture instead of the default sphere.
An ImagePanel displays an image on a GUI in the scene.
A KeyCodeGuard prevents script event dispatch unless the specified key is pressed.
A KeyStateGuard prevents script event dispatch unless the key is currently being pressed.
A Label is a GUI object that displays some text.
A Library provides an organisational structure for assets such as models and materials in a scene.
The LibraryList represents the Libraries node in the tree.
A Light lights the scene. It is intended to be a child of a Meta_Assembly so it can be positioned in the scene.
A LightList contains Meta_Light nodes and is intended to exist on the Scenes root node for the purposes of being saved into scene overlay files.
A LightProbe represents a local skybox providing dynamic reflections of the surrounding environment.
A LOD represents one level of detail of a model, rendered based on its distance from the viewer. It contains Meta_GeoGroup children.
A LookAtTarget specifies a node for LookAt to look at.
A Marker is a 3D icon used to represent a clickable / draggable object in the scene - defaults to a sphere.
A MaterialParameter defines a single MDL function input.
A MaterialSelector gathers all materials in the scene and presents them in a list.
A MeasuringPoint is a point in space, used by a Meta_Dimension to perform measurements.
A Mesh is a collection of vertices and lists which can be rendered as a polyhedral object.
If a MetaNode has a MetaBase child, the name of that child is the name of another metanode that this one is a clone of.
A MetaDataBool stores a boolean value.
A MetaDataColour stores a colour (like a Meta_MetaDataFloat3, but with colour semantics on the value property)
A MetaDataDouble stores a double-precision floating point value.
A MetaDataDouble3 stores three double-precision floating point values.
A MetaDataDouble4 stores four double-precision floating point values.
A MetaDataFloat stores a single floating point value.
A MetaDataFloat2 stores two floating point values.
A MetaDataFloat3 stores three floating point values.
A MetaDataFloat4 stores four floating point values.
A MetaDataInt stores a single integer value.
A MetaDataInt2 stores two integer values.
A MetaDataLink stores a direct link to another node anywhere in the tree.
A MetaDataPropertyMask contains is a 256-bit value to store bits corresponding to up to 256 properties of a node.
A MetaDataString stores a string.
A MetaGroup defines a group of metadata and associated metadata types.
A MetaNode provides a description of other metanodes.
The MetaRoot node contains all the metanode definition nodes.
A MetaValue provides a description of a property on a metanode.
A Model represents instancable geometry, and is a container for collections of Meta_LOD or Meta_GeoGroup nodes.
A ModelMarkerStyle provides styling for a marker, using a custom model instead of the default sphere.
A Movie represents a video playback controller, which can be used like a Meta_Texture for display on materials and other surfaces.
A NetPlayerTexture is video streaming player from a remote Visionary Render application.
An OceanRotorWash node draws rotor wash when an assembly hovers above the ocean surface.
An OceanWake draws wakes behind vessels moving across the ocean surface.
An OculusViewport represents a viewport occupying a specified rectangle of a window (range 0 to 1) which renders the 3D scene using the projection and distortion calculated by the Oculus SDK.
An OpenVRViewport represents a viewport occupying a specified rectangle of a window (range 0 to 1) which renders the 3D scene using the projection and distortion calculated by the OpenVR SDK.
An OpenXRViewport represents a viewport occupying a specified rectangle of a window (range 0 to 1) which renders the 3D scene using the projection and distortion calculated by the OpenXR SDK.
A Panel is a fixed size container for GUI items.
A ParticleSystem emits particles. It gets its transform from a parent Meta_Assembly.
A Permission represents the user's ability to perform a restricted task.
A PhysicalScreen describes the physical location of a projection screen as part of a view configuration.
A Pivot modifies the origin point of an assembly.
A PointCloud renders a file containing points, generated using the point cloud converter utility.
A PointerController casts a ray to collide with scene and gui objects. It is used to provide lasers on tracked controllers.
A PoseGuard prevents script event dispatch unless the specified pose is matched.
A PoseStateGuard prevents script event dispatch unless the specified pose is maintained.
A Precision represents the tolerance value used by importer formats to tessellate a surface. Use validitymask to check which values are set.
A property track is a collection of animations to apply to a property of a specified node.
Metanode that contains a basic description of what a property is intended to be used for. e.g. Is it a colour (for a vec4f property), or a file (for a string property). This can be used as the node which is attached to the meta-metanodes with the semantics macros, or attached to anything else that needs some hints for a user interface.
Contains a link to a prop semantics node. This can be placed on a node or property to specify that it should use the semantics of another node/property to avoid the need to copy large amounts of semantics.
The RecycleBin is where deleted nodes are stored so they can be undone by the history stack.
A ReflectionProbe represents a local skybox providing dynamic reflections of the surrounding environment.
A RenderScene is a container for SceneLink nodes.
A RenderToTexture is a texture that is rendered into by a Viewport which should be a child node.
The Root node is the owner of all other nodes in the tree, which are added as descendants.
RenderState Blend allows you to override the blend mode for descendants.
A SceneLink specifies a link to a branch of the tree to render.
The SceneList represents the Scenes node in the tree.
A SceneLOD is a LOD that can be applied to Assembly hierarchies rather than individual models.
A ScrollBar is a Meta_Slider wrapped in arrow button controls.
A ScrollBarStyle provides styling options for the various parts of a Meta_ScrollBar.
A ScrollingStack is a stack that adds scrollbars if its contents are larger than its size. It renders its contents to a texture like Meta_BufferedStack.
A Separator delineates GUI objects.
A sequence track permits a sequence to be played at a specified time in another sequence.
define special metanode for sampler uniform type. Sampler contains a reference to a texture node, along with offset and scale to apply to texture coordinates before sampling.
A ShadowBoundsOverride allows a directional light's shadow bounds to be overridden depending on the camera position.
A SimulationTerrain controls the display of preprocessed height and image data.
A Slider is a GUI control that can be moved with a cursor by clicking the handle and dragging it.
A Group is a method of grouping other nodes together.
A SphericalMarkerStyle provides styling for the default Meta_Marker sphere model.
A Stack is a container that provides layout controls for its child objects.
A StdMaterial describes a standard material that can be applied to numerous 3D objects (geogroups, visuals, etc)
Meta_SurfaceShaderInstances are associated with Materials, when attached as a child of a material they will effect the vertex and/or fragment shaders of any visuals rendered with said material.
The System node contains protected nodes required for the application to function.
A SystemCollision node is used to override Meta_Visual system collision.
A Texture contains image data that is referenced by materials.
A TexturedButtonStyle provides controls for texturing a Meta_Button as well as content layout controls.
A TexturedPanelStyle provides an image background for a panel or stack.
A TimeIntervalGuard prevents script event dispatch unless the specified interval has passed since the last time.
Represents an AR marker that is currently being tracked by a headset, for example.
A TrackerInput represents a link to a particular part of a device, and can read data from it and feed it to a Meta_TrackerPRSLink.
A TrackerOutput represents a link to a particular part of a device, and can send data to it directly.
A TrackerPRSLink connects to Meta_TrackerInput nodes and translates their input data into a transformation matrix.
A Transform is a special node that when parented to a Meta_Visual overrides its local transform (distinctly from the Assembly).
Defines limits that can be applied to constrain an Assembly's transform values.
A TransformLink synchronises the transform of the source node onto the target node (and optionally the other way)
A TreeViewItem is a simple base element for constructing tree-view style UIs.
A Typeface appears under a Meta_FontList, containing the Typeface name of a font on the system.
An UntargettedViewport represents a viewport occupying a specified rectangle of a window (range 0 to 1) which renders the 3D scene using the specified view and projection matrices.
A User node represents a user, either the local user, or a member of a collaborative session.
A pointer type metanode that is not cleaned up by the group manager...
The UsersList represents the Users node in the tree.
A VertexAttrib node contains raw data describing a collection of vertices.
A VertexPrim specifies a range of vertices in Meta_VertexAttrib siblings to render from, requiring this data to be in primitive order (and possibly duplicated)
a View can be inserted at any point in the scene, and will be rendered into either the framebuffer or any child RenderTarget's there may be.
Meta_ViewFilter's are associated with Views, and correspond to a full-screen quad being drawn over the View executing a fragment shader function.
A ViewpointList is a container for saved Viewpoints.
A ViewpointSelector displays all viewpoints in the scene.
A Viewport occupies a specified rectangle of a window (range 0 to 1) which renders the 3D scene from the specified eye points looking at the specified screen rectangles.
A ViewportLayout is displayed by a Window and contains one or more Viewports.
A ViewShader represents a shader object, expected to be used by a Meta_ViewFilter.
A Visual provides an instance of a Meta_Model, and is attached as a child of a Meta_Assembly to position it in the scene.
A WaterMaterial provies Meta_Ocean rendering on an object.
A Window represents an actual application window displaying some viewports.
A ZSpaceViewport is a derivative of Viewport that specifically handles interaction with a zSpace device.
Trait used to identify other traits, allowing all registered traits to be identified by Trait_AbstractTrait::IsType to distinguish them from regular metanodes for code that needs to know that.
Defines