| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- var GeometryUtils = {
- merge: function ( object1, object2 ) {
- var isMesh = object2 instanceof THREE.Mesh;
- var geometry1 = object1,
- vertexPosition = geometry1.vertices.length,
- facePosition = geometry1.faces.length,
- uvPosition = geometry1.uvs.length,
- geometry2 = isMesh ? object2.geometry : object2;
- if ( isMesh ) object2.updateMatrix();
- for ( var i = 0, il = geometry2.vertices.length; i < il; i ++ ) {
- var vertex = geometry2.vertices[ i ];
- var vertexCopy = new THREE.Vertex( vertex.position.clone() );
- if ( isMesh ) object2.matrix.transform( vertexCopy.position );
- geometry1.vertices.push( vertexCopy );
- }
- for ( var i = 0, il = geometry2.faces.length; i < il; i ++ ) {
- var face = geometry2.faces[ i ];
- if ( face instanceof THREE.Face3 ) {
- var faceCopy = new THREE.Face3();
- faceCopy.a = face.a + vertexPosition;
- faceCopy.b = face.b + vertexPosition;
- faceCopy.c = face.c + vertexPosition;
- } else if ( face instanceof THREE.Face4 ) {
- var faceCopy = new THREE.Face4();
- faceCopy.a = face.a + vertexPosition;
- faceCopy.b = face.b + vertexPosition;
- faceCopy.c = face.c + vertexPosition;
- faceCopy.d = face.d + vertexPosition;
- }
- for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {
- var normal = face.vertexNormals[ j ];
- faceCopy.vertexNormals.push( normal.clone() );
- }
- geometry1.faces.push( faceCopy );
- }
- for ( var i = 0, il = geometry2.uvs.length; i < il; i ++ ) {
- var uv = geometry2.uvs[ i ];
- var uvCopy = [];
- for ( var j = 0, jl = uv.length; j < jl; j ++ ) {
- uvCopy.push( new THREE.UV( uv[ j ].u, uv[ j ].v ) );
- }
- geometry1.uvs.push( uvCopy );
- }
- }
- }
|