OptionalaabbAxis-aligned, non-quantized 3D boundary of the geometry's vertex positions.
Optional ReadonlycolorsVertex RGBA colors, quantized as 8-bit integers.
True if this SceneGeometry has been destroyed.
Optional ReadonlyedgeEdge indices.
This is either an array of 8-bit, 16-bit or 32-bit values.
Optional ReadonlyframesComplete fixed-topology geometry frames, each carrying replacement
positions and optional normals. These are complete vertex states, not
deltas from the base geometry. The first frame can act as the geometry's
current/base positions when the geometry was authored without top-level
positions.
Renderers treat frames as immutable geometry-owned data. Meshes select an interpolation time through SceneMesh.frameTime; changing that time updates per-mesh animation state, not the shared geometry payload.
ReadonlyidID for the geometry.
Bitmask describing the most recent fixed-count dynamic update. Renderers use this during SceneEvents.onSceneGeometryUpdated to choose a narrow in-place upload path when possible.
ReadonlymodelThe SceneModel that contains this SceneGeometry.
Optional ReadonlymorphWeighted morph target deltas relative to this geometry's base attributes.
The count of SceneMeshes that reference this SceneGeometry.
ReadonlyprimitivePrimitive type.
Possible values are SolidPrimitive, SurfacePrimitive, LinesPrimitive, PointsPrimitive and TrianglesPrimitive.
Optional ReadonlyrotationsPer-splat rotation quaternions — 4 floats per splat, xyzw. Only present for
GaussianSplatsPrimitive geometry.
Optional ReadonlyscalesPer-splat scales — 3 floats per splat. Only present for GaussianSplatsPrimitive geometry.
Optional ReadonlytexIndexed texture-coordinate channels, packed as 32-bit floats.
Channel 0 is equivalent to SceneGeometry.uvsCompressed.
ReadonlyuniqueThe global ID of this SceneGeometry, unique among all SceneGeometrys within the Scene, which is the concatenation of the SceneModel's ID and this SceneGeometry's ID, separated by "__".
Optional ReadonlyuvsUV coordinates, packed as 32-bit floats (one Float32Array of
length 2 × vertexCount). UVs ship to the GPU uncompressed so
tiling values (UVs outside [0, 1]) survive intact — the shader
applies a per-fragment fract() before transforming into the
mesh's atlas sub-rect.
Optional Readonlyuvs4x4 matrix to de-quantize the geometry's UV coordinates, when UVs are provided.
Monotonically increases each time fixed-count dynamic geometry data is replaced through SceneGeometry.positionsCompressed or SceneGeometry.indices or SceneGeometry.normalsCompressed.
Optional ReadonlyvertexComplete untimed fixed-topology replacement vertex states.
Primitive indices.
This is either an array of 8-bit, 16-bit or 32-bit values.
Gets or sets primitive connectivity indices.
Assigning this property is a fixed-topology dynamic update. The replacement
array must have the same number of indices as the existing array and the
parent SceneModel must use updateMode: "dynamic". On success
xeokit stores a narrowed copy when possible, bumps
SceneGeometry.version and dispatches
SceneEvents.onSceneGeometryUpdated; renderers can then refresh
their DTX/VBO/WebGPU buffers and picking structures from the new
connectivity.
This does not regenerate normals or edge indices. Use flat derivative-based shading and omit edge indices for fully dynamic topology, or recreate geometry when topology-derived attributes need to change.
Vertex normals, octahedral-encoded as pairs of 16-bit unsigned integers.
When defined, the renderer reads these per-vertex and uses them for smooth shading; when undefined, fragments derive a flat face normal from view-space position derivatives.
Gets or sets octahedral-encoded vertex normals.
Assigning this property is a fixed-count dynamic update. The replacement
array must have the same length as the existing normal array and the parent
SceneModel must use updateMode: "dynamic". On success xeokit
bumps SceneGeometry.version and dispatches
SceneEvents.onSceneGeometryUpdated; renderers can then refresh
their normal buffers or textures without rebuilding the mesh.
This does not recalculate normals from positions or indices. Fluid and surface simulations that need smooth dynamic lighting should update this alongside SceneGeometry.positionsCompressed.
Gets or sets 3D vertex positions, quantized as 16-bit integers.
Assigning this property is a fixed-topology dynamic update. The new array
must have the same length as the original positions array and the parent
SceneModel must use updateMode: "dynamic". On success xeokit
bumps SceneGeometry.version and dispatches
SceneEvents.onSceneGeometryUpdated; renderers and BVH-backed
picking can then refresh their buffers from the new compressed positions.
The geometry AABB is not changed by this setter. Quantize replacement positions against the existing SceneGeometry.aabb; recreate the geometry when the dynamic range or topology needs to change.
This does not regenerate normals or edge indices. Use geometries without explicit normals for flat derivative-based shading, or recreate geometry when topology-derived attributes need to change.
Destroys this SceneGeometry.
Gets this SceneGeometry as SceneGeometryCompressedParams.
A geometry in a SceneModel.
See !scene | @xeokit/sdk/model/scene for usage.