Guest User

theee.js

a guest
Jul 26th, 2016
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.57 KB | None | 0 0
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title>learningthree.js boiler plate for three.js</title>
  5. <meta charset="utf-8">
  6. <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  7.  
  8.  
  9. <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.js"></script>
  10. <script src="http://netgfx.com/trunk/threejs/boilerplate/vendor/three.js/Detector.js"></script>
  11. <script src="http://netgfx.com/trunk/threejs/boilerplate/vendor/trackballcontrols.js"></script>
  12.  
  13.  
  14. <script src="http://netgfx.com/trunk/threejs/boilerplate/vendor/threex/THREEx.screenshot.js"></script>
  15. <script src="http://netgfx.com/trunk/threejs/boilerplate/vendor/threex/THREEx.FullScreen.js"></script>
  16. <script src="http://netgfx.com/trunk/threejs/boilerplate/vendor/threex/THREEx.WindowResize.js"></script>
  17. <script src="http://netgfx.com/trunk/threejs/boilerplate/vendor/threex.dragpancontrols.js"></script>
  18.  
  19. <script src="http://netgfx.com/trunk/threejs/boilerplate/js/TweenMax.js"></script>
  20. <script src="http://netgfx.com/trunk/threejs/boilerplate/js/jquery-1.8.3.min.js"></script>
  21.  
  22.  
  23. <link href="http://netgfx.com/trunk/threejs/boilerplate/css/main.css" rel="stylesheet"/>
  24. </head>
  25. <body>
  26. <!-- three.js container -->
  27. <div id="container"></div>
  28. <!-- info on screen display -->
  29. <div id="info">
  30. <div class="top">
  31.  
  32. <div class="buttons" id="left"><< Left</div>
  33. <div class="buttons" id="right"> Right >> </div>
  34. <div class="buttons" id="in">Zoom-In +</div>
  35. <div class="buttons" id="out">Zoom-Out -</div>
  36.  
  37.  
  38. </div>
  39. <div class="bottom" id="inlineDoc" >
  40. - <i>p</i> for screenshot
  41. </div>
  42. </div>
  43.  
  44. <script type="text/javascript">
  45. var scene, renderer;
  46. var camera, cameraControls, cameraControl;
  47. var items = new Array();
  48. var autoRotate = false;
  49.  
  50. if( !init() ) animate();
  51.  
  52. // init the scene
  53. function init(){
  54.  
  55. if( Detector.webgl ){
  56. renderer = new THREE.WebGLRenderer({
  57. antialias : true, // to get smoother output
  58. preserveDrawingBuffer : true, // to allow screenshot
  59. alpha: true
  60. });
  61. renderer.setClearColor( 0x000000,1 );
  62. // uncomment if webgl is required
  63. //}else{
  64. // Detector.addGetWebGLMessage();
  65. // return true;
  66. }else{
  67. renderer = new THREE.CanvasRenderer();
  68. }
  69. renderer.setSize( window.innerWidth, window.innerHeight );
  70. document.getElementById('container').appendChild(renderer.domElement);
  71.  
  72.  
  73.  
  74. // create a scene
  75. scene = new THREE.Scene();
  76.  
  77. // put a camera in the scene
  78. camera = new THREE.PerspectiveCamera(110, window.innerWidth / window.innerHeight, 1, 10000);
  79. camera.position.z = 350;
  80. camera.position.y = 0;
  81. camera.position.x = 0;
  82. camera.setViewOffset(window.innerWidth,window.innerHeight,0,-100,window.innerWidth,window.innerHeight);
  83. scene.add(camera);
  84. camera.lookAt(scene.position);
  85.  
  86. // LIGHT
  87. var light = new THREE.AmbientLight(0xffaa00);
  88. light.position.set(0,0,0);
  89. scene.add(light);
  90.  
  91. // create a camera contol
  92. cameraControls = new THREE.TrackballControls( camera );
  93. cameraControls.rotateSpeed = 1.0;
  94. cameraControls.zoomSpeed = 1.2;
  95. cameraControls.panSpeed = 0.8;
  96. cameraControls.noZoom = false;
  97. cameraControls.noPan = false;
  98. cameraControls.staticMoving = true;
  99. cameraControls.dynamicDampingFactor = 0.3;
  100. cameraControls.keys = [ 65, 83, 68 ];
  101.  
  102. window.console.log(cameraControls);
  103. cameraControls.domElement.addEventListener( 'change', render );
  104.  
  105. // transparently support window resize
  106. THREEx.WindowResize.bind(renderer, camera);
  107. // allow 'p' to make screenshot
  108. THREEx.Screenshot.bindKey(renderer);
  109. // allow 'f' to go fullscreen where this feature is supported
  110. if( THREEx.FullScreen.available() ){
  111. THREEx.FullScreen.bindKey();
  112. document.getElementById('inlineDoc').innerHTML += "- <i>f</i> for fullscreen";
  113. }
  114.  
  115. var light = new THREE.PointLight(0xffffff);
  116. light.position.set(0,0,0);
  117. scene.add(light);
  118.  
  119.  
  120.  
  121. // create a small sphere to show position of light
  122. var Geometry = new THREE.PlaneGeometry(1000, 1000);
  123. var Material = new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'assets/images/world-map.jpg' ), overdraw: true } );
  124.  
  125.  
  126. var lightbulb = new THREE.Mesh(Geometry, Material );
  127.  
  128.  
  129. scene.add( lightbulb );
  130. lightbulb.position = light.position;
  131.  
  132.  
  133.  
  134. TweenMax.to(camera,8,{fov:85,onUpdate:function(){
  135. camera.updateProjectionMatrix();
  136. }});
  137.  
  138. ///////// EVENT LISTENERS ////////////////
  139.  
  140. /// CAMERA CONTROL /////
  141.  
  142. $("#left").live('click',function(){
  143. var theta = 0.1;
  144. var x = camera.position.x;
  145. var z = camera.position.z;
  146.  
  147. var moveX = x * Math.cos(theta) + z * Math.sin(theta);
  148. var moveZ = z * Math.cos(theta) - x * Math.sin(theta);
  149.  
  150.  
  151. });
  152.  
  153. $("#right").live('click',function(){
  154. var theta = 0.1;
  155. var x = camera.position.x;
  156. var z = camera.position.z;
  157.  
  158. var moveX = x * Math.cos(theta) - z * Math.sin(theta);
  159. var moveZ = z * Math.cos(theta) + x * Math.sin(theta);
  160.  
  161. TweenMax.to(camera.position,0.5,{x:moveX,z:moveZ,onUpdate:function(){
  162. camera.updateProjectionMatrix();
  163. camera.lookAt(scene.position);
  164. }});
  165. });
  166.  
  167. $("#in").live('click',function(){
  168. TweenMax.to(camera,0.5,{fov:"-=5",onUpdate:function(){
  169. camera.updateProjectionMatrix();
  170. }});
  171. });
  172.  
  173. $("#out").live('click',function(){
  174. TweenMax.to(camera,0.5,{fov:"+=5",onUpdate:function(){
  175. camera.updateProjectionMatrix();
  176. }});
  177. });
  178.  
  179. $("#reset").live('click',function(){
  180. TweenMax.to(camera,0.2,{fov:85,onUpdate:function(){
  181. autoRotate = false;
  182. camera.position.x = 0;
  183. camera.position.z = 50;
  184. camera.lookAt(scene.position);
  185. camera.updateProjectionMatrix();
  186. }});
  187.  
  188. });
  189.  
  190. $("#rotate").live('click',function(){
  191.  
  192. autoRotate = true;
  193.  
  194. });
  195.  
  196. }
  197.  
  198. // animation loop
  199. function animate() {
  200.  
  201. if(autoRotate == true){
  202.  
  203. _autoRotate();
  204. }
  205. camera.updateProjectionMatrix();
  206.  
  207. requestAnimationFrame( animate );
  208.  
  209. // do the render
  210. render();
  211.  
  212.  
  213. }
  214.  
  215. // render the scene
  216. function render() {
  217. // update camera controls
  218. cameraControls.update();
  219.  
  220. // actually render the scene
  221. renderer.render( scene, camera );
  222. }
  223.  
  224. var radius = 300;
  225. var theta = 0;
  226. function _autoRotate(){
  227.  
  228. //theta = 0.01 //the speed of rotation
  229.  
  230. // rotate camera
  231.  
  232. theta += 0.1;
  233.  
  234. //camera.position.x = radius * Math.sin( degToRad( theta ) );
  235. //camera.position.y = radius * Math.sin( degToRad( theta ) );
  236. //camera.position.z = radius * Math.cos( degToRad( theta ) );
  237. //camera.lookAt( scene.position );
  238.  
  239. for(var i =0;i<items.length;i++){
  240. items[i].rotation.y -= 0.005;
  241. items[i].children[0].rotation.y -= 0.005;
  242. //items[i].position.x = radius * Math.sin( degToRad( theta ) );
  243. }
  244.  
  245. camera.updateMatrixWorld();
  246. /*var x = camera.position.x;
  247. var z = camera.position.z;
  248.  
  249. camera.position.x = x * Math.cos(theta) + z * Math.sin(theta);
  250. camera.position.z = z * Math.cos(theta) - x * Math.sin(theta);
  251. camera.lookAt(scene.position);*/
  252. }
  253.  
  254. function degToRad(degrees){
  255. return degrees * (Math.PI / 180);
  256. }
  257.  
  258. function hoverOver(event){
  259. console.log('hovered');
  260. }
  261.  
  262. function overlook(input){
  263.  
  264.  
  265. console.log(items[2].rotation);
  266. camera.updateMatrixWorld();
  267.  
  268. render();
  269. }
  270.  
  271. </script>
  272. </body>
  273. </html>
Add Comment
Please, Sign In to add comment