UNPKG

threex

Version:

Game Extensions for three.js http://www.threejsgames.com/extensions/

144 lines (118 loc) 4.42 kB
<!doctype html> <html> <head> <title>learningthree.js boiler plate for three.js</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> <script src="vendor/three.js/Three.js"></script> <script src="vendor/three.js/Detector.js"></script> <!-- https://github.com/mrdoob/stats.js --> <script src="vendor/three.js/Stats.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script> <script src="vendor/threex/THREEx.screenshot.js"></script> <script src="vendor/threex/THREEx.FullScreen.js"></script> <script src="vendor/threex/THREEx.WindowResize.js"></script> <script src="vendor/threex.dragpancontrols.js"></script> <script src="THREE.plugins.js"></script> <script> // note: this may/should be done inside three.js THREE.Plugins.mixin(THREE.Geometry); </script> <script src="three.geometry.toolbox.js"></script> <link href="css/main.css" rel="stylesheet"/> </head> <body> <!-- three.js container --> <div id="container"></div> <!-- info on screen display --> <div id="info"> <div class="top"> <a href="http://learningthreejs.com/blog/2011/12/20/boilerplate-for-three-js/" target="_blank">LearningThree.js</a> boiler plate for <a href="https://github.com/mrdoob/three.js/" target="_blank">three.js</a> </div> <div class="bottom" id="inlineDoc" > - <i>p</i> for screenshot </div> </div> <script type="text/javascript"> var stats, scene, renderer; var camera, cameraControl; if( !init() ) animate(); // init the scene function init(){ if( Detector.webgl ){ renderer = new THREE.WebGLRenderer({ antialias : true, // to get smoother output preserveDrawingBuffer : true // to allow screenshot }); renderer.setClearColorHex( 0xBBBBBB, 1 ); // uncomment if webgl is required //}else{ // Detector.addGetWebGLMessage(); // return true; }else{ renderer = new THREE.CanvasRenderer(); } renderer.setSize( window.innerWidth, window.innerHeight ); document.getElementById('container').appendChild(renderer.domElement); // add Stats.js - https://github.com/mrdoob/stats.js stats = new Stats(); stats.domElement.style.position = 'absolute'; stats.domElement.style.bottom = '0px'; document.body.appendChild( stats.domElement ); // create a scene scene = new THREE.Scene(); // put a camera in the scene camera = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, 1, 10000 ); camera.position.set(0, 0, 5); scene.add(camera); // create a camera contol cameraControls = new THREEx.DragPanControls(camera) // transparently support window resize THREEx.WindowResize.bind(renderer, camera); // allow 'p' to make screenshot THREEx.Screenshot.bindKey(renderer); // allow 'f' to go fullscreen where this feature is supported if( THREEx.FullScreen.available() ){ THREEx.FullScreen.bindKey(); document.getElementById('inlineDoc').innerHTML += "- <i>f</i> for fullscreen"; } // here you add your objects // - you will most likely replace this part by your own var geometry = new THREE.TorusGeometry( 0.5-0.15, 0.15 ); geometry.dynamic= true; // TODO should have be done here ? var material = new THREE.MeshNormalMaterial(); var mesh = new THREE.Mesh( geometry, material ); //mesh.name = "superobj"; scene.add( mesh ); var geometry = new THREE.CubeGeometry( 1, 1, 1 ); geometry.dynamic= true; // TODO should have be done here ? var material = new THREE.MeshNormalMaterial(); var mesh = new THREE.Mesh( geometry, material ); mesh.position.x = 2; scene.add( mesh ); // using the plugins geometry.center().normalize().scale(3).rotate(Math.PI/3, 0, 0).translate(-2,0,0); } // animation loop function animate() { // loop on request animation loop // - it has to be at the begining of the function // - see details at http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating requestAnimationFrame( animate ); // do the render render(); // update stats stats.update(); } // render the scene function render() { // update camera controls cameraControls.update(); // actually render the scene renderer.render( scene, camera ); } </script> </body> </html>