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:

Hierarchy

Properties

propertyType: PropertyType.NODE

Methods

  • Adds the given Node as a child of this Node.

    Requirements:

    1. Nodes MAY be root children of multiple Scenes
    2. Nodes MUST NOT be children of >1 Node
    3. Nodes MUST NOT be children of both Nodes and Scenes

    The addChild method enforces these restrictions automatically, and will remove the new child from previous parents where needed. This behavior may change in future major releases of the library.

  • listChildren(): Node[]
  • copy(other: Node, resolve?: unknown): Node
  • dispatchEvent(event: BaseEvent): this
  • Dispatches an event on the GraphNode, and on the associated Graph. Event types on the graph are prefixed, "node:[type]".

  • dispose(): void
  • 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.

  • equals(other: Property, skip?: Set<string>): boolean
  • 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.

  • addEventListener(type: string, listener: EventListener<T>): this
  • removeEventListener(type: string, listener: EventListener<T>): this
  • getExtension(name: string): Prop | null
  • listExtensions(): ExtensionProperty[]
  • getExtras(): Record<string, unknown>
  • 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.

  • setExtras(extras: Record<string, unknown>): Property
  • Updates the Extras object, containing application-specific data for this Property. Extras should be an Object, not a primitive value, for best portability.

  • isDisposed(): boolean
  • Returns true if the node has been permanently removed from the graph.

  • getMatrix(): mat4
  • setMatrix(matrix: mat4): Node
  • getName(): string
  • 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.

  • 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.

  • getParentNode(): Node
  • getParent(): SceneNode | null
  • listParents(): 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)
    
  • getRotation(): vec4
  • setRotation(rotation: vec4): Node
  • getScale(): vec3
  • setScale(scale: vec3): Node
  • getTranslation(): vec3
  • setTranslation(translation: vec3): Node
  • traverse(fn: (node: Node) => void): Node
  • getWeights(): number[]
  • setWeights(weights: number[]): Node
  • getWorldTranslation(): vec3
  • getWorldScale(): vec3
  • getWorldRotation(): vec4
  • getWorldMatrix(): mat4
Function symbol, where the argument and output are a box labeled 'glTF'.

Made by Don McCurdy. Documentation built with greendoc and published under Creative Commons Attribution 3.0.