提交 384b8a12 编写于 作者: M Mr.doob

Added fromBufferGeometry() method to Geometry.

上级 9050f13a
......@@ -95,6 +95,92 @@ THREE.Geometry.prototype = {
},
fromBufferGeometry: function ( geometry ) {
var scope = this;
var attributes = geometry.attributes;
var indices = attributes.index !== undefined && attributes.index.array;
var normals = attributes.normal !== undefined && attributes.normal.array;
var colors = attributes.color !== undefined && attributes.color.array;
var uvs = attributes.uv !== undefined && attributes.uv.array;
var vertices = attributes.position.array;
var tempNormals = [];
var tempUVs = [];
for ( var i = 0, j = 0; i < vertices.length; i += 3, j += 2 ) {
scope.vertices.push( new THREE.Vector3( vertices[ i ], vertices[ i + 1 ], vertices[ i + 2 ] ) );
if ( normals !== undefined ) {
tempNormals.push( new THREE.Vector3( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] ) );
}
if ( colors !== undefined ) {
scope.colors.push( new THREE.Color( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] ) );
}
if ( uvs !== undefined ) {
tempUVs.push( new THREE.Vector2( uvs[ j ], uvs[ j + 1 ] ) );
}
}
var addFace = function ( a, b, c ) {
var vertexNormals = normals !== undefined ? [ tempNormals[ a ], tempNormals[ b ], tempNormals[ c ] ] : [];
var vertexColors = colors !== undefined ? [ scope.colors[ a ], scope.colors[ b ], scope.colors[ c ] ] : [];
scope.faces.push( new THREE.Face3( a, b, c, vertexNormals, vertexColors ) );
scope.faceVertexUvs[ 0 ].push( [ tempUVs[ a ], tempUVs[ b ], tempUVs[ c ] ] );
};
if ( indices !== undefined ) {
var indices = attributes.index.array;
for ( var i = 0; i < indices.length; i += 3 ) {
addFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );
}
} else {
for ( var i = 0; i < vertices.length / 3; i += 3 ) {
addFace( i, i + 1, i + 2 );
}
}
if ( geometry.boundingBox !== null ) {
this.boundingBox = geometry.boundingBox.clone();
}
if ( geometry.boundingSphere !== null ) {
this.boundingSphere = geometry.boundingSphere.clone();
}
return this;
},
center: function () {
this.computeBoundingBox();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册