提交 829d9695 编写于 作者: M Mr.doob

ColladaLoader: rudimentary LineStrips support.

上级 177ffc7c
......@@ -1225,16 +1225,18 @@ THREE.ColladaLoader = function () {
} else {
mesh = new THREE.Mesh( geom, material );
// mesh.geom.name = geometry.id;
if ( geom.isLineStrip === true ) {
mesh = new THREE.Line( geom );
} else {
mesh = new THREE.Mesh( geom, material );
}
}
// N.B.: TP says this is not a great default behavior. It's a nice
// optimization to flatten the hierarchy but this should be done
// only if requested by the user via a flag. For now I undid it
// and fixed the character animation example that uses it
// node.geometries.length > 1 ? obj.add( mesh ) : obj = mesh;
obj.add(mesh);
}
......@@ -2754,13 +2756,11 @@ THREE.ColladaLoader = function () {
};
Mesh.prototype.parse = function( element ) {
Mesh.prototype.parse = function ( element ) {
this.primitives = [];
var i, j;
for ( i = 0; i < element.childNodes.length; i ++ ) {
for ( var i = 0; i < element.childNodes.length; i ++ ) {
var child = element.childNodes[ i ];
......@@ -2776,6 +2776,11 @@ THREE.ColladaLoader = function () {
this.vertices = ( new Vertices() ).parse( child );
break;
case 'linestrips':
this.primitives.push( ( new LineStrips().parse( child ) ) );
break;
case 'triangles':
this.primitives.push( ( new Triangles().parse( child ) ) );
......@@ -2802,13 +2807,13 @@ THREE.ColladaLoader = function () {
var vertexData = sources[ this.vertices.input['POSITION'].source ].data;
for ( i = 0; i < vertexData.length; i += 3 ) {
for ( var i = 0; i < vertexData.length; i += 3 ) {
this.geometry3js.vertices.push( getConvertedVec3( vertexData, i ).clone() );
}
for ( i = 0; i < this.primitives.length; i ++ ) {
for ( var i = 0; i < this.primitives.length; i ++ ) {
var primitive = this.primitives[ i ];
primitive.setVertices( this.vertices );
......@@ -2831,7 +2836,16 @@ THREE.ColladaLoader = function () {
};
Mesh.prototype.handlePrimitive = function( primitive, geom ) {
Mesh.prototype.handlePrimitive = function ( primitive, geom ) {
if ( primitive instanceof LineStrips ) {
// TODO: Handle indices. Maybe easier with BufferGeometry?
geom.isLineStrip = true;
return;
}
var j, k, pList = primitive.p, inputs = primitive.inputs;
var input, index, idx32;
......@@ -3083,6 +3097,7 @@ THREE.ColladaLoader = function () {
i += maxOffset * vcount;
}
}
};
......@@ -3164,6 +3179,16 @@ THREE.ColladaLoader = function () {
Polylist.prototype = Object.create( Polygons.prototype );
function LineStrips() {
Polygons.call( this );
this.vcount = 1;
};
LineStrips.prototype = Object.create( Polygons.prototype );
function Triangles () {
Polygons.call( this );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册