/rabbit-hole

A volumetric terrain engine.

Primary LanguageJavaScriptzlib LicenseZlib

Rabbit Hole

Build status NPM version Dependencies

A volumetric terrain engine for WebGL. This engine 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.

Extensive DemoPerformanceVolume EditorAPI ReferenceMaster's Thesis

Installation

npm install rabbit-hole

Usage

Please refer to the usage example of three.js for information about how to setup the renderer, scene and camera.

Basics
import { Terrain } from "rabbit-hole";

const terrain = new Terrain();
scene.add(terrain.object);

(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.