Rabbit Hole
An experimental voxel engine for WebGL. This software has been created in the context of a Master's degree project at the University of Applied Sciences Brandenburg in cooperation with the Norwegian University of Technology and Science.
:warning: While many core features are already implemented, this project is still incomplete. :warning:
Demo · Documentation · Master's Thesis (2016) · Electronic Imaging Paper (2018)
Installation
This library requires the peer dependency three.
npm install three rabbit-hole
Usage
The following example uses the rendering framework three.
Please refer to the usage example of three
for information
on how to setup the renderer, scene and camera.
Basics
import { Terrain } from "rabbit-hole";
const terrain = new Terrain();
scene.add(terrain);
requestAnimationFrame(function render() {
requestAnimationFrame(render);
terrain.update(camera);
renderer.render(scene, camera);
});
Constructive Solid Geometry
import { SuperPrimitive, SuperPrimitivePreset } from "rabbit-hole";
const a = SuperPrimitive.create(SuperPrimitivePreset.SPHERE);
const b = SuperPrimitive.create(SuperPrimitivePreset.TORUS);
const c = SuperPrimitive.create(SuperPrimitivePreset.CUBE);
terrain.union(a);
terrain.subtract(b.intersect(c).subtract(a));
terrain.intersect(c.subtract(a.union(b)));
Features
- Multithreading
- Level of Detail
- Real-time volume construction and destruction
Contributing
Please refer to the contribution guidelines for details.