/rabbit-hole

An experimental voxel engine.

Primary LanguageJavaScriptzlib LicenseZlib

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.

⚠️ While many core features are already implemented, this project is still incomplete. ⚠️

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.