Primitives are individual GPU draw calls comprising a Mesh.

Meshes typically have only a single Primitive, although various cases may require more. Each primitive may be assigned vertex attributes, morph target attributes, and a material. Any of these properties should be reused among multiple primitives where feasible.

Primitives cannot be moved independently of other primitives within the same mesh, except through the use of morph targets and skinning. If independent movement or other runtime behavior is necessary (like raycasting or collisions) prefer to assign each primitive to a different mesh. The number of GPU draw calls is typically not unaffected by grouping or ungrouping primitives to a mesh.

Each primitive may optionally be deformed by one or more morph targets, stored in a PrimitiveTarget.

Usage:

const primitive = doc.createPrimitive()
    .setAttribute('POSITION', positionAccessor)
    .setAttribute('TEXCOORD_0', uvAccessor)
    .setMaterial(material);
mesh.addPrimitive(primitive);
node.setMesh(mesh);

References:

Hierarchy

Properties

propertyType: string

Property type.

Methods

  • Adds a morph target to the primitive. All primitives in the same mesh must have the same number of targets.

  • clone(): this
  • copy(other: this, resolve: PropertyResolver<Property>): this
  • Copies all data from another property to this one. Child properties are copied by reference, unless a 'resolve' function is given to override that.

  • detach(): this
  • 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.

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

  • getAttribute(semantic: string): Accessor
  • getExtras(): object
  • 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.

  • getMode(): MeshPrimitiveMode
  • 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.

  • isDisposed(): boolean
  • Lists all vertex attribute Accessors associated with the primitive, excluding any attributes used for morph targets. For example, [positionAccessor, normalAccessor, uvAccessor]. Order will be consistent with the order returned by .listSemantics().

  • 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)
  • listSemantics(): string[]
  • Lists all vertex attribute semantics associated with the primitive, excluding any semantics used for morph targets. For example, ['POSITION', 'NORMAL', 'TEXCOORD_0']. Order will be consistent with the order returned by .listAttributes().

  • Removes a morph target from the primitive. All primitives in the same mesh must have the same number of targets.

  • setAttribute(semantic: string, accessor: Accessor): this
  • setExtras(extras: object): this
  • Updates the Extras object, containing application-specific data for this Property. Extras should be an Object, not a primitive value, for best portability.

  • Sets an Accessor with indices of vertices to be drawn. In TRIANGLES draw mode, each set of three indices define a triangle. The front face has a counter-clockwise (CCW) winding order.

  • setMode(mode: MeshPrimitiveMode): this
  • setName(name: string): this
  • 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.

Function symbol, f(📦) → 📦, where the argument and output are a box labeled 'glTF'.

Made by Don McCurdy TypeDoc documentation Copyright 2020 under MIT license