Luxar Viewer API Documentation - v2026.9.22
    Preparing search index...

    Module rendering/node-factory/create-mesh-node

    Construct the THREE.Mesh for a Mesh node, with its shaded material.

    Three things here are mesh-specific rather than copies of the sibling factories, and each is named in docs/specs/MESH_NODE_SPEC.md:

    1. The default blending mode is opaque, not additive (§6.3) — and it is applied HERE, viewer-side, never stamped by the writer. A stamped blending_mode would override an ancestor's under the nearest-setter-wins rule, silently breaking group(blending_mode="additive") for its mesh children.
    2. volumetric degrades to opaque with a one-time warning (§6.3), again viewer-side and for the same reason: the mode can arrive by INHERITANCE from an ancestor the mesh knows nothing about at write time, so refusing the load would make an unrelated group setting break a valid mesh.
    3. The shading variant is decided here, once, and handed to both backends (§6.2). It is a compile-time shader variant because a declared-but-unbound normal attribute reads (0, 0, 0, 1) rather than "absent" — there is no runtime value meaning "no normals". Its shading half is view-independent; its normal_dims == displayDims half is not, so applyMeshShading re-applies the decision per epoch from the projection's storedNormalsUsable.
    resolveRequestedMeshMode
    applyMeshSide
    applyMeshShading
    applyMeshTexture
    resolveMeshShading
    createMeshMaterial
    createPhysicalMeshMaterial
    applyMeshVertexAlpha
    createEmptyMeshNode
    syncMeshPickAppearance