jhylands

Untitled

Jul 9th, 2013
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.46 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Introduction to Computer Graphics</title>
  5. <script src="js/three.js"></script>
  6. <script src="js/THREEx.KeyboardState.js"></script>
  7. <script>
  8. /**
  9. * This sample demonstrates how to use Three.js to create a simple, interactive graphical scene.
  10. * Some of the code has been adapted from the Three.js documentation and from Lee Stemkoski's Three.js "tutorials by example".
  11. */
  12. function UpdatePosition(asteroid){
  13. asteroid.myMesh.position.x+=asteroid.velocity.x;
  14. asteroid.myMesh.position.y+=asteroid.velocity.y;
  15. asteroid.myMesh.position.z+=asteroid.velocity.z;
  16. }
  17. function BounceBox(asteroid){
  18. if(asteroid.myMesh.position.x>6 || asteroid.myMesh.position.x<-6){
  19. asteroid.velocity.x=asteroid.velocity.x*-1;
  20. }
  21. if(asteroid.myMesh.position.y>4 || asteroid.myMesh.position.y<-4){
  22. asteroid.velocity.y=asteroid.velocity.y*-1;
  23. }
  24. if(asteroid.myMesh.position.z>-16 || asteroid.myMesh.position.z<-40){
  25. asteroid.velocity.z=asteroid.velocity.z*-1;
  26. }
  27. }
  28. function Collision(position1,position2,r){
  29. //calculate the distancew the objects are appart and compare it to the distance their surfaces would be appart if they were only just touching
  30. if((((positiopn1.x-position2.x)^2+(position1.y-position2.y)^2+(position1.z-position2.z)^2)^0.5) <= r){
  31. return true;
  32. }else{
  33. return false;
  34. }
  35. }
  36. window.onload = function() {
  37. //define world
  38. var renderer = new THREE.WebGLRenderer();
  39. renderer.setSize( window.innerWidth-10, window.innerHeight);
  40. document.body.appendChild( renderer.domElement );
  41. var scene = new THREE.Scene();
  42. //setup camera
  43. var camera = new THREE.PerspectiveCamera(
  44. 35, // Field of view
  45. 800 / 600, // Aspect ratio
  46. 0.1, // Near plane
  47. 10000 // Far plane
  48. );
  49. camera.position.set( 0, 0, 5 );
  50. camera.lookAt( scene.position );
  51. var keyboard = new THREEx.KeyboardState();
  52. renderer.setClearColorHex( 0x000000, 1 );
  53. //setup lighting conditions
  54. var light = new THREE.PointLight( 0xFFFFFF );
  55. light.position.set( 0, 0, 0 );
  56. scene.add(light);
  57. var light1 = new THREE.PointLight( 0xFFFFFF );
  58. light1.position.set( 0, 0, -49 );
  59. scene.add(light1);
  60. var light2 = new THREE.PointLight( 0xFFFFFF );
  61. light2.position.set( 0, 0, 49 );
  62. scene.add(light2);
  63. //render backimages
  64. //milky way
  65. var MwayGeometry = new THREE.PlaneGeometry(35,25,1,1);
  66. var MwayTexture = new THREE.ImageUtils.loadTexture( 'images/milkyway.jpg' );
  67. var MwayMaterial = new THREE.MeshLambertMaterial( { map:MwayTexture } );
  68. myMway = new THREE.Mesh( MwayGeometry,MwayMaterial );
  69. myMway.position.set(0,0,-50);
  70. scene.add(myMway);
  71. //asteroid
  72. var asteroid = new Object();
  73. asteroid.velocity = new Object();
  74. asteroid.velocity.x =0.1;
  75. asteroid.velocity.y =0.1;
  76. asteroid.velocity.z =0.1;
  77. var sphereGeometry = new THREE.IcosahedronGeometry(1,-2);
  78. var sphereMaterial = new THREE.MeshLambertMaterial( { color: 0xFF0000 } );
  79. var crateTexture = new THREE.ImageUtils.loadTexture( 'images/crate.gif' );
  80. var cubeMaterial = new THREE.MeshLambertMaterial( { map:crateTexture } );
  81. asteroid.myMesh = new THREE.Mesh( sphereGeometry,cubeMaterial );
  82. asteroid.myMesh.position.set(-1,1,-20);
  83. scene.add(asteroid.myMesh);
  84. //make spacecraft
  85. var cubeGeometry = new THREE.CubeGeometry(1,1,1);
  86. var myObject = new THREE.Mesh( cubeGeometry,cubeMaterial );
  87. myObject.position.set(0,0,-5);
  88.  
  89. scene.add(myObject);
  90. function update() {
  91. //move asteroids
  92. asteroid.myMesh.rotation.x+= 0.05;
  93. asteroid.myMesh.rotation.y+= 0.05;
  94. asteroid.myMesh.rotation.z+= 0.05;
  95. //move the asteroid about
  96. UpdatePosition(asteroid);
  97. BounceBox(asteroid);
  98. //move spacecraft
  99. //MOVEMENT CONTROLLS
  100. if(keyboard.pressed("left")){
  101. myObject.position.y+=0.1;
  102. }else if(keyboard.pressed("right")){
  103. myObject.position.y-=0.1;
  104. }else if(keyboard.pressed("G")){
  105. myObject.position.x-=0.1;
  106. }else if(keyboard.pressed("J")){
  107. myObject.position.x+=0.1;
  108. }else if(keyboard.pressed("T")){
  109. myObject.position.z-=0.1;
  110. }else if(keyboard.pressed("U")){
  111. myObject.position.z+=0.1;
  112. }
  113. //ROTATION CONTROLLS
  114. if(keyboard.pressed("W")){
  115. myObject.rotation.x+=0.05;
  116. }else if(keyboard.pressed("S")){
  117. myObject.rotation.x-=0.05;
  118. }else if(keyboard.pressed("A")){
  119. myObject.rotation.y-=0.05;
  120. }else if(keyboard.pressed("D")){
  121. myObject.rotation.y+=0.05;
  122. }else if(keyboard.pressed("Q")){
  123. myObject.rotation.z-=0.05;
  124. }else if(keyboard.pressed("E")){
  125. myObject.rotation.z+=0.05;
  126. }
  127. //CAMERA MOVEMENT
  128. if(keyboard.pressed("up")){
  129. camera.position.y+=0.1;
  130. }else if(keyboard.pressed("down")){
  131. camera.position.y-=0.1;
  132. }else if(keyboard.pressed("left")){
  133. camera.position.x-=0.1;
  134. }else if(keyboard.pressed("right")){
  135. camera.position.x+=0.1;
  136. }else if(keyboard.pressed("Z")){
  137. camera.position.z-=0.1;
  138. }else if(keyboard.pressed("X")){
  139. camera.position.z+=0.1;
  140. }
  141. camera.lookAt( myObject.position);
  142. }
  143.  
  144. //Render Loop
  145. function render() {
  146. //Call the update function
  147. update();
  148. //Re-draw the scene
  149. renderer.render(scene, camera);
  150. //Re-call the render function when the next frame is ready to be drawn
  151. requestAnimationFrame(render);
  152. }
  153. requestAnimationFrame(render);
  154.  
  155. };
  156. </script>
  157. </head>
  158. <body>
  159.  
  160. </body>
  161. </html>
Advertisement
Add Comment
Please, Sign In to add comment