Adds another node as a child of this one. Nodes cannot have multiple parents.
Makes a copy of this property, with the same resources (by reference) as the original.
Events.
Removes both inbound references to and outbound references from this object. At the end of the process the object holds no references, and nothing holds references to it. A disposed object is not reusable.
Returns true if two properties are deeply equivalent, recursively comparing the attributes of the properties. Optionally, a 'skip' set may be included, specifying attributes whose values should not be considered in the comparison.
Example: Two Primitives are equivalent if they have accessors and materials with equivalent content — but not necessarily the same specific accessors and materials.
Returns the Camera, if any, instantiated at this node.
Returns an ExtensionProperty attached to this Property, if any.
Returns a reference to the Extras object, containing application-specific data for this Property. Extras should be an Object, not a primitive value, for best portability.
Returns the local matrix of this node.
Returns the Mesh, if any, instantiated at this node.
Returns the name of this property. While names are not required to be unique, this is encouraged, and non-unique names will be overwritten in some tools. For custom data about a property, prefer to use Extras.
Returns the Node's unique parent Node within the scene graph. If the Node has no parents, or is a direct child of the Scene ("root node"), this method returns null.
Unrelated to Property.listParents, which lists all resource references from properties of any type (Skin, Root, ...).
Returns the rotation (quaternion) of this node in local space.
Returns the scale of this node in local space.
Returns the Skin, if any, instantiated at this node.
Returns the translation (position) of this node in local space.
Initial weights of each PrimitiveTarget for the mesh instance at this node. Most engines only support 4-8 active morph targets at a time.
Returns the world matrix of this node.
Returns the rotation (quaternion) of this node in world space.
Returns the scale of this node in world space.
Returns the translation (position) of this node in world space.
Returns true if the node has been permanently removed from the graph.
Lists all child nodes of this node.
Lists all ExtensionProperty instances attached to this Property.
Returns a list of all properties that hold a reference to this property. For example, a material may hold references to various textures, but a texture does not hold references to the materials that use it.
It is often necessary to filter the results for a particular type: some resources, like Accessors, may be referenced by different types of properties. Most properties include the Root as a parent, which is usually not of interest.
Usage:
const materials = texture
.listParents()
.filter((p) => p instanceof Material)
Removes a node from this node's child node list.
Sets a Camera to be instantiated at this node.
Attaches the given ExtensionProperty to this Property. For a given extension, only one ExtensionProperty may be attached to any one Property at a time.
Updates the Extras object, containing application-specific data for this Property. Extras should be an Object, not a primitive value, for best portability.
Sets the local matrix of this node. Matrix will be decomposed to TRS properties.
Sets a Mesh to be instantiated at this node. A single mesh may be instatiated by multiple nodes; reuse of this sort is strongly encouraged.
Sets the name of this property. While names are not required to be unique, this is encouraged, and non-unique names will be overwritten in some tools. For custom data about a property, prefer to use Extras.
Sets the rotation (quaternion) of this node in local space.
Sets the scale of this node in local space.
Sets a Skin to be instantiated at this node.
Sets the translation (position) of this node in local space.
Initial weights of each PrimitiveTarget for the mesh instance at this node. Most engines only support 4-8 active morph targets at a time.
Visits this Node and its descendants, top-down.
Made by Don McCurdy • Documented with greendoc • © 2023 MIT License
Node
Nodes are the objects that comprise a Scene.
Each node may have one or more children, and a transform (position, rotation, and scale) that applies to all of its descendants. A node may also reference (or "instantiate") other resources at its location, including Mesh, Camera, Light, and Skin properties. A node cannot be part of more than one Scene.
A node's local transform is represented with array-like objects, intended to be compatible with gl-matrix, or with the
toArray
/fromArray
methods of libraries like three.js and babylon.js.Usage:
const node = doc.createNode('myNode') .setMesh(mesh) .setTranslation([0, 0, 0]) .addChild(otherNode);
References: