瀏覽代碼

Fix issue with glTF loader and TRS in nodes

Gary Hsu 8 年之前
父節點
當前提交
7b5be5c253
共有 1 個文件被更改,包括 8 次插入5 次删除
  1. 8 5
      loaders/src/glTF/babylon.glTFFileLoader.ts

+ 8 - 5
loaders/src/glTF/babylon.glTFFileLoader.ts

@@ -640,9 +640,9 @@ module BABYLON {
     };
 
     /**
-    * Configures node from transformation matrix
+    * Configures node transformation
     */
-    var configureNodeFromMatrix = (newNode: Mesh, node: IGLTFNode, parent: Node): void => {
+    var configureNodeFromGLTFNode = (newNode: Mesh, node: IGLTFNode, parent: Node): void => {
         if (node.matrix) {
             var position = new Vector3(0, 0, 0);
             var rotation = new Quaternion();
@@ -654,7 +654,10 @@ module BABYLON {
             newNode.computeWorldMatrix(true);
         }
         else {
-            configureNode(newNode, Vector3.FromArray(node.translation), Quaternion.FromArray(node.rotation), Vector3.FromArray(node.scale));
+            configureNode(newNode,
+                Vector3.FromArray(node.translation || [0, 0, 0]),
+                Quaternion.FromArray(node.rotation || [0, 0, 0, 1]),
+                Vector3.FromArray(node.scale || [1, 1, 1]));
         }
     };
 
@@ -744,8 +747,8 @@ module BABYLON {
         }
 
         if (babylonNode !== null) {
-            if (node.matrix && babylonNode instanceof Mesh) {
-                configureNodeFromMatrix(babylonNode, node, parent);
+            if (babylonNode instanceof Mesh) {
+                configureNodeFromGLTFNode(babylonNode, node, parent);
             }
             else {
                 var translation = node.translation || [0, 0, 0];