Browse Source

FBXLoader parsers return matrices instead of strings

Lewy Blue 7 năm trước cách đây
mục cha
commit
439376a51a
1 tập tin đã thay đổi với 131 bổ sung119 xóa
  1. 131 119
      examples/webgl_loader_fbx.html

+ 131 - 119
examples/webgl_loader_fbx.html

@@ -1,185 +1,197 @@
 <!DOCTYPE html>
 <html lang="en">
-	<head>
-		<title>three.js webgl - FBX loader</title>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
-		<style>
-			body {
-				font-family: Monospace;
-				background-color: #000;
-				color: #fff;
-				margin: 0px;
-				overflow: hidden;
-			}
-			#info {
-				color: #fff;
-				position: absolute;
-				top: 10px;
-				width: 100%;
-				text-align: center;
-				z-index: 100;
-				display:block;
-			}
-			#info a, .button { color: #f00; font-weight: bold; text-decoration: underline; cursor: pointer }
-		</style>
-	</head>
 
-	<body>
-		<div id="info">
-		<a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> - FBXLoader test
-		</div>
+<head>
+  <title>three.js webgl - FBX loader</title>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
+  <style>
+    body {
+      font-family: Monospace;
+      background-color: #000;
+      color: #fff;
+      margin: 0px;
+      overflow: hidden;
+    }
 
-		<script src="../build/three.js"></script>
+    #info {
+      color: #fff;
+      position: absolute;
+      top: 10px;
+      width: 100%;
+      text-align: center;
+      z-index: 100;
+      display: block;
+    }
 
-		<script src="js/controls/OrbitControls.js"></script>
+    #info a,
+    .button {
+      color: #f00;
+      font-weight: bold;
+      text-decoration: underline;
+      cursor: pointer
+    }
+  </style>
+</head>
 
-		<script src="js/curves/NURBSCurve.js"></script>
-		<script src="js/curves/NURBSUtils.js"></script>
-		<script src="js/loaders/FBXLoader.js"></script>
+<body>
+  <div id="info">
+    <a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> - FBXLoader test
+  </div>
 
-		<script src="js/Detector.js"></script>
-		<script src="js/libs/stats.min.js"></script>
+  <script src="../build/three.js"></script>
 
-		<script>
+  <script src="js/controls/OrbitControls.js"></script>
 
-			if ( ! Detector.webgl ) Detector.addGetWebGLMessage();
+  <script src="js/curves/NURBSCurve.js"></script>
+  <script src="js/curves/NURBSUtils.js"></script>
+  <script src="js/loaders/FBXLoader.js"></script>
 
-			var container, stats, controls;
-			var camera, scene, renderer, light;
+  <script src="js/Detector.js"></script>
+  <script src="js/libs/stats.min.js"></script>
+  <script src="js/libs/inflate.min.js"></script>
 
-			var clock = new THREE.Clock();
+  <script>
 
-			var mixers = [];
+    var container, stats, controls;
+    var camera, scene, renderer, light;
 
-			init();
+    var clock = new THREE.Clock();
 
-			function init() {
+    var mixers = [];
 
-				container = document.createElement( 'div' );
-				document.body.appendChild( container );
+    init();
 
-				camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 2000 );
+    function init() {
 
-				scene = new THREE.Scene();
+      container = document.createElement('div');
+      document.body.appendChild(container);
 
-				// grid
-				var gridHelper = new THREE.GridHelper( 28, 28, 0x303030, 0x303030 );
-				gridHelper.position.set( 0, - 0.04, 0 );
-				scene.add( gridHelper );
+      camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 2000);
 
-				// stats
-				stats = new Stats();
-				container.appendChild( stats.dom );
+      scene = new THREE.Scene();
 
