Package Exports
- sparse-octree
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sparse-octree) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Sparse Octree
A sparse octree data structure for three.js. Sparse octrees can have empty nodes. Nodes that aren't empty can either have children themselves or they can be leaf nodes that contain point data.
This octree doesn't support moving objects and its focus lies on managing point data. Support for triangles and dynamic updates is planned, but has low priority.
Preface
This module uses modern ECMAScript features and requires one of the following browsers:
- Chrome ≥ 42
- Firefox ≥ 45
- IE Edge ≥ 13
Semantic versioning is used in this module to indicate whether an update introduces breaking changes. However, backwards-compatibility regarding ECMAScript versions is entirely neglected in favor of cleaner code and development convenience.
Installation
$ npm install sparse-octree
Usage
// Attention: Three is not yet an ES6 module!
import {
WebGLRenderer, Scene, PerspectiveCamera,
Points, PointsMaterial, BoxBufferGeometry, Box3
} from "three";
import { Octree, OctreeHelper } from "sparse-octree";
let renderer = new WebGLRenderer();
let scene = new Scene();
let camera = new PerspectiveCamera();
scene.add(camera);
let points = new Points(new TorusKnotBufferGeometry(1, 1, 64, 64), new PointsMaterial({
color: 0xffffff, size: 1, sizeAttenuation: false
}));
scene.add(points);
let bbox = new THREE.Box3();
bbox.setFromObject(scene);
let octree = new Octree(bbox.min, bbox.max, 0.0, 8, 8);
octree.addPoints(points.geometry.getAttribute("position").array, points);
scene.add(new OctreeHelper(octree));
(function render(now) {
requestAnimationFrame(render);
renderer.render(scene, camera);
}());
Demo
Documentation
Contributing
Maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.