Преглед на файлове

Merge branch 'master' of https://github.com/BabylonJS/Babylon.js

David Catuhe преди 9 години
родител
ревизия
ca80d407dd
променени са 2 файла, в които са добавени 25 реда и са изтрити 5 реда
  1. 16 4
      loaders/glTF/babylon.glTFFileLoader.js
  2. 9 1
      loaders/glTF/babylon.glTFFileLoader.ts

+ 16 - 4
loaders/glTF/babylon.glTFFileLoader.js

@@ -132,7 +132,7 @@ var BABYLON;
             return this._pos >= this._maxPos;
         };
         return Tokenizer;
-    })();
+    }());
     /**
     * Values
     */
@@ -742,8 +742,14 @@ var BABYLON;
                     }
                     else if (semantic === "POSITION") {
                         tempVertexData.positions = [];
-                        for (var j = 0; j < buffer.length; j++) {
+                        var count = 3;
+                        if (GLTFFileLoader.HomogeneousCoordinates) {
+                            count = 4;
+                        }
+                        for (var j = 0; j < buffer.length; j += count) {
                             tempVertexData.positions.push(buffer[j]);
+                            tempVertexData.positions.push(buffer[j + 1]);
+                            tempVertexData.positions.push(buffer[j + 2]);
                         }
                         verticesCounts.push(tempVertexData.positions.length);
                     }
@@ -1198,7 +1204,7 @@ var BABYLON;
     var onShaderCompileSuccess = function (gltfRuntime, shaderMaterial, technique, material, unTreatedUniforms) {
         return function (_) {
             prepareShaderMaterialUniforms(gltfRuntime, shaderMaterial, technique, material, unTreatedUniforms);
-            shaderMaterial.onBind = function (mat, mesh) {
+            shaderMaterial.onBind = function (mesh) {
                 onBindShaderMaterial(mesh, gltfRuntime, unTreatedUniforms, shaderMaterial, technique, material);
             };
         };
@@ -1375,7 +1381,9 @@ var BABYLON;
     */
     var load = function (gltfRuntime) {
         // Begin with shaders
+        var atLeastOnShader = false;
         for (var sha in gltfRuntime.shaders) {
+            atLeastOnShader = true;
             var shader = gltfRuntime.shaders[sha];
             if (shader) {
                 if (isBase64(shader.uri)) {
@@ -1390,6 +1398,9 @@ var BABYLON;
                 BABYLON.Tools.Error("No shader file named " + shader.uri);
             }
         }
+        if (!atLeastOnShader) {
+            loadBuffers(gltfRuntime);
+        }
     };
     /**
     * glTF File Loader Plugin
@@ -1552,8 +1563,9 @@ var BABYLON;
         * Static members
         */
         GLTFFileLoader.MakeYUP = false;
+        GLTFFileLoader.HomogeneousCoordinates = false;
         return GLTFFileLoader;
-    })();
+    }());
     BABYLON.GLTFFileLoader = GLTFFileLoader;
     ;
     BABYLON.SceneLoader.RegisterPlugin(new GLTFFileLoader());

+ 9 - 1
loaders/glTF/babylon.glTFFileLoader.ts

@@ -1418,7 +1418,7 @@
         return (_: Effect) => {
             prepareShaderMaterialUniforms(gltfRuntime, shaderMaterial, technique, material, unTreatedUniforms);
 
-            shaderMaterial.onBind = (mat: Material, mesh: Mesh) => {
+            shaderMaterial.onBind = (mesh: Mesh) => {
                 onBindShaderMaterial(mesh, gltfRuntime, unTreatedUniforms, shaderMaterial, technique, material);
             };
         };
@@ -1630,7 +1630,11 @@
     */
     var load = (gltfRuntime: IGLTFRuntime) => {
         // Begin with shaders
+        var atLeastOneShader = false;
+
         for (var sha in gltfRuntime.shaders) {
+            atLeastOneShader = true;
+
             var shader: IGLTFShader = gltfRuntime.shaders[sha];
             
             if (shader) {
@@ -1646,6 +1650,10 @@
                 Tools.Error("No shader file named " + shader.uri);
             }
         }
+
+        if (!atLeastOneShader) {
+            loadBuffers(gltfRuntime);
+        }
     };
 
     /**