-				// model
-				var manager = new THREE.LoadingManager();
-				manager.onProgress = function( item, loaded, total ) {
+      // grid
+      var gridHelper = new THREE.GridHelper(28, 28, 0x303030, 0x303030);
+      gridHelper.position.set(0, - 0.04, 0);
+      scene.add(gridHelper);
 
-					console.log( item, loaded, total );
+      // stats
+      stats = new Stats();
+      container.appendChild(stats.dom);
 
-				};
+      // model
+      var manager = new THREE.LoadingManager();
+      manager.onProgress = function (item, loaded, total) {
 
-				var onProgress = function( xhr ) {
+        // console.log( item, loaded, total );
 
-					if ( xhr.lengthComputable ) {
+      };
 
-						var percentComplete = xhr.loaded / xhr.total * 100;
-						console.log( Math.round( percentComplete, 2 ) + '% downloaded' );
+      var onProgress = function (xhr) {
 
-					}
+        if (xhr.lengthComputable) {
 
-				};
+          var percentComplete = xhr.loaded / xhr.total * 100;
+          // console.log( Math.round( percentComplete, 2 ) + '% downloaded' );
 
-				var onError = function( xhr ) {
+        }
 
-					console.error( xhr );
+      };
 
-				};
+      var onError = function (xhr) {
 
-				var loader = new THREE.FBXLoader( manager );
-				loader.load( 'models/fbx/xsi_man_skinning.fbx', function( object ) {
+        console.error(xhr);
 
-					object.mixer = new THREE.AnimationMixer( object );
-					mixers.push( object.mixer );
+      };
 
-					var action = object.mixer.clipAction( object.animations[ 0 ] );
-					action.play();
+      var loader = new THREE.FBXLoader(manager);
+      // loader.load('models/fbx/ASCIIandBinary/defeat.bin.fbx', function (object) {
+      // loader.load('models/fbx/ASCIIandBinary/defeat.fbx', function (object) {
+      // loader.load('models/fbx/ASCIIandBinary/defeat_30fps.fbx', function (object) {
+      loader.load('models/fbx/ASCIIandBinary/nao_ball.bin.fbx', function (object) {
+      // loader.load('models/fbx/ASCIIandBinary/nao_ball.fbx', function (object) {
 
-					scene.add( object );
+        if (object.animations[0]) {
+          object.mixer = new THREE.AnimationMixer(object);
+          mixers.push(object.mixer);
 
+          var action = object.mixer.clipAction(object.animations[0]);
+          action.play();
+        }
 
-				}, onProgress, onError );
+        console.log(object);
+        object.scale.multiplyScalar(0.1);
+        scene.add(object);
 
-				loader.load( 'models/fbx/nurbs.fbx', function( object ) {
 
-					scene.add( object );
+      }, onProgress, onError);
 
-				}, onProgress, onError );
+      renderer = new THREE.WebGLRenderer();
+      renderer.setPixelRatio(window.devicePixelRatio);
+      renderer.setSize(window.innerWidth, window.innerHeight);
+      renderer.setClearColor(0xffffff, 1.0)
+      container.appendChild(renderer.domElement);
 
-				renderer = new THREE.WebGLRenderer();
-				renderer.setPixelRatio( window.devicePixelRatio );
-				renderer.setSize( window.innerWidth, window.innerHeight );
-				container.appendChild( renderer.domElement );
+      // controls, camera
+      controls = new THREE.OrbitControls(camera, renderer.domElement);
+      controls.target.set(0, 12, 0);
+      camera.position.set(2, 18, 28);
+      controls.update();
 
-				// controls, camera
-				controls = new THREE.OrbitControls( camera, renderer.domElement );
-				controls.target.set( 0, 12, 0 );
-				camera.position.set( 2, 18, 28 );
-				controls.update();
+      window.addEventListener('resize', onWindowResize, false);
 
-				window.addEventListener( 'resize', onWindowResize, false );
+      light = new THREE.HemisphereLight(0xffffff, 0x444444, 1.0);
+      light.position.set(0, 1, 0);
+      scene.add(light);
 
-				light = new THREE.HemisphereLight(0xffffff, 0x444444, 1.0);
-				light.position.set(0, 1, 0);
-				scene.add(light);
+      light = new THREE.DirectionalLight(0xffffff, 1.0);
+      light.position.set(0, 1, 0);
+      scene.add(light);
 
-				light = new THREE.DirectionalLight(0xffffff, 1.0);
-				light.position.set(0, 1, 0);
-				scene.add(light);
+      animate();
 
-				animate();
+    }
 
-			}
+    function onWindowResize() {
 
-			function onWindowResize() {
+      camera.aspect = window.innerWidth / window.innerHeight;
+      camera.updateProjectionMatrix();
 
-				camera.aspect = window.innerWidth / window.innerHeight;
-				camera.updateProjectionMatrix();
+      renderer.setSize(window.innerWidth, window.innerHeight);
 
-				renderer.setSize( window.innerWidth, window.innerHeight );
+    }
 
-			}
+    //
 
-			//
+    function animate() {
 
-			function animate() {
+      requestAnimationFrame(animate);
 
-				requestAnimationFrame( animate );
+      if (mixers.length > 0) {
 
-				if ( mixers.length > 0 ) {
+        for (var i = 0; i < mixers.length; i++) {
 
-					for ( var i = 0; i < mixers.length; i ++ ) {
+          mixers[i].update(clock.getDelta());
 
-						mixers[ i ].update( clock.getDelta() );
+        }
 
-					}
+      }
 
-				}
+      stats.update();
 
-				stats.update();
+      render();
 
-				render();
+    }
 
-			}
+    function render() {
 
-			function render() {
+      renderer.render(scene, camera);
 
-				renderer.render( scene, camera );
+    }
 
-			}
+  </script>
 
-		</script>
+</body>
 
-	</body>
-</html>
+</html>