Skip to content

Instantly share code, notes, and snippets.

@chandlerprall
Created December 16, 2011 05:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chandlerprall/1484622 to your computer and use it in GitHub Desktop.
Save chandlerprall/1484622 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="csg.js"></script>
<script type="text/javascript" src="http://chandler.prallfamily.com/threebuilds/builds/r46/ThreeDebug.js"></script>
<script type="text/javascript" src="ThreeBSP.js"></script>
<script type="text/javascript">
var renderer, scene, camera;
window.onload = function() {
renderer = new THREE.WebGLRenderer({antialias: false});
renderer.setSize(800, 640);
document.getElementById('viewport').appendChild(renderer.domElement);
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(
35,
800 / 640,
1,
10000
);
camera.position.set(10, 10, 10);
camera.lookAt(scene.position);
scene.add(camera);
setInterval( function() { renderer.render(scene, camera) }, 100 );
var cube = new THREE.CubeGeometry(4, 4, 4);
var cube_bsp = new THREE.BSPTree.Node( cube );
var sphere = new THREE.SphereGeometry(3, 16, 16);
var sphere_bsp = new THREE.BSPTree.Node( sphere, {offset: {x: 1, y:2, z: 1}} );
console.time('operation');
var union = cube_bsp.subtract( sphere_bsp );
console.timeEnd('operation');
console.time('mesh');
var mesh = new THREE.Mesh( union.toGeometry(), new THREE.MeshNormalMaterial );
console.timeEnd('mesh');
mesh.geometry.computeFaceNormals(); // highly recommended...
scene.add(mesh);
}
</script>
</head>
<body>
<div id="viewport"></div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment