A sparse octree data structure.
Extensive Demo ∴ API Reference
npm install sparse-octree
import { Octree, CubicOctant } from "sparse-octree";
export class CubicOctree extends Octree {
constructor(min, size) {
this.root = new CubicOctant(min, size);
}
}
import { Scene } from "three";
import { Octree, OctreeHelper } from "sparse-octree";
const scene = new Scene();
const octree = new Octree();
const octreeHelper = new OctreeHelper(octree);
scene.add(octreeHelper);
import { Vector3 } from "three";
import { PointOctree } from "sparse-octree";
const min = new Vector3(-1, -1, -1);
const max = new Vector3(1, 1, 1);
const octree = new PointOctree(min, max);
octree.add(new Vector3(0, 0, 0), {});
octree.fetch(new Vector3(0, 0, 0)); // => {}
A full point octree example can be found here.
- Base Functionality
- Pointer-based structure
- Handles octant splitting
- Adheres to a common octant layout
- Supports raycasting
- Supports culling
- Supports cubic octrees
- Can be extended to manage any data
- Provides a point management implementation
- Provides a helper that can visualise octrees
Maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.