|
@@ -851,11 +851,10 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
var geometry = object.geometry,
|
|
var geometry = object.geometry,
|
|
faces3 = geometryGroup.faces3,
|
|
faces3 = geometryGroup.faces3,
|
|
- faces4 = geometryGroup.faces4,
|
|
|
|
|
|
|
|
- nvertices = faces3.length * 3 + faces4.length * 4,
|
|
|
|
- ntris = faces3.length * 1 + faces4.length * 2,
|
|
|
|
- nlines = faces3.length * 3 + faces4.length * 4,
|
|
|
|
|
|
+ nvertices = faces3.length * 3,
|
|
|
|
+ ntris = faces3.length * 1,
|
|
|
|
+ nlines = faces3.length * 3,
|
|
|
|
|
|
material = getBufferMaterial( object, geometryGroup ),
|
|
material = getBufferMaterial( object, geometryGroup ),
|
|
|
|
|
|
@@ -1851,7 +1850,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
vertices = geometry.vertices,
|
|
vertices = geometry.vertices,
|
|
chunk_faces3 = geometryGroup.faces3,
|
|
chunk_faces3 = geometryGroup.faces3,
|
|
- chunk_faces4 = geometryGroup.faces4,
|
|
|
|
obj_faces = geometry.faces,
|
|
obj_faces = geometry.faces,
|
|
|
|
|
|
obj_uvs = geometry.faceVertexUvs[ 0 ],
|
|
obj_uvs = geometry.faceVertexUvs[ 0 ],
|
|
@@ -1891,35 +1889,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- face = obj_faces[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- v1 = vertices[ face.a ];
|
|
|
|
- v2 = vertices[ face.b ];
|
|
|
|
- v3 = vertices[ face.c ];
|
|
|
|
- v4 = vertices[ face.d ];
|
|
|
|
-
|
|
|
|
- vertexArray[ offset ] = v1.x;
|
|
|
|
- vertexArray[ offset + 1 ] = v1.y;
|
|
|
|
- vertexArray[ offset + 2 ] = v1.z;
|
|
|
|
-
|
|
|
|
- vertexArray[ offset + 3 ] = v2.x;
|
|
|
|
- vertexArray[ offset + 4 ] = v2.y;
|
|
|
|
- vertexArray[ offset + 5 ] = v2.z;
|
|
|
|
-
|
|
|
|
- vertexArray[ offset + 6 ] = v3.x;
|
|
|
|
- vertexArray[ offset + 7 ] = v3.y;
|
|
|
|
- vertexArray[ offset + 8 ] = v3.z;
|
|
|
|
-
|
|
|
|
- vertexArray[ offset + 9 ] = v4.x;
|
|
|
|
- vertexArray[ offset + 10 ] = v4.y;
|
|
|
|
- vertexArray[ offset + 11 ] = v4.z;
|
|
|
|
-
|
|
|
|
- offset += 12;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglVertexBuffer );
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglVertexBuffer );
|
|
_gl.bufferData( _gl.ARRAY_BUFFER, vertexArray, hint );
|
|
_gl.bufferData( _gl.ARRAY_BUFFER, vertexArray, hint );
|
|
|
|
|
|
@@ -1998,84 +1967,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- chf = chunk_faces4[ f ];
|
|
|
|
- face = obj_faces[ chf ];
|
|
|
|
-
|
|
|
|
- // morph positions
|
|
|
|
-
|
|
|
|
- v1 = morphTargets[ vk ].vertices[ face.a ];
|
|
|
|
- v2 = morphTargets[ vk ].vertices[ face.b ];
|
|
|
|
- v3 = morphTargets[ vk ].vertices[ face.c ];
|
|
|
|
- v4 = morphTargets[ vk ].vertices[ face.d ];
|
|
|
|
-
|
|
|
|
- vka = morphTargetsArrays[ vk ];
|
|
|
|
-
|
|
|
|
- vka[ offset_morphTarget ] = v1.x;
|
|
|
|
- vka[ offset_morphTarget + 1 ] = v1.y;
|
|
|
|
- vka[ offset_morphTarget + 2 ] = v1.z;
|
|
|
|
-
|
|
|
|
- vka[ offset_morphTarget + 3 ] = v2.x;
|
|
|
|
- vka[ offset_morphTarget + 4 ] = v2.y;
|
|
|
|
- vka[ offset_morphTarget + 5 ] = v2.z;
|
|
|
|
-
|
|
|
|
- vka[ offset_morphTarget + 6 ] = v3.x;
|
|
|
|
- vka[ offset_morphTarget + 7 ] = v3.y;
|
|
|
|
- vka[ offset_morphTarget + 8 ] = v3.z;
|
|
|
|
-
|
|
|
|
- vka[ offset_morphTarget + 9 ] = v4.x;
|
|
|
|
- vka[ offset_morphTarget + 10 ] = v4.y;
|
|
|
|
- vka[ offset_morphTarget + 11 ] = v4.z;
|
|
|
|
-
|
|
|
|
- // morph normals
|
|
|
|
-
|
|
|
|
- if ( material.morphNormals ) {
|
|
|
|
-
|
|
|
|
- if ( needsSmoothNormals ) {
|
|
|
|
-
|
|
|
|
- faceVertexNormals = morphNormals[ vk ].vertexNormals[ chf ];
|
|
|
|
-
|
|
|
|
- n1 = faceVertexNormals.a;
|
|
|
|
- n2 = faceVertexNormals.b;
|
|
|
|
- n3 = faceVertexNormals.c;
|
|
|
|
- n4 = faceVertexNormals.d;
|
|
|
|
-
|
|
|
|
- } else {
|
|
|
|
-
|
|
|
|
- n1 = morphNormals[ vk ].faceNormals[ chf ];
|
|
|
|
- n2 = n1;
|
|
|
|
- n3 = n1;
|
|
|
|
- n4 = n1;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- nka = morphNormalsArrays[ vk ];
|
|
|
|
-
|
|
|
|
- nka[ offset_morphTarget ] = n1.x;
|
|
|
|
- nka[ offset_morphTarget + 1 ] = n1.y;
|
|
|
|
- nka[ offset_morphTarget + 2 ] = n1.z;
|
|
|
|
-
|
|
|
|
- nka[ offset_morphTarget + 3 ] = n2.x;
|
|
|
|
- nka[ offset_morphTarget + 4 ] = n2.y;
|
|
|
|
- nka[ offset_morphTarget + 5 ] = n2.z;
|
|
|
|
-
|
|
|
|
- nka[ offset_morphTarget + 6 ] = n3.x;
|
|
|
|
- nka[ offset_morphTarget + 7 ] = n3.y;
|
|
|
|
- nka[ offset_morphTarget + 8 ] = n3.z;
|
|
|
|
-
|
|
|
|
- nka[ offset_morphTarget + 9 ] = n4.x;
|
|
|
|
- nka[ offset_morphTarget + 10 ] = n4.y;
|
|
|
|
- nka[ offset_morphTarget + 11 ] = n4.z;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //
|
|
|
|
-
|
|
|
|
- offset_morphTarget += 12;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglMorphTargetsBuffers[ vk ] );
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglMorphTargetsBuffers[ vk ] );
|
|
_gl.bufferData( _gl.ARRAY_BUFFER, morphTargetsArrays[ vk ], hint );
|
|
_gl.bufferData( _gl.ARRAY_BUFFER, morphTargetsArrays[ vk ], hint );
|
|
|
|
|
|
@@ -2142,68 +2033,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- face = obj_faces[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- // weights
|
|
|
|
-
|
|
|
|
- sw1 = obj_skinWeights[ face.a ];
|
|
|
|
- sw2 = obj_skinWeights[ face.b ];
|
|
|
|
- sw3 = obj_skinWeights[ face.c ];
|
|
|
|
- sw4 = obj_skinWeights[ face.d ];
|
|
|
|
-
|
|
|
|
- skinWeightArray[ offset_skin ] = sw1.x;
|
|
|
|
- skinWeightArray[ offset_skin + 1 ] = sw1.y;
|
|
|
|
- skinWeightArray[ offset_skin + 2 ] = sw1.z;
|
|
|
|
- skinWeightArray[ offset_skin + 3 ] = sw1.w;
|
|
|
|
-
|
|
|
|
- skinWeightArray[ offset_skin + 4 ] = sw2.x;
|
|
|
|
- skinWeightArray[ offset_skin + 5 ] = sw2.y;
|
|
|
|
- skinWeightArray[ offset_skin + 6 ] = sw2.z;
|
|
|
|
- skinWeightArray[ offset_skin + 7 ] = sw2.w;
|
|
|
|
-
|
|
|
|
- skinWeightArray[ offset_skin + 8 ] = sw3.x;
|
|
|
|
- skinWeightArray[ offset_skin + 9 ] = sw3.y;
|
|
|
|
- skinWeightArray[ offset_skin + 10 ] = sw3.z;
|
|
|
|
- skinWeightArray[ offset_skin + 11 ] = sw3.w;
|
|
|
|
-
|
|
|
|
- skinWeightArray[ offset_skin + 12 ] = sw4.x;
|
|
|
|
- skinWeightArray[ offset_skin + 13 ] = sw4.y;
|
|
|
|
- skinWeightArray[ offset_skin + 14 ] = sw4.z;
|
|
|
|
- skinWeightArray[ offset_skin + 15 ] = sw4.w;
|
|
|
|
-
|
|
|
|
- // indices
|
|
|
|
-
|
|
|
|
- si1 = obj_skinIndices[ face.a ];
|
|
|
|
- si2 = obj_skinIndices[ face.b ];
|
|
|
|
- si3 = obj_skinIndices[ face.c ];
|
|
|
|
- si4 = obj_skinIndices[ face.d ];
|
|
|
|
-
|
|
|
|
- skinIndexArray[ offset_skin ] = si1.x;
|
|
|
|
- skinIndexArray[ offset_skin + 1 ] = si1.y;
|
|
|
|
- skinIndexArray[ offset_skin + 2 ] = si1.z;
|
|
|
|
- skinIndexArray[ offset_skin + 3 ] = si1.w;
|
|
|
|
-
|
|
|
|
- skinIndexArray[ offset_skin + 4 ] = si2.x;
|
|
|
|
- skinIndexArray[ offset_skin + 5 ] = si2.y;
|
|
|
|
- skinIndexArray[ offset_skin + 6 ] = si2.z;
|
|
|
|
- skinIndexArray[ offset_skin + 7 ] = si2.w;
|
|
|
|
-
|
|
|
|
- skinIndexArray[ offset_skin + 8 ] = si3.x;
|
|
|
|
- skinIndexArray[ offset_skin + 9 ] = si3.y;
|
|
|
|
- skinIndexArray[ offset_skin + 10 ] = si3.z;
|
|
|
|
- skinIndexArray[ offset_skin + 11 ] = si3.w;
|
|
|
|
-
|
|
|
|
- skinIndexArray[ offset_skin + 12 ] = si4.x;
|
|
|
|
- skinIndexArray[ offset_skin + 13 ] = si4.y;
|
|
|
|
- skinIndexArray[ offset_skin + 14 ] = si4.z;
|
|
|
|
- skinIndexArray[ offset_skin + 15 ] = si4.w;
|
|
|
|
-
|
|
|
|
- offset_skin += 16;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
if ( offset_skin > 0 ) {
|
|
if ( offset_skin > 0 ) {
|
|
|
|
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglSkinIndicesBuffer );
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglSkinIndicesBuffer );
|
|
@@ -2255,49 +2084,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- face = obj_faces[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- vertexColors = face.vertexColors;
|
|
|
|
- faceColor = face.color;
|
|
|
|
-
|
|
|
|
- if ( vertexColors.length === 4 && vertexColorType === THREE.VertexColors ) {
|
|
|
|
-
|
|
|
|
- c1 = vertexColors[ 0 ];
|
|
|
|
- c2 = vertexColors[ 1 ];
|
|
|
|
- c3 = vertexColors[ 2 ];
|
|
|
|
- c4 = vertexColors[ 3 ];
|
|
|
|
-
|
|
|
|
- } else {
|
|
|
|
-
|
|
|
|
- c1 = faceColor;
|
|
|
|
- c2 = faceColor;
|
|
|
|
- c3 = faceColor;
|
|
|
|
- c4 = faceColor;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- colorArray[ offset_color ] = c1.r;
|
|
|
|
- colorArray[ offset_color + 1 ] = c1.g;
|
|
|
|
- colorArray[ offset_color + 2 ] = c1.b;
|
|
|
|
-
|
|
|
|
- colorArray[ offset_color + 3 ] = c2.r;
|
|
|
|
- colorArray[ offset_color + 4 ] = c2.g;
|
|
|
|
- colorArray[ offset_color + 5 ] = c2.b;
|
|
|
|
-
|
|
|
|
- colorArray[ offset_color + 6 ] = c3.r;
|
|
|
|
- colorArray[ offset_color + 7 ] = c3.g;
|
|
|
|
- colorArray[ offset_color + 8 ] = c3.b;
|
|
|
|
-
|
|
|
|
- colorArray[ offset_color + 9 ] = c4.r;
|
|
|
|
- colorArray[ offset_color + 10 ] = c4.g;
|
|
|
|
- colorArray[ offset_color + 11 ] = c4.b;
|
|
|
|
-
|
|
|
|
- offset_color += 12;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
if ( offset_color > 0 ) {
|
|
if ( offset_color > 0 ) {
|
|
|
|
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglColorBuffer );
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglColorBuffer );
|
|
@@ -2338,41 +2124,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- face = obj_faces[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- vertexTangents = face.vertexTangents;
|
|
|
|
-
|
|
|
|
- t1 = vertexTangents[ 0 ];
|
|
|
|
- t2 = vertexTangents[ 1 ];
|
|
|
|
- t3 = vertexTangents[ 2 ];
|
|
|
|
- t4 = vertexTangents[ 3 ];
|
|
|
|
-
|
|
|
|
- tangentArray[ offset_tangent ] = t1.x;
|
|
|
|
- tangentArray[ offset_tangent + 1 ] = t1.y;
|
|
|
|
- tangentArray[ offset_tangent + 2 ] = t1.z;
|
|
|
|
- tangentArray[ offset_tangent + 3 ] = t1.w;
|
|
|
|
-
|
|
|
|
- tangentArray[ offset_tangent + 4 ] = t2.x;
|
|
|
|
- tangentArray[ offset_tangent + 5 ] = t2.y;
|
|
|
|
- tangentArray[ offset_tangent + 6 ] = t2.z;
|
|
|
|
- tangentArray[ offset_tangent + 7 ] = t2.w;
|
|
|
|
-
|
|
|
|
- tangentArray[ offset_tangent + 8 ] = t3.x;
|
|
|
|
- tangentArray[ offset_tangent + 9 ] = t3.y;
|
|
|
|
- tangentArray[ offset_tangent + 10 ] = t3.z;
|
|
|
|
- tangentArray[ offset_tangent + 11 ] = t3.w;
|
|
|
|
-
|
|
|
|
- tangentArray[ offset_tangent + 12 ] = t4.x;
|
|
|
|
- tangentArray[ offset_tangent + 13 ] = t4.y;
|
|
|
|
- tangentArray[ offset_tangent + 14 ] = t4.z;
|
|
|
|
- tangentArray[ offset_tangent + 15 ] = t4.w;
|
|
|
|
-
|
|
|
|
- offset_tangent += 16;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglTangentBuffer );
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglTangentBuffer );
|
|
_gl.bufferData( _gl.ARRAY_BUFFER, tangentArray, hint );
|
|
_gl.bufferData( _gl.ARRAY_BUFFER, tangentArray, hint );
|
|
|
|
|
|
@@ -2417,43 +2168,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- face = obj_faces[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- vertexNormals = face.vertexNormals;
|
|
|
|
- faceNormal = face.normal;
|
|
|
|
-
|
|
|
|
- if ( vertexNormals.length === 4 && needsSmoothNormals ) {
|
|
|
|
-
|
|
|
|
- for ( i = 0; i < 4; i ++ ) {
|
|
|
|
-
|
|
|
|
- vn = vertexNormals[ i ];
|
|
|
|
-
|
|
|
|
- normalArray[ offset_normal ] = vn.x;
|
|
|
|
- normalArray[ offset_normal + 1 ] = vn.y;
|
|
|
|
- normalArray[ offset_normal + 2 ] = vn.z;
|
|
|
|
-
|
|
|
|
- offset_normal += 3;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- } else {
|
|
|
|
-
|
|
|
|
- for ( i = 0; i < 4; i ++ ) {
|
|
|
|
-
|
|
|
|
- normalArray[ offset_normal ] = faceNormal.x;
|
|
|
|
- normalArray[ offset_normal + 1 ] = faceNormal.y;
|
|
|
|
- normalArray[ offset_normal + 2 ] = faceNormal.z;
|
|
|
|
-
|
|
|
|
- offset_normal += 3;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglNormalBuffer );
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglNormalBuffer );
|
|
_gl.bufferData( _gl.ARRAY_BUFFER, normalArray, hint );
|
|
_gl.bufferData( _gl.ARRAY_BUFFER, normalArray, hint );
|
|
|
|
|
|
@@ -2482,27 +2196,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- fi = chunk_faces4[ f ];
|
|
|
|
-
|
|
|
|
- uv = obj_uvs[ fi ];
|
|
|
|
-
|
|
|
|
- if ( uv === undefined ) continue;
|
|
|
|
-
|
|
|
|
- for ( i = 0; i < 4; i ++ ) {
|
|
|
|
-
|
|
|
|
- uvi = uv[ i ];
|
|
|
|
-
|
|
|
|
- uvArray[ offset_uv ] = uvi.x;
|
|
|
|
- uvArray[ offset_uv + 1 ] = uvi.y;
|
|
|
|
-
|
|
|
|
- offset_uv += 2;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
if ( offset_uv > 0 ) {
|
|
if ( offset_uv > 0 ) {
|
|
|
|
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglUVBuffer );
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglUVBuffer );
|
|
@@ -2535,27 +2228,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- fi = chunk_faces4[ f ];
|
|
|
|
-
|
|
|
|
- uv2 = obj_uvs2[ fi ];
|
|
|
|
-
|
|
|
|
- if ( uv2 === undefined ) continue;
|
|
|
|
-
|
|
|
|
- for ( i = 0; i < 4; i ++ ) {
|
|
|
|
-
|
|
|
|
- uv2i = uv2[ i ];
|
|
|
|
-
|
|
|
|
- uv2Array[ offset_uv2 ] = uv2i.x;
|
|
|
|
- uv2Array[ offset_uv2 + 1 ] = uv2i.y;
|
|
|
|
-
|
|
|
|
- offset_uv2 += 2;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
if ( offset_uv2 > 0 ) {
|
|
if ( offset_uv2 > 0 ) {
|
|
|
|
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglUV2Buffer );
|
|
_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryGroup.__webglUV2Buffer );
|
|
@@ -2590,36 +2262,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- faceArray[ offset_face ] = vertexIndex;
|
|
|
|
- faceArray[ offset_face + 1 ] = vertexIndex + 1;
|
|
|
|
- faceArray[ offset_face + 2 ] = vertexIndex + 3;
|
|
|
|
-
|
|
|
|
- faceArray[ offset_face + 3 ] = vertexIndex + 1;
|
|
|
|
- faceArray[ offset_face + 4 ] = vertexIndex + 2;
|
|
|
|
- faceArray[ offset_face + 5 ] = vertexIndex + 3;
|
|
|
|
-
|
|
|
|
- offset_face += 6;
|
|
|
|
-
|
|
|
|
- lineArray[ offset_line ] = vertexIndex;
|
|
|
|
- lineArray[ offset_line + 1 ] = vertexIndex + 1;
|
|
|
|
-
|
|
|
|
- lineArray[ offset_line + 2 ] = vertexIndex;
|
|
|
|
- lineArray[ offset_line + 3 ] = vertexIndex + 3;
|
|
|
|
-
|
|
|
|
- lineArray[ offset_line + 4 ] = vertexIndex + 1;
|
|
|
|
- lineArray[ offset_line + 5 ] = vertexIndex + 2;
|
|
|
|
-
|
|
|
|
- lineArray[ offset_line + 6 ] = vertexIndex + 2;
|
|
|
|
- lineArray[ offset_line + 7 ] = vertexIndex + 3;
|
|
|
|
-
|
|
|
|
- offset_line += 8;
|
|
|
|
-
|
|
|
|
- vertexIndex += 4;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, geometryGroup.__webglFaceBuffer );
|
|
_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, geometryGroup.__webglFaceBuffer );
|
|
_gl.bufferData( _gl.ELEMENT_ARRAY_BUFFER, faceArray, hint );
|
|
_gl.bufferData( _gl.ELEMENT_ARRAY_BUFFER, faceArray, hint );
|
|
|
|
|
|
@@ -2655,19 +2297,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- face = obj_faces[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom ] = customAttribute.value[ face.a ];
|
|
|
|
- customAttribute.array[ offset_custom + 1 ] = customAttribute.value[ face.b ];
|
|
|
|
- customAttribute.array[ offset_custom + 2 ] = customAttribute.value[ face.c ];
|
|
|
|
- customAttribute.array[ offset_custom + 3 ] = customAttribute.value[ face.d ];
|
|
|
|
-
|
|
|
|
- offset_custom += 4;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
} else if ( customAttribute.boundTo === "faces" ) {
|
|
} else if ( customAttribute.boundTo === "faces" ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
@@ -2682,19 +2311,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- value = customAttribute.value[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom ] = value;
|
|
|
|
- customAttribute.array[ offset_custom + 1 ] = value;
|
|
|
|
- customAttribute.array[ offset_custom + 2 ] = value;
|
|
|
|
- customAttribute.array[ offset_custom + 3 ] = value;
|
|
|
|
-
|
|
|
|
- offset_custom += 4;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
} else if ( customAttribute.size === 2 ) {
|
|
} else if ( customAttribute.size === 2 ) {
|
|
@@ -2722,31 +2338,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- face = obj_faces[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- v1 = customAttribute.value[ face.a ];
|
|
|
|
- v2 = customAttribute.value[ face.b ];
|
|
|
|
- v3 = customAttribute.value[ face.c ];
|
|
|
|
- v4 = customAttribute.value[ face.d ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom ] = v1.x;
|
|
|
|
- customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 2 ] = v2.x;
|
|
|
|
- customAttribute.array[ offset_custom + 3 ] = v2.y;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 4 ] = v3.x;
|
|
|
|
- customAttribute.array[ offset_custom + 5 ] = v3.y;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 6 ] = v4.x;
|
|
|
|
- customAttribute.array[ offset_custom + 7 ] = v4.y;
|
|
|
|
-
|
|
|
|
- offset_custom += 8;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
} else if ( customAttribute.boundTo === "faces" ) {
|
|
} else if ( customAttribute.boundTo === "faces" ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
@@ -2770,31 +2361,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- value = customAttribute.value[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- v1 = value;
|
|
|
|
- v2 = value;
|
|
|
|
- v3 = value;
|
|
|
|
- v4 = value;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom ] = v1.x;
|
|
|
|
- customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 2 ] = v2.x;
|
|
|
|
- customAttribute.array[ offset_custom + 3 ] = v2.y;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 4 ] = v3.x;
|
|
|
|
- customAttribute.array[ offset_custom + 5 ] = v3.y;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 6 ] = v4.x;
|
|
|
|
- customAttribute.array[ offset_custom + 7 ] = v4.y;
|
|
|
|
-
|
|
|
|
- offset_custom += 8;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
} else if ( customAttribute.size === 3 ) {
|
|
} else if ( customAttribute.size === 3 ) {
|
|
@@ -2837,35 +2403,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- face = obj_faces[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- v1 = customAttribute.value[ face.a ];
|
|
|
|
- v2 = customAttribute.value[ face.b ];
|
|
|
|
- v3 = customAttribute.value[ face.c ];
|
|
|
|
- v4 = customAttribute.value[ face.d ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom ] = v1[ pp[ 0 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 1 ] = v1[ pp[ 1 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 2 ] = v1[ pp[ 2 ] ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 3 ] = v2[ pp[ 0 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 4 ] = v2[ pp[ 1 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 5 ] = v2[ pp[ 2 ] ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 6 ] = v3[ pp[ 0 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 7 ] = v3[ pp[ 1 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 8 ] = v3[ pp[ 2 ] ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 9 ] = v4[ pp[ 0 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 10 ] = v4[ pp[ 1 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 11 ] = v4[ pp[ 2 ] ];
|
|
|
|
-
|
|
|
|
- offset_custom += 12;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
} else if ( customAttribute.boundTo === "faces" ) {
|
|
} else if ( customAttribute.boundTo === "faces" ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
@@ -2892,35 +2429,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- value = customAttribute.value[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- v1 = value;
|
|
|
|
- v2 = value;
|
|
|
|
- v3 = value;
|
|
|
|
- v4 = value;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom ] = v1[ pp[ 0 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 1 ] = v1[ pp[ 1 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 2 ] = v1[ pp[ 2 ] ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 3 ] = v2[ pp[ 0 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 4 ] = v2[ pp[ 1 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 5 ] = v2[ pp[ 2 ] ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 6 ] = v3[ pp[ 0 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 7 ] = v3[ pp[ 1 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 8 ] = v3[ pp[ 2 ] ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 9 ] = v4[ pp[ 0 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 10 ] = v4[ pp[ 1 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 11 ] = v4[ pp[ 2 ] ];
|
|
|
|
-
|
|
|
|
- offset_custom += 12;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
} else if ( customAttribute.boundTo === "faceVertices" ) {
|
|
} else if ( customAttribute.boundTo === "faceVertices" ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
@@ -2947,35 +2455,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- value = customAttribute.value[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- v1 = value[ 0 ];
|
|
|
|
- v2 = value[ 1 ];
|
|
|
|
- v3 = value[ 2 ];
|
|
|
|
- v4 = value[ 3 ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom ] = v1[ pp[ 0 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 1 ] = v1[ pp[ 1 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 2 ] = v1[ pp[ 2 ] ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 3 ] = v2[ pp[ 0 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 4 ] = v2[ pp[ 1 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 5 ] = v2[ pp[ 2 ] ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 6 ] = v3[ pp[ 0 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 7 ] = v3[ pp[ 1 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 8 ] = v3[ pp[ 2 ] ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 9 ] = v4[ pp[ 0 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 10 ] = v4[ pp[ 1 ] ];
|
|
|
|
- customAttribute.array[ offset_custom + 11 ] = v4[ pp[ 2 ] ];
|
|
|
|
-
|
|
|
|
- offset_custom += 12;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
} else if ( customAttribute.size === 4 ) {
|
|
} else if ( customAttribute.size === 4 ) {
|
|
@@ -3009,39 +2488,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- face = obj_faces[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- v1 = customAttribute.value[ face.a ];
|
|
|
|
- v2 = customAttribute.value[ face.b ];
|
|
|
|
- v3 = customAttribute.value[ face.c ];
|
|
|
|
- v4 = customAttribute.value[ face.d ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom ] = v1.x;
|
|
|
|
- customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
|
|
- customAttribute.array[ offset_custom + 2 ] = v1.z;
|
|
|
|
- customAttribute.array[ offset_custom + 3 ] = v1.w;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 4 ] = v2.x;
|
|
|
|
- customAttribute.array[ offset_custom + 5 ] = v2.y;
|
|
|
|
- customAttribute.array[ offset_custom + 6 ] = v2.z;
|
|
|
|
- customAttribute.array[ offset_custom + 7 ] = v2.w;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 8 ] = v3.x;
|
|
|
|
- customAttribute.array[ offset_custom + 9 ] = v3.y;
|
|
|
|
- customAttribute.array[ offset_custom + 10 ] = v3.z;
|
|
|
|
- customAttribute.array[ offset_custom + 11 ] = v3.w;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 12 ] = v4.x;
|
|
|
|
- customAttribute.array[ offset_custom + 13 ] = v4.y;
|
|
|
|
- customAttribute.array[ offset_custom + 14 ] = v4.z;
|
|
|
|
- customAttribute.array[ offset_custom + 15 ] = v4.w;
|
|
|
|
-
|
|
|
|
- offset_custom += 16;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
} else if ( customAttribute.boundTo === "faces" ) {
|
|
} else if ( customAttribute.boundTo === "faces" ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
@@ -3071,39 +2517,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- value = customAttribute.value[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- v1 = value;
|
|
|
|
- v2 = value;
|
|
|
|
- v3 = value;
|
|
|
|
- v4 = value;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom ] = v1.x;
|
|
|
|
- customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
|
|
- customAttribute.array[ offset_custom + 2 ] = v1.z;
|
|
|
|
- customAttribute.array[ offset_custom + 3 ] = v1.w;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 4 ] = v2.x;
|
|
|
|
- customAttribute.array[ offset_custom + 5 ] = v2.y;
|
|
|
|
- customAttribute.array[ offset_custom + 6 ] = v2.z;
|
|
|
|
- customAttribute.array[ offset_custom + 7 ] = v2.w;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 8 ] = v3.x;
|
|
|
|
- customAttribute.array[ offset_custom + 9 ] = v3.y;
|
|
|
|
- customAttribute.array[ offset_custom + 10 ] = v3.z;
|
|
|
|
- customAttribute.array[ offset_custom + 11 ] = v3.w;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 12 ] = v4.x;
|
|
|
|
- customAttribute.array[ offset_custom + 13 ] = v4.y;
|
|
|
|
- customAttribute.array[ offset_custom + 14 ] = v4.z;
|
|
|
|
- customAttribute.array[ offset_custom + 15 ] = v4.w;
|
|
|
|
-
|
|
|
|
- offset_custom += 16;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
} else if ( customAttribute.boundTo === "faceVertices" ) {
|
|
} else if ( customAttribute.boundTo === "faceVertices" ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
@@ -3133,39 +2546,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- for ( f = 0, fl = chunk_faces4.length; f < fl; f ++ ) {
|
|
|
|
-
|
|
|
|
- value = customAttribute.value[ chunk_faces4[ f ] ];
|
|
|
|
-
|
|
|
|
- v1 = value[ 0 ];
|
|
|
|
- v2 = value[ 1 ];
|
|
|
|
- v3 = value[ 2 ];
|
|
|
|
- v4 = value[ 3 ];
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom ] = v1.x;
|
|
|
|
- customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
|
|
- customAttribute.array[ offset_custom + 2 ] = v1.z;
|
|
|
|
- customAttribute.array[ offset_custom + 3 ] = v1.w;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 4 ] = v2.x;
|
|
|
|
- customAttribute.array[ offset_custom + 5 ] = v2.y;
|
|
|
|
- customAttribute.array[ offset_custom + 6 ] = v2.z;
|
|
|
|
- customAttribute.array[ offset_custom + 7 ] = v2.w;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 8 ] = v3.x;
|
|
|
|
- customAttribute.array[ offset_custom + 9 ] = v3.y;
|
|
|
|
- customAttribute.array[ offset_custom + 10 ] = v3.z;
|
|
|
|
- customAttribute.array[ offset_custom + 11 ] = v3.w;
|
|
|
|
-
|
|
|
|
- customAttribute.array[ offset_custom + 12 ] = v4.x;
|
|
|
|
- customAttribute.array[ offset_custom + 13 ] = v4.y;
|
|
|
|
- customAttribute.array[ offset_custom + 14 ] = v4.z;
|
|
|
|
- customAttribute.array[ offset_custom + 15 ] = v4.w;
|
|
|
|
-
|
|
|
|
- offset_custom += 16;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
@@ -4367,11 +3747,11 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( geometry.geometryGroups[ groupHash ] === undefined ) {
|
|
if ( geometry.geometryGroups[ groupHash ] === undefined ) {
|
|
|
|
|
|
- geometry.geometryGroups[ groupHash ] = { 'faces3': [], 'faces4': [], 'materialIndex': materialIndex, 'vertices': 0, 'numMorphTargets': numMorphTargets, 'numMorphNormals': numMorphNormals };
|
|
|
|
|
|
+ geometry.geometryGroups[ groupHash ] = { 'faces3': [], 'materialIndex': materialIndex, 'vertices': 0, 'numMorphTargets': numMorphTargets, 'numMorphNormals': numMorphNormals };
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- vertices = face instanceof THREE.Face3 ? 3 : 4;
|
|
|
|
|
|
+ vertices = 3;
|
|
|
|
|
|
if ( geometry.geometryGroups[ groupHash ].vertices + vertices > 65535 ) {
|
|
if ( geometry.geometryGroups[ groupHash ].vertices + vertices > 65535 ) {
|
|
|
|
|
|
@@ -4380,22 +3760,13 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( geometry.geometryGroups[ groupHash ] === undefined ) {
|
|
if ( geometry.geometryGroups[ groupHash ] === undefined ) {
|
|
|
|
|
|
- geometry.geometryGroups[ groupHash ] = { 'faces3': [], 'faces4': [], 'materialIndex': materialIndex, 'vertices': 0, 'numMorphTargets': numMorphTargets, 'numMorphNormals': numMorphNormals };
|
|
|
|
|
|
+ geometry.geometryGroups[ groupHash ] = { 'faces3': [], 'materialIndex': materialIndex, 'vertices': 0, 'numMorphTargets': numMorphTargets, 'numMorphNormals': numMorphNormals };
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- if ( face instanceof THREE.Face3 ) {
|
|
|
|
-
|
|
|
|
- geometry.geometryGroups[ groupHash ].faces3.push( f );
|
|
|
|
-
|
|
|
|
- } else {
|
|
|
|
-
|
|
|
|
- geometry.geometryGroups[ groupHash ].faces4.push( f );
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ geometry.geometryGroups[ groupHash ].faces3.push( f );
|
|
geometry.geometryGroups[ groupHash ].vertices += vertices;
|
|
geometry.geometryGroups[ groupHash ].vertices += vertices;
|
|
|
|
|
|
}
|
|
}
|