Pure THREE.JS template
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r73/three.js"></script>
<script src="https://dl.dropboxusercontent.com/u/3587259/Code/Threejs/OrbitControls.js">
</script>
JavaScript
var scene, renderer, camera, controls;
init();
animate();
var plane, mesh;
function init()
{
// https://github.com/mrdoob/three.js/issues/1752#issuecomment-5454286
THREE.Object3D.prototype.lookAtWorld = function( vector ) {
this.parent.worldToLocal( vector );
this.lookAt( vector );
}
basicScene();
mesh = new THREE.Mesh( new THREE.BoxGeometry(5, 5, 5 ) );
mesh.position.set( 10, 1, 8 );
mesh.material.wireframe = true;
scene.add( mesh );
var geo = new THREE.PlaneGeometry( 10, 10 );
plane = new THREE.Mesh( geo );
mesh.add( plane );
}
function basicScene() {
var width = window.innerWidth;
var height = window.innerHeight;
renderer = new THREE.WebGLRenderer( {antialias:true} );
renderer.setSize (width, height);
document.body.appendChild (renderer.domElement);
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera (60, width/height, 0.01, 10000);
camera.position.y = 16;
camera.position.z = 40;
camera.lookAt (new THREE.Vector3(0,0,0));
controls = new THREE.OrbitControls (camera, renderer.domElement);
var gridXZ = new THREE.GridHelper(100, 10);
gridXZ.setColors( new THREE.Color(0xff0000), new THREE.Color(0xffffff) );
scene.add(gridXZ);
}
function animate()
{
mesh.rotation.y += 0.01;
// does not work
//plane.lookAt( camera.getWorldPosition() );
plane.lookAtWorld( camera.getWorldPosition() );
// alternative
//var v = plane.parent.worldToLocal( camera.getWorldPosition() );
//plane.lookAt( v );
requestAnimationFrame ( animate );
renderer.render (scene, camera);
}