Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  var scene = new THREE.Scene();
  2.         var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);
  3.         var renderer = new THREE.WebGLRenderer();
  4.  
  5.         renderer.setClearColor(0xeeeeee, 1.0);
  6.         renderer.setSize(window.innerWidth, window.innerHeight);
  7.         var webglContainer = document.getElementById('webgl-container');
  8.         webglContainer.appendChild(renderer.domElement);
  9.  
  10.    
  11.  
  12.          // window resize handler
  13.         window.addEventListener('resize', onWindowResize, false);
  14.  
  15.         function onWindowResize() {
  16.             camera.aspect = window.innerWidth / window.innerHeight;
  17.             camera.updateProjectionMatrix();
  18.             renderer.setSize(window.innerWidth, window.innerHeight);
  19.             render();
  20.         }
  21.  
  22.         var axes = new THREE.AxisHelper(20);
  23.         scene.add(axes);
  24.  
  25.         var grid = new THREE.GridHelper(40, 1);
  26.  
  27.          // create the ground plane
  28.         var planeGeometry = new THREE.PlaneGeometry(80, 80, 10, 10);
  29.         var planeMaterial = new THREE.MeshLambertMaterial({
  30.             color: 0xffffff
  31.         });
  32.         var plane = new THREE.Mesh(planeGeometry, planeMaterial);
  33.         plane.rotation.x = -0.5 * Math.PI;
  34.         plane.position.x = 0;
  35.         plane.position.y = -0.05;
  36.         plane.position.z = 0;
  37.         scene.add(plane);
  38.  
  39.          // ---- 3D CONTENT CREATION -----------------------------------------------------
  40.        
  41.         var mechParts = [];
  42.        
  43.        
  44.         function loadMech()
  45.         {
  46.        
  47.             loadMechPart('torso');
  48.             loadMechPart('head');
  49.             loadMechPart('base');
  50.             loadMechPart('arm');
  51.             loadMechPart('leg');
  52.            
  53.             console.log(mechParts['torso']);
  54.                                
  55.         }
  56.        
  57.        
  58.        
  59.        
  60.        
  61.         function loadMechPart(part)
  62.         {
  63.             var geo;
  64.             var mat;
  65.            
  66.             var loader = new THREE.OBJLoader();
  67.             geo = loader.load('assets/'+part+'.obj', function (geometry, materials ) {
  68.            
  69.             mat = new THREE.MeshLambertMaterial({ color: 0xa65e00 });
  70.            
  71.             geometry.traverse( function(child) {
  72.                 if (child instanceof THREE.Mesh) {
  73.                     // apply custom material
  74.                     child.material = mat;
  75.                 }
  76.             });
  77.            
  78.             geometry.name = part;
  79.             geometry.position.x  = 0;
  80.             geometry.position.y  = 0;
  81.             geometry.position.z  = 0;
  82.            
  83.             geometry.scale.set(1, 1, 1);
  84.             scene.add(geometry);
  85.             console.log(geometry);
  86.             mechParts[part] = geometry;
  87.            
  88.  
  89.         });
  90.        
  91.         }
  92.        
  93.        
  94.        
  95.         loadMech();
  96.  
  97.          // ---- END OF 3D CONTENT CREATION ---------------------------------------------
  98.  
  99.          // position and point the camera to the center of the scene
  100.          
  101.         function initCamera()
  102.         {
  103.             camera.position.x = 4.5;
  104.             camera.position.y = 10;
  105.             camera.position.z = 17;
  106.             camera.rotation.x = -0.1;
  107.             camera.rotation.y = 0.52;
  108.             camera.rotation.z = 0.05;          
  109.            
  110.         }
  111.        
  112.         initCamera();
  113.      
  114.  
  115.          // add subtle ambient lighting
  116.         var ambientLight = new THREE.AmbientLight(0x222222);
  117.         scene.add(ambientLight);
  118.  
  119.          // add spotlight
  120.         var spotLight = new THREE.SpotLight(0xffffff);
  121.         spotLight.position.set(-80, 70, 90);
  122.         scene.add(spotLight);
  123.  
  124.          // add GUI control elements
  125.         var guiControls = new function () {
  126.             this.showAxes = true;
  127.             this.showGrid = false;
  128.             this.showPlane = true;
  129.             this.asWireframes = false;
  130.             this.animated = true;
  131.             this.withShadow = false;
  132.             this.withFog = false;
  133.         }
  134.  
  135.         var gui = new dat.GUI({
  136.             autoPlace: false
  137.         });
  138.         var guiContainer = document.getElementById('gui-container');
  139.         guiContainer.appendChild(gui.domElement);
  140.         gui.add(guiControls, 'showAxes').onChange(function (e) {
  141.             showAxes = e;
  142.             if (showAxes) {
  143.                 scene.add(axes);
  144.             } else {
  145.                 scene.remove(axes);
  146.             }
  147.             render();
  148.         });
  149.         gui.add(guiControls, 'showGrid').onChange(function (e) {
  150.             showGrid = e;
  151.             if (showGrid) {
  152.                 scene.add(grid);
  153.             } else {
  154.                 scene.remove(grid);
  155.             }
  156.             render();
  157.         });
  158.         gui.add(guiControls, 'showPlane').onChange(function (e) {
  159.             showPlane = e;
  160.             if (showPlane) {
  161.                 scene.add(plane);
  162.             } else {
  163.                 scene.remove(plane);
  164.             }
  165.             render();
  166.         });
  167.         gui.add(guiControls, 'asWireframes').onChange(function (e) {
  168.             asWireframes = e;
  169.             // TODO: for all material.wireframe = asWireframes;
  170.             mat.wireframe = asWireframes;
  171.             render();
  172.         });
  173.         gui.open();
  174.  
  175.          // init and call render function
  176.         function render() {
  177.             renderer.render(scene, camera);
  178.             /*
  179.             console.log("camera.position.x: ", camera.position.x);
  180.             console.log("camera.position.y: ", camera.position.y);
  181.             console.log("camera.position.z: ", camera.position.z);
  182.             console.log("camera.rotation.x: ", camera.rotation.x);
  183.             console.log("camera.rotation.y: ", camera.rotation.y);
  184.             console.log("camera.rotation.z: ", camera.rotation.z);
  185.             */
  186.         }
  187.         initAnim(true);
  188.         initShadow(false);
  189.         initFog(false);
  190.         render();
  191.         setShadow(false);
  192.         setFog(false);
  193.         animate();
  194.  
  195.          // animate the 3D objects
  196.         function initAnim(value) {
  197.             if (value) {
  198.                 gui.add(guiControls, 'animated').onChange(function (e) {
  199.                     animated = e;
  200.                     if (animated) animate();
  201.                 });
  202.             }
  203.         }
  204.  
  205.         var step = 0;
  206.         var scalingStep = 0;
  207.  
  208.         function animate() {
  209.             if (guiControls.animated) {
  210.                 // DO ANIMATING 3D ELEMENTS
  211.  
  212.                 // request re-rendering
  213.                 requestAnimationFrame(animate);
  214.             }
  215.             render();
  216.         }
  217.  
  218.          // shadow cast on plane
  219.         function initShadow(value) {
  220.             // SET receiveShadow AND castShadow FLAGS OF 3D ELEMENTS WITH SHADOW
  221.             plane.receiveShadow = value;
  222.             spotLight.castShadow = value;
  223.             renderer.shadowMapEnabled = value;
  224.             if (value) {
  225.                 gui.add(guiControls, 'withShadow').onChange(function (e) {
  226.                     withShadow = e;
  227.                     setShadow(withShadow);
  228.                 });
  229.             }
  230.         }
  231.  
  232.         function setShadow(value) {
  233.             if (value) {
  234.                 renderer.shadowMapAutoUpdate = true;
  235.             } else {
  236.                 renderer.shadowMapAutoUpdate = false;
  237.                 renderer.clearTarget(spotLight.shadowMap);
  238.             }
  239.             render();
  240.         }
  241.  
  242.          // fog
  243.         var fog;
  244.  
  245.         function initFog(value) {
  246.             if (value) {
  247.                 fog = new THREE.Fog(0xeeeeee, 0.0000001, 150);
  248.                 scene.fog = fog;
  249.                 gui.add(guiControls, 'withFog').onChange(function (e) {
  250.                     withFog = e;
  251.                     setFog(withFog);
  252.                 });
  253.             }
  254.         }
  255.  
  256.         function setFog(value) {
  257.             if (!fog) return;
  258.             if (value) {
  259.                 fog.near = 0.000000001;
  260.                 fog.far = 150;
  261.             } else {
  262.                 fog.near = 8000;
  263.                 fog.far = 8000;
  264.             }
  265.             render();
  266.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement