Skip to content

@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

Constructors

constructor

new SparseOctree(size): SparseOctree

Parameters

NameTypeDescription
sizeVoxelSizeThe bounding box dimensions of the voxel space.

Returns

SparseOctree

Defined in

octree.js:73

Properties

depth

depth: number = 0

Defined in

octree.js:68


maxDimension

maxDimension: number = 0

Defined in

octree.js:65


root

root: OctreeNode = null

Defined in

octree.js:59


size

size: VoxelSize = null

Defined in

octree.js:62

Methods

_calculatePath

_calculatePath(x, y, z): number[]

Helper method to calculate the octant path for a coordinate

Parameters

NameType
xnumber
ynumber
znumber

Returns

number[]

Array of octant indices representing the path from root to leaf

Defined in

octree.js:219


_compareLeafData

_compareLeafData(d1, d2): boolean

Compares two leaf data objects.

Parameters

NameType
d1Object
d1.colorIndexnumber
d1.materialId?number
d2Object
d2.colorIndexnumber
d2.materialId?number

Returns

boolean

Defined in

octree.js:509


_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

NameType
xnumber
ynumber
znumber
nodeCenterXnumber
nodeCenterYnumber
nodeCenterZnumber

Returns

number

Octant index (0-7)

Defined in

octree.js:98


_iterateNodeVoxels

_iterateNodeVoxels(node, currentX, currentY, currentZ, depth, callback): void

Recursive helper for iterateVoxels.

Parameters

NameTypeDescription
nodeOctreeNode
currentXnumberMinimum corner coordinate of the current node's bounds
currentYnumberMinimum corner coordinate of the current node's bounds
currentZnumberMinimum corner coordinate of the current node's bounds
depthnumberCurrent depth level (decreases as we go down)
callback(x: number, y: number, z: number, data: { colorIndex: number ; materialId?: number }) => void

Returns

void

Defined in

octree.js:361


_simplifyNode

_simplifyNode(node): boolean

Recursive helper for simplify.

Parameters

NameType
nodeOctreeNode

Returns

boolean

Whether all children have the same data

Defined in

octree.js:443


_traverseNode

_traverseNode(node, x, y, z, depth, sideLength, callback): void

Recursive helper for traverse.

Parameters

NameType
nodeOctreeNode
xnumber
ynumber
znumber
depthnumber
sideLengthnumber
callback(node: OctreeNode, x: number, y: number, z: number, depth: number, sideLength: number) => void

Returns

void

Defined in

octree.js:317


get

get(x, y, z): Object

Retrieves voxel data at the specified coordinates.

Parameters

NameType
xnumber
ynumber
znumber

Returns

Object

The data at the coordinates, or null if empty.

NameType
colorIndexnumber
materialId?number

Defined in

octree.js:252


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

octree.js:422


insert

insert(x, y, z, data): void

Inserts voxel data into the octree.

Parameters

NameTypeDescription
xnumber
ynumber
znumber
dataObjectData associated with the voxel (e.g., { colorIndex, materialId? }). Must not be null/empty.
data.colorIndexnumber-
data.materialId?number-

Returns

void

Defined in

octree.js:113


iterateVoxels

iterateVoxels(callback): void

Iterates through all non-empty leaf nodes (voxels) and calls a callback.

Parameters

NameType
callback(x: number, y: number, z: number, data: { colorIndex: number ; materialId?: number }) => void

Returns

void

Defined in

octree.js:348


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

octree.js:434


traverse

traverse(callback): void

Traverses the octree and calls a callback for each node.

Parameters

NameType
callback(node: OctreeNode, x: number, y: number, z: number, depth: number, sideLength: number) => void

Returns

void

Defined in

octree.js:295

Released under the MPL-2.0 License.