UNPKG

threex

Version:

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

141 lines (114 loc) 4.09 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="../../THREEx.screenshot.js"> </script> <script src="../../threex.fullscreen.js"> </script> <script src="../../threex.windowresize.js"> </script> <script src="vendor/threex.dragpancontrols.js"> </script> <script src="../../threex.preloader.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 ); }else{ Detector.addGetWebGLMessage(); return true; } 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 light = new THREE.AmbientLight( 0xffffff ); scene.add( light ); var light = new THREE.DirectionalLight( 0xffffff ); light.position.set( 1, 1, 1 ).normalize(); scene.add( light ); var preload = new THREEx.Preloader(); preload.texture('images/moon_1024.jpg', 'moon') preload.bind('complete', function(){ var geometry = new THREE.CubeGeometry( 1, 1, 1 ); var material = new THREE.MeshPhongMaterial({ ambient : 0x400040, color : 0xff00ff, shading : THREE.SmoothShading, map : preload.cache().get('moon') }); var mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); }); preload.start(); } // 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>