vanruesc / rabbit-hole

An experimental voxel engine.
zlib License
46 stars 10 forks source link
3d-graphics csg engine isosurface lod terrain volume voxel webgl

Rabbit Hole

CI Version Peer dependencies

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

Contributing

Please refer to the contribution guidelines for details.