@divnotes/dn-voxel-loader - v0.1.10 / dn-voxel-loader/octree / SparseOctree
Class: SparseOctree
dn-voxel-loader/octree.SparseOctree
Simple Sparse Octree implementation for storing voxel data. Assumes coordinates are non-negative integers.
Table of contents
Constructors
Properties
Methods
- _calculatePath
- _compareLeafData
- _getOctant
- _iterateNodeVoxels
- _simplifyNode
- _traverseNode
- get
- getAllVoxels
- insert
- iterateVoxels
- simplify
- traverse
Constructors
constructor
• new SparseOctree(size
): SparseOctree
Parameters
Name | Type | Description |
---|---|---|
size | VoxelSize | The bounding box dimensions of the voxel space. |
Returns
Defined in
Properties
depth
• depth: number
= 0
Defined in
maxDimension
• maxDimension: number
= 0
Defined in
root
• root: OctreeNode
= null
Defined in
size
• size: VoxelSize
= null
Defined in
Methods
_calculatePath
▸ _calculatePath(x
, y
, z
): number
[]
Helper method to calculate the octant path for a coordinate
Parameters
Name | Type |
---|---|
x | number |
y | number |
z | number |
Returns
number
[]
Array of octant indices representing the path from root to leaf
Defined in
_compareLeafData
▸ _compareLeafData(d1
, d2
): boolean
Compares two leaf data objects.
Parameters
Name | Type |
---|---|
d1 | Object |
d1.colorIndex | number |
d1.materialId? | number |
d2 | Object |
d2.colorIndex | number |
d2.materialId? | number |
Returns
boolean
Defined in
_getOctant
▸ _getOctant(x
, y
, z
, nodeCenterX
, nodeCenterY
, nodeCenterZ
): number
Gets the octant index (0-7) for a given point within a node's bounds.
Parameters
Name | Type |
---|---|
x | number |
y | number |
z | number |
nodeCenterX | number |
nodeCenterY | number |
nodeCenterZ | number |
Returns
number
Octant index (0-7)
Defined in
_iterateNodeVoxels
▸ _iterateNodeVoxels(node
, currentX
, currentY
, currentZ
, depth
, callback
): void
Recursive helper for iterateVoxels.
Parameters
Name | Type | Description |
---|---|---|
node | OctreeNode | |
currentX | number | Minimum corner coordinate of the current node's bounds |
currentY | number | Minimum corner coordinate of the current node's bounds |
currentZ | number | Minimum corner coordinate of the current node's bounds |
depth | number | Current depth level (decreases as we go down) |
callback | (x : number , y : number , z : number , data : { colorIndex : number ; materialId? : number }) => void |
Returns
void
Defined in
_simplifyNode
▸ _simplifyNode(node
): boolean
Recursive helper for simplify.
Parameters
Name | Type |
---|---|
node | OctreeNode |
Returns
boolean
Whether all children have the same data
Defined in
_traverseNode
▸ _traverseNode(node
, x
, y
, z
, depth
, sideLength
, callback
): void
Recursive helper for traverse.
Parameters
Name | Type |
---|---|
node | OctreeNode |
x | number |
y | number |
z | number |
depth | number |
sideLength | number |
callback | (node : OctreeNode , x : number , y : number , z : number , depth : number , sideLength : number ) => void |
Returns
void
Defined in
get
▸ get(x
, y
, z
): Object
Retrieves voxel data at the specified coordinates.
Parameters
Name | Type |
---|---|
x | number |
y | number |
z | number |
Returns
Object
The data at the coordinates, or null if empty.
Name | Type |
---|---|
colorIndex | number |
materialId? | number |
Defined in
getAllVoxels
▸ getAllVoxels(): Voxel
[]
Returns an array of all non-empty voxels in the octree. Note: This can be memory-intensive for large models. Prefer using iterateVoxels.
Returns
Voxel
[]
Array of voxels with their coordinates and data
Defined in
insert
▸ insert(x
, y
, z
, data
): void
Inserts voxel data into the octree.
Parameters
Name | Type | Description |
---|---|---|
x | number | |
y | number | |
z | number | |
data | Object | Data associated with the voxel (e.g., { colorIndex, materialId? }). Must not be null/empty. |
data.colorIndex | number | - |
data.materialId? | number | - |
Returns
void
Defined in
iterateVoxels
▸ iterateVoxels(callback
): void
Iterates through all non-empty leaf nodes (voxels) and calls a callback.
Parameters
Name | Type |
---|---|
callback | (x : number , y : number , z : number , data : { colorIndex : number ; materialId? : number }) => void |
Returns
void
Defined in
simplify
▸ simplify(): void
Simplifies the octree by merging nodes with the same data. Call this after all voxels have been inserted to optimize the tree.
Returns
void
Defined in
traverse
▸ traverse(callback
): void
Traverses the octree and calls a callback for each node.
Parameters
Name | Type |
---|---|
callback | (node : OctreeNode , x : number , y : number , z : number , depth : number , sideLength : number ) => void |
Returns
void