Forráskód Böngészése

Merge pull request #1563 from julien-moreau/master

Got support of gltf files containing unindexed meshes
David Catuhe 8 éve
szülő
commit
daf8c393f7

+ 15 - 4
dist/preview release/loaders/babylon.glTFFileLoader.js

@@ -668,10 +668,21 @@ var BABYLON;
                 }
                 // Indices
                 accessor = gltfRuntime.accessors[primitive.indices];
-                buffer = BABYLON.GLTFUtils.GetBufferFromAccessor(gltfRuntime, accessor);
-                tempVertexData.indices = new Int32Array(buffer.length);
-                tempVertexData.indices.set(buffer);
-                indexCounts.push(tempVertexData.indices.length);
+                if (accessor) {
+                    buffer = BABYLON.GLTFUtils.GetBufferFromAccessor(gltfRuntime, accessor);
+                    tempVertexData.indices = new Int32Array(buffer.length);
+                    tempVertexData.indices.set(buffer);
+                    indexCounts.push(tempVertexData.indices.length);
+                }
+                else {
+                    // Set indices on the fly
+                    var indices = [];
+                    for (var j = 0; j < tempVertexData.positions.length / 3; j++) {
+                        indices.push(j);
+                    }
+                    tempVertexData.indices = new Int32Array(indices);
+                    indexCounts.push(tempVertexData.indices.length);
+                }
                 vertexData.merge(tempVertexData);
                 tempVertexData = undefined;
                 // Sub material

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 1 - 1
dist/preview release/loaders/babylon.glTFFileLoader.min.js


+ 16 - 4
loaders/src/glTF/babylon.glTFFileLoader.ts

@@ -700,11 +700,23 @@ module BABYLON {
 
                 // Indices
                 accessor = gltfRuntime.accessors[primitive.indices];
-                buffer = GLTFUtils.GetBufferFromAccessor(gltfRuntime, accessor);
+                if (accessor) {
+                    buffer = GLTFUtils.GetBufferFromAccessor(gltfRuntime, accessor);
+
+                    tempVertexData.indices = new Int32Array(buffer.length);
+                    (<Float32Array>tempVertexData.indices).set(buffer);
+                    indexCounts.push(tempVertexData.indices.length);
+                }
+                else {
+                    // Set indices on the fly
+                    var indices: number[] = [];
+                    for (var j = 0; j < tempVertexData.positions.length / 3; j++) {
+                        indices.push(j);
+                    }
 
-                tempVertexData.indices = new Int32Array(buffer.length);
-                (<Float32Array>tempVertexData.indices).set(buffer);
-                indexCounts.push(tempVertexData.indices.length);
+                    tempVertexData.indices = new Int32Array(indices);
+                    indexCounts.push(tempVertexData.indices.length);
+                }
 
                 vertexData.merge(tempVertexData);
                 tempVertexData = undefined;