Meshes define reusable geometry (triangles, lines, or points) and are instantiated by Nodes.
Each draw call required to render a mesh is represented as a Primitive. Meshes typically have only a single Primitive, but may have more for various reasons. A mesh manages only a list of primitives — materials, morph targets, and other properties are managed on a per- primitive basis.
When the same geometry and material should be rendered at multiple places in the scene, reuse the same Mesh instance and attach it to multiple nodes for better efficiency. Where the geometry is shared but the material is not, reusing Accessors under different meshes and primitives can similarly improve transmission efficiency, although some rendering efficiency is lost as the number of materials in a scene increases.
const primitive = doc.createPrimitive() .setAttribute('POSITION', positionAccessor) .setAttribute('TEXCOORD_0', uvAccessor); const mesh = doc.createMesh('myMesh') .addPrimitive(primitive); node.setMesh(mesh);
Adds a Primitive to the mesh's draw call list.
Makes a copy of this property, with the same resources (by reference) as the original.
Copies all data from another property to this one. Child properties are copied by reference, unless a 'resolve' function is given to override that.
Removes all inbound references to this object. At the end of the process the object is considered 'detached': it may hold references to child resources, but nothing holds references to it. A detached object may be re-attached.
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 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 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 true if the node has been permanently removed from the graph.
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.
const materials = texture .listParents() .filter((p) => p instanceof Material)
Lists Primitive draw calls of the mesh.
Removes a Primitive from the mesh's draw call list.
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 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.