Bläddra i källkod

Re-generated examples/jsm files.

Mr.doob 6 år sedan
förälder
incheckning
6646710b6a

+ 20 - 9
examples/jsm/exporters/GLTFExporter.js

@@ -1186,9 +1186,22 @@ GLTFExporter.prototype = {
 			var modifiedAttribute = null;
 			var modifiedAttribute = null;
 			for ( var attributeName in geometry.attributes ) {
 			for ( var attributeName in geometry.attributes ) {
 
 
+				// Ignore morph target attributes, which are exported later.
+				if ( attributeName.substr( 0, 5 ) === 'morph' ) continue;
+
 				var attribute = geometry.attributes[ attributeName ];
 				var attribute = geometry.attributes[ attributeName ];
 				attributeName = nameConversion[ attributeName ] || attributeName.toUpperCase();
 				attributeName = nameConversion[ attributeName ] || attributeName.toUpperCase();
 
 
+				// Prefix all geometry attributes except the ones specifically
+				// listed in the spec; non-spec attributes are considered custom.
+				var validVertexAttributes =
+						/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/;
+				if ( ! validVertexAttributes.test( attributeName ) ) {
+
+					attributeName = '_' + attributeName;
+
+				}
+
 				if ( cachedData.attributes.has( attribute ) ) {
 				if ( cachedData.attributes.has( attribute ) ) {
 
 
 					attributes[ attributeName ] = cachedData.attributes.get( attribute );
 					attributes[ attributeName ] = cachedData.attributes.get( attribute );
@@ -1208,15 +1221,11 @@ GLTFExporter.prototype = {
 
 
 				}
 				}
 
 
-				if ( attributeName.substr( 0, 5 ) !== 'MORPH' ) {
+				var accessor = processAccessor( modifiedAttribute || attribute, geometry );
+				if ( accessor !== null ) {
 
 
-					var accessor = processAccessor( modifiedAttribute || attribute, geometry );
-					if ( accessor !== null ) {
-
-						attributes[ attributeName ] = accessor;
-						cachedData.attributes.set( attribute, accessor );
-
-					}
+					attributes[ attributeName ] = accessor;
+					cachedData.attributes.set( attribute, accessor );
 
 
 				}
 				}
 
 
@@ -1384,6 +1393,8 @@ GLTFExporter.prototype = {
 
 
 					}
 					}
 
 
+					if ( primitive.indices === null ) delete primitive.indices;
+
 				}
 				}
 
 
 				var material = processMaterial( materials[ groups[ i ].materialIndex ] );
 				var material = processMaterial( materials[ groups[ i ].materialIndex ] );
@@ -1778,7 +1789,7 @@ GLTFExporter.prototype = {
 
 
 			} else if ( object.isLight ) {
 			} else if ( object.isLight ) {
 
 
-				console.warn( 'THREE.GLTFExporter: Only directional, point, and spot lights are supported.' );
+				console.warn( 'THREE.GLTFExporter: Only directional, point, and spot lights are supported.', object );
 				return null;
 				return null;
 
 
 			}
 			}

+ 52 - 0
examples/jsm/utils/SkeletonUtils.js

@@ -541,8 +541,60 @@ var SkeletonUtils = {
 
 
 		return bones;
 		return bones;
 
 
+	},
+
+	clone: function ( source ) {
+
+		var sourceLookup = new Map();
+		var cloneLookup = new Map();
+
+		var clone = source.clone();
+
+		parallelTraverse( source, clone, function ( sourceNode, clonedNode ) {
+
+			sourceLookup.set( clonedNode, sourceNode );
+			cloneLookup.set( sourceNode, clonedNode );
+
+		} );
+
+		clone.traverse( function ( node ) {
+
+			if ( ! node.isSkinnedMesh ) return;
+
+			var clonedMesh = node;
+			var sourceMesh = sourceLookup.get( node );
+			var sourceBones = sourceMesh.skeleton.bones;
+
+			clonedMesh.skeleton = sourceMesh.skeleton.clone();
+			clonedMesh.bindMatrix.copy( sourceMesh.bindMatrix );
+
+			clonedMesh.skeleton.bones = sourceBones.map( function ( bone ) {
+
+				return cloneLookup.get( bone );
+
+			} );
+
+			clonedMesh.bind( clonedMesh.skeleton, clonedMesh.bindMatrix );
+
+		} );
+
+		return clone;
+
 	}
 	}
 
 
 };
 };
 
 
+
+function parallelTraverse ( a, b, callback ) {
+
+	callback( a, b );
+
+	for ( var i = 0; i < a.children.length; i ++ ) {
+
+		parallelTraverse( a.children[ i ], b.children[ i ], callback );
+
+	}
+
+}
+
 export { SkeletonUtils };
 export { SkeletonUtils };

+ 2 - 2
examples/jsm/utils/UVsDebug.js

@@ -87,7 +87,7 @@ var UVsDebug = function ( geometry, size ) {
 				uvs[ 1 ].fromBufferAttribute( uvAttribute, face[ 1 ] );
 				uvs[ 1 ].fromBufferAttribute( uvAttribute, face[ 1 ] );
 				uvs[ 2 ].fromBufferAttribute( uvAttribute, face[ 2 ] );
 				uvs[ 2 ].fromBufferAttribute( uvAttribute, face[ 2 ] );
 
 
-				processFace( face, uvs, i );
+				processFace( face, uvs, i / 3 );
 
 
 			}
 			}
 
 
@@ -105,7 +105,7 @@ var UVsDebug = function ( geometry, size ) {
 				uvs[ 1 ].fromBufferAttribute( uvAttribute, face[ 1 ] );
 				uvs[ 1 ].fromBufferAttribute( uvAttribute, face[ 1 ] );
 				uvs[ 2 ].fromBufferAttribute( uvAttribute, face[ 2 ] );
 				uvs[ 2 ].fromBufferAttribute( uvAttribute, face[ 2 ] );
 
 
-				processFace( face, uvs, i );
+				processFace( face, uvs, i / 3 );
 
 
 			}
 			}