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

BufferGeometry: Moved morph/skinned code to fromDirectGeometry()

Mr.doob 10 éve
szülő
commit
d5f3b24977
2 módosított fájl, 42 hozzáadás és 37 törlés
  1. 38 34
      src/core/BufferGeometry.js
  2. 4 3
      src/core/DirectGeometry.js

+ 38 - 34
src/core/BufferGeometry.js

@@ -174,40 +174,6 @@ THREE.BufferGeometry.prototype = {
 
 				this.fromGeometry( geometry );
 
-				var directgeometry = geometry.__directGeometry;
-
-				// morphs
-
-				if ( object.morphTargetInfluences !== undefined ) {
-
-					var morphTargets = directgeometry.morphTargets;
-
-					for ( var i = 0, l = morphTargets.length; i < l; i ++ ) {
-
-						var morphTarget = morphTargets[ i ];
-
-						var attribute = new THREE.Float32Attribute( morphTarget.length * 3, 3 );
-
-						this.morphAttributes.push( attribute.copyVector3sArray( morphTarget ) );
-
-					}
-
-					// TODO normals, colors
-
-				}
-
-				// skinning
-
-				if ( object instanceof THREE.SkinnedMesh ) {
-
-					var skinIndices = new THREE.Float32Attribute( directgeometry.skinIndices.length * 4, 4 );
-					var skinWeights = new THREE.Float32Attribute( directgeometry.skinWeights.length * 4, 4 );
-
-					this.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( directgeometry.skinIndices ) );
-					this.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( directgeometry.skinWeights ) );
-
-				}
-
 			}
 
 		}
@@ -332,6 +298,44 @@ THREE.BufferGeometry.prototype = {
 
 		}
 
+		// morphs
+
+		if ( geometry.morphTargets.length > 0 ) {
+
+			var morphTargets = geometry.morphTargets;
+
+			for ( var i = 0, l = morphTargets.length; i < l; i ++ ) {
+
+				var morphTarget = morphTargets[ i ];
+
+				var attribute = new THREE.Float32Attribute( morphTarget.length * 3, 3 );
+
+				this.morphAttributes.push( attribute.copyVector3sArray( morphTarget ) );
+
+			}
+
+			// TODO normals, colors
+
+		}
+
+		// skinning
+
+		if ( geometry.skinIndices.length > 0 ) {
+
+			var skinIndices = new THREE.Float32Attribute( geometry.skinIndices.length * 4, 4 );
+			this.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );
+
+		}
+
+		if ( geometry.skinWeights.length > 0 ) {
+
+			var skinWeights = new THREE.Float32Attribute( geometry.skinWeights.length * 4, 4 );
+			this.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );
+
+		}
+
+		//
+
 		if ( geometry.boundingSphere !== null ) {
 
 			this.boundingSphere = geometry.boundingSphere.clone();

+ 4 - 3
src/core/DirectGeometry.js

@@ -191,12 +191,12 @@ THREE.DirectGeometry.prototype = {
 				this.morphTargets[ j ].push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );
 
 			}
-
+			/*
 			for ( var j = 0; j < morphNormalsLength; j ++ ) {
 
-				var morphNormal = morphNormals[ j ].normals;
+				var morphNormal = morphNormals[ j ].vertexNormals[ i ];
 
-				this.morphNormals[ j ].push( morphNormal[ face.a ], morphNormal[ face.b ], morphNormal[ face.c ] );
+				this.morphNormals[ j ].push( morphNormal.a, morphNormal.b, morphNormal.c );
 
 			}
 
@@ -207,6 +207,7 @@ THREE.DirectGeometry.prototype = {
 				this.morphColors[ j ].push( morphColor[ face.a ], morphColor[ face.b ], morphColor[ face.c ] );
 
 			}
+			*/
 
 			// skins