Jelajahi Sumber

Geometry.clone() clones all UV layers

Ivan Latunov 10 tahun lalu
induk
melakukan
d939d3b84a
1 mengubah file dengan 15 tambahan dan 7 penghapusan
  1. 15 7
      src/core/Geometry.js

+ 15 - 7
src/core/Geometry.js

@@ -996,19 +996,27 @@ THREE.Geometry.prototype = {
 
 		}
 
-		var uvs = this.faceVertexUvs[ 0 ];
+		for ( var uvLayer = 0, uvl = this.faceVertexUvs.length; uvLayer < uvl; uvLayer ++ ) {
 
-		for ( var i = 0, il = uvs.length; i < il; i ++ ) {
+			var uvs = this.faceVertexUvs[ uvLayer ];
 
-			var uv = uvs[ i ], uvCopy = [];
+			if ( ! geometry.faceVertexUvs[ uvLayer ]) {
+				geometry.faceVertexUvs[ uvLayer ] = [];
+			}
 
-			for ( var j = 0, jl = uv.length; j < jl; j ++ ) {
+			for ( var i = 0, il = uvs.length; i < il; i ++ ) {
 
-				uvCopy.push( new THREE.Vector2( uv[ j ].x, uv[ j ].y ) );
+				var uv = uvs[ i ], uvCopy = [];
 
-			}
+				for ( var j = 0, jl = uv.length; j < jl; j ++ ) {
+
+					uvCopy.push( new THREE.Vector2( uv[ j ].x, uv[ j ].y ) );
 
-			geometry.faceVertexUvs[ 0 ].push( uvCopy );
+				}
+
+				geometry.faceVertexUvs[ uvLayer ].push( uvCopy );
+
+			}
 
 		}