Browse Source

Merge pull request #13043 from donmccurdy/feat-gltfloader-default-accessor-byteoffset

GLTFLoader: Fix issue when byteOffset is omitted from interleaved accessors.
Mr.doob 7 years ago
parent
commit
39976de2c4
1 changed files with 3 additions and 2 deletions
  1. 3 2
      examples/js/loaders/GLTFLoader.js

+ 3 - 2
examples/js/loaders/GLTFLoader.js

@@ -1528,6 +1528,7 @@ THREE.GLTFLoader = ( function () {
 			// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.
 			var elementBytes = TypedArray.BYTES_PER_ELEMENT;
 			var itemBytes = elementBytes * itemSize;
+			var byteOffset = accessorDef.byteOffset || 0;
 			var byteStride = json.bufferViews[ accessorDef.bufferView ].byteStride;
 			var normalized = accessorDef.normalized === true;
 			var array, bufferAttribute;
@@ -1541,7 +1542,7 @@ THREE.GLTFLoader = ( function () {
 				// Integer parameters to IB/IBA are in array elements, not bytes.
 				var ib = new THREE.InterleavedBuffer( array, byteStride / elementBytes );
 
-				bufferAttribute = new THREE.InterleavedBufferAttribute( ib, itemSize, accessorDef.byteOffset / elementBytes, normalized );
+				bufferAttribute = new THREE.InterleavedBufferAttribute( ib, itemSize, byteOffset / elementBytes, normalized );
 
 			} else {
 
@@ -1551,7 +1552,7 @@ THREE.GLTFLoader = ( function () {
 
 				} else {
 
-					array = new TypedArray( bufferView, accessorDef.byteOffset, accessorDef.count * itemSize );
+					array = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );
 
 				}