提交 59eca2c8 编写于 作者: M Mr.doob 提交者: GitHub

Merge pull request #12276 from sneha-belkhale/dev

loading of multiple uv coordinates
......@@ -730,7 +730,14 @@
if ( subNodes.LayerElementUV ) {
var uvInfo = getUVs( subNodes.LayerElementUV[ 0 ] );
var uvInfo = [];
var i = 0;
while ( subNodes.LayerElementUV[ i ] ){
uvInfo.push(getUVs( subNodes.LayerElementUV[ i ] ));
i++;
}
}
......@@ -873,7 +880,12 @@
if ( uvInfo ) {
vertex.uv.fromArray( getData( polygonVertexIndex, polygonIndex, vertexIndex, uvInfo ) );
for ( var i = 0 ; i < uvInfo.length; i++ ) {
uvTemp = new THREE.Vector2();
vertex.uv.push( uvTemp.fromArray( getData( polygonVertexIndex, polygonIndex, vertexIndex, uvInfo[i] ) ) );
}
}
......@@ -927,11 +939,23 @@
geo.addAttribute( 'normal', new THREE.Float32BufferAttribute( bufferInfo.normalBuffer, 3 ) );
}
if ( bufferInfo.uvBuffer.length > 0 ) {
if ( bufferInfo.uvBuffers.length > 0 ) {
for ( var i = 0; i < bufferInfo.uvBuffers.length; i++ ) {
geo.addAttribute( 'uv', new THREE.Float32BufferAttribute( bufferInfo.uvBuffer, 2 ) );
var name = 'uv' + ( i + 1 ).toString();
if ( i == 0 ) {
name = 'uv';
}
geo.addAttribute( name, new THREE.Float32BufferAttribute( bufferInfo.uvBuffers[i], 2 ) );
}
}
if ( subNodes.LayerElementColor ) {
geo.addAttribute( 'color', new THREE.Float32BufferAttribute( bufferInfo.colorBuffer, 3 ) );
......@@ -3655,10 +3679,10 @@
this.normal = new THREE.Vector3();
/**
* UV coordinates of the vertex.
* @type {THREE.Vector2}
* Array of UV coordinates of the vertex.
* @type {Array of THREE.Vector2}
*/
this.uv = new THREE.Vector2();
this.uv = [];
/**
* Color of the vertex
......@@ -3696,11 +3720,15 @@
},
flattenToBuffers: function ( vertexBuffer, normalBuffer, uvBuffer, colorBuffer, skinIndexBuffer, skinWeightBuffer ) {
flattenToBuffers: function ( vertexBuffer, normalBuffer, uvBuffers, colorBuffer, skinIndexBuffer, skinWeightBuffer ) {
this.position.toArray( vertexBuffer, vertexBuffer.length );
this.normal.toArray( normalBuffer, normalBuffer.length );
this.uv.toArray( uvBuffer, uvBuffer.length );
for ( var i = 0; i < this.uv.length; i++ ) {
this.uv[ i ].toArray( uvBuffers[ i ], uvBuffers[ i ].length );
}
this.color.toArray( colorBuffer, colorBuffer.length );
this.skinIndices.toArray( skinIndexBuffer, skinIndexBuffer.length );
this.skinWeights.toArray( skinWeightBuffer, skinWeightBuffer.length );
......@@ -3737,14 +3765,13 @@
},
flattenToBuffers: function ( vertexBuffer, normalBuffer, uvBuffer, colorBuffer, skinIndexBuffer, skinWeightBuffer ) {
flattenToBuffers: function ( vertexBuffer, normalBuffer, uvBuffers, colorBuffer, skinIndexBuffer, skinWeightBuffer ) {
var vertices = this.vertices;
for ( var i = 0, l = vertices.length; i < l; ++ i ) {
vertices[ i ].flattenToBuffers( vertexBuffer, normalBuffer, uvBuffer, colorBuffer, skinIndexBuffer, skinWeightBuffer );
vertices[ i ].flattenToBuffers( vertexBuffer, normalBuffer, uvBuffers, colorBuffer, skinIndexBuffer, skinWeightBuffer );
}
}
......@@ -3796,14 +3823,14 @@
},
flattenToBuffers: function ( vertexBuffer, normalBuffer, uvBuffer, colorBuffer, skinIndexBuffer, skinWeightBuffer, materialIndexBuffer ) {
flattenToBuffers: function ( vertexBuffer, normalBuffer, uvBuffers, colorBuffer, skinIndexBuffer, skinWeightBuffer, materialIndexBuffer ) {
var triangles = this.triangles;
var materialIndex = this.materialIndex;
for ( var i = 0, l = triangles.length; i < l; ++ i ) {
triangles[ i ].flattenToBuffers( vertexBuffer, normalBuffer, uvBuffer, colorBuffer, skinIndexBuffer, skinWeightBuffer );
triangles[ i ].flattenToBuffers( vertexBuffer, normalBuffer, uvBuffers, colorBuffer, skinIndexBuffer, skinWeightBuffer );
append( materialIndexBuffer, [ materialIndex, materialIndex, materialIndex ] );
}
......@@ -3818,7 +3845,7 @@
function Geometry() {
/**
* @type {{triangles: {vertices: {position: THREE.Vector3, normal: THREE.Vector3, uv: THREE.Vector2, skinIndices: THREE.Vector4, skinWeights: THREE.Vector4}[]}[], materialIndex: number}[]}
* @type {{triangles: {vertices: {position: THREE.Vector3, normal: THREE.Vector3, uv: Array of THREE.Vector2, skinIndices: THREE.Vector4, skinWeights: THREE.Vector4}[]}[], materialIndex: number}[]}
*/
this.faces = [];
......@@ -3832,31 +3859,34 @@
Object.assign( Geometry.prototype, {
/**
* @returns {{vertexBuffer: number[], normalBuffer: number[], uvBuffer: number[], skinIndexBuffer: number[], skinWeightBuffer: number[], materialIndexBuffer: number[]}}
* @returns {{vertexBuffer: number[], normalBuffer: number[], uvBuffers: Array of number[], skinIndexBuffer: number[], skinWeightBuffer: number[], materialIndexBuffer: number[]}}
*/
flattenToBuffers: function () {
flattenToBuffers: function () {
var vertexBuffer = [];
var normalBuffer = [];
var uvBuffer = [];
var uvBuffers = [];
var colorBuffer = [];
var skinIndexBuffer = [];
var skinWeightBuffer = [];
var materialIndexBuffer = [];
var faces = this.faces;
for ( var i = 0, l = faces.length; i < l; ++ i ) {
for ( var i = 0; i < faces[0].triangles[0].vertices[0].uv.length; i++ ) {
uvBuffers.push([]);
faces[ i ].flattenToBuffers( vertexBuffer, normalBuffer, uvBuffer, colorBuffer, skinIndexBuffer, skinWeightBuffer, materialIndexBuffer );
}
for ( var i = 0, l = faces.length; i < l; ++ i ) {
faces[ i ].flattenToBuffers( vertexBuffer, normalBuffer, uvBuffers, colorBuffer, skinIndexBuffer, skinWeightBuffer, materialIndexBuffer );
}
return {
vertexBuffer: vertexBuffer,
normalBuffer: normalBuffer,
uvBuffer: uvBuffer,
uvBuffers: uvBuffers,
colorBuffer: colorBuffer,
skinIndexBuffer: skinIndexBuffer,
skinWeightBuffer: skinWeightBuffer,
......@@ -3864,8 +3894,7 @@
};
}
} );
});
function TextParser() {}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册