提交 ae1bd4cb 编写于 作者: L Lewy Blue

directly calculate materia index buffer directly

上级 76f3be80
...@@ -717,7 +717,7 @@ ...@@ -717,7 +717,7 @@
var materialInfo = getMaterials( subNodes.LayerElementMaterial[ 0 ] ); var materialInfo = getMaterials( subNodes.LayerElementMaterial[ 0 ] );
console.log( materialInfo) // console.log( materialInfo)
} }
...@@ -897,7 +897,7 @@ ...@@ -897,7 +897,7 @@
if ( endOfFace ) { if ( endOfFace ) {
var face = new Face(); var face = new Face();
face.genTrianglesFromVertices( faceVertexBuffer ); face.genTrianglesFromVertices( faceVertexBuffer );
for ( var i = 2; i < faceLength; i ++ ) { for ( var i = 2; i < faceLength; i ++ ) {
...@@ -913,7 +913,7 @@ ...@@ -913,7 +913,7 @@
vertexBuffer[ vertexPositionIndexes[ i * 3 ] ], vertexBuffer[ vertexPositionIndexes[ i * 3 ] ],
vertexBuffer[ vertexPositionIndexes[ i * 3 + 1 ] ], vertexBuffer[ vertexPositionIndexes[ i * 3 + 1 ] ],
vertexBuffer[ vertexPositionIndexes[ i * 3 + 2 ] ] vertexBuffer[ vertexPositionIndexes[ i * 3 + 2 ] ]
); );
} }
...@@ -988,20 +988,19 @@ ...@@ -988,20 +988,19 @@
} }
if ( materialInfo !== undefined ) { if( materialInfo && materialInfo.mappingType !== 'AllSame' ) {
var materials = getData( polygonVertexIndex, polygonIndex, vertexIndex, materialInfo ); var materi = getData( polygonVertexIndex, polygonIndex, vertexIndex, materialInfo );
console.log( materials) face.materialIndex = materi[ 0 ];
face.materialIndex = materials[ 0 ];
materialsB.push( materials[ 0 ] )
} else { var materialIndex = getData(polygonVertexIndex, polygonIndex, vertexIndex, materialInfo)[0];
// if the mapping type is 'AllSame' then materialInfo is undefined and all faces use index 0 for (var i = 2; i < faceLength; i++) {
face.materialIndex = 0;
materialsB.push( 0 );
materialsB.push(materialIndex, materialIndex, materialIndex);
}
} }
geometry.faces.push( face ); geometry.faces.push( face );
...@@ -1024,16 +1023,16 @@ ...@@ -1024,16 +1023,16 @@
// console.log(geometry) // console.log(geometry)
// console.log( bufferInfo.materialIndexBuffer ); // console.log( 'original', bufferInfo.materialIndexBuffer );
// console.log( materialsB ); // console.log( 'new', materialsB );
var is_same = (bufferInfo.materialIndexBuffer.length == materialsB.length) && bufferInfo.materialIndexBuffer.every( function ( element, index ) { // var is_same = (bufferInfo.materialIndexBuffer.length == materialsB.length) && bufferInfo.materialIndexBuffer.every( function ( element, index ) {
return element === materialsB[ index ]; // return element === materialsB[ index ];
} ); // } );
console.log( is_same ); // console.log( is_same );
var geo = new THREE.BufferGeometry(); var geo = new THREE.BufferGeometry();
...@@ -1081,7 +1080,7 @@ ...@@ -1081,7 +1080,7 @@
if ( materialInfo && materialInfo.mappingType !== 'AllSame' ) { if ( materialInfo && materialInfo.mappingType !== 'AllSame' ) {
// Convert the material indices of each vertex into rendering groups on the geometry. // Convert the material indices of each vertex into rendering groups on the geometry.
var materialIndexBuffer = bufferInfo.materialIndexBuffer; var materialIndexBuffer = materialsB;
var prevMaterialIndex = materialIndexBuffer[ 0 ]; var prevMaterialIndex = materialIndexBuffer[ 0 ];
var startIndex = 0; var startIndex = 0;
...@@ -3150,7 +3149,7 @@ ...@@ -3150,7 +3149,7 @@
for ( var i = 0, l = triangles.length; i < l; ++ i ) { for ( var i = 0, l = triangles.length; i < l; ++ i ) {
triangles[ i ].flattenToBuffers( vertexBuffer, normalBuffer, uvBuffers, colorBuffer, skinIndexBuffer, skinWeightBuffer ); triangles[ i ].flattenToBuffers( vertexBuffer, normalBuffer, uvBuffers, colorBuffer, skinIndexBuffer, skinWeightBuffer );
append( materialIndexBuffer, [ materialIndex, materialIndex, materialIndex ] ); append( materialIndexBuffer, [ materialIndex, materialIndex, materialIndex ] );
} }
...@@ -3195,11 +3194,11 @@ ...@@ -3195,11 +3194,11 @@
return { return {
// vertexBuffer: vertexBuffer, // vertexBuffer: vertexBuffer,
// normalBuffer: normalBuffer, // normalBuffer: normalBuffer,
uvBuffers: uvBuffers, // uvBuffers: uvBuffers,
// colorBuffer: colorBuffer, // colorBuffer: colorBuffer,
skinIndexBuffer: skinIndexBuffer, skinIndexBuffer: skinIndexBuffer,
skinWeightBuffer: skinWeightBuffer, skinWeightBuffer: skinWeightBuffer,
materialIndexBuffer: materialIndexBuffer // materialIndexBuffer: materialIndexBuffer
}; };
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册