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

ColladaLoader2: Fixed instance_* handling.

上级 a9c17b52
......@@ -569,6 +569,10 @@ THREE.ColladaLoader.prototype = {
var data = {
name: xml.getAttribute( 'name' ),
matrix: new THREE.Matrix4(),
instanceCameras: [],
instanceLights: [],
instanceGeometries: [],
instanceNodes: [],
nodes: []
};
......@@ -581,19 +585,19 @@ THREE.ColladaLoader.prototype = {
switch ( child.nodeName ) {
case 'instance_camera':
data.camera = parseId( child.getAttribute( 'url' ) );
data.instanceCameras.push( parseId( child.getAttribute( 'url' ) ) );
break;
case 'instance_light':
data.light = parseId( child.getAttribute( 'url' ) );
data.instanceLights.push( parseId( child.getAttribute( 'url' ) ) );
break;
case 'instance_geometry':
data.geometry = parseId( child.getAttribute( 'url' ) );
data.instanceGeometries.push( parseId( child.getAttribute( 'url' ) ) );
break;
case 'instance_node':
data.nodes.push( parseId( child.getAttribute( 'url' ) ) );
data.instanceNodes.push( parseId( child.getAttribute( 'url' ) ) );
break;
case 'matrix':
......@@ -646,36 +650,47 @@ THREE.ColladaLoader.prototype = {
function buildNode( data ) {
var object;
var group = new THREE.Group();
group.name = data.name;
data.matrix.decompose( group.position, group.quaternion, group.scale );
if ( data.camera !== undefined ) {
var instanceCameras = data.instanceCameras;
var instanceLights = data.instanceLights;
var instanceGeometries = data.instanceGeometries;
var instanceNodes = data.instanceNodes;
var nodes = data.nodes;
object = getCamera( data.camera ).clone();
for ( var i = 0, l = instanceCameras.length; i < l; i ++ ) {
} else if ( data.light !== undefined) {
group.add( getCamera( instanceCameras[ i ] ).clone() );
object = getLight( data.light ).clone();
}
} else if ( data.geometry !== undefined ) {
for ( var i = 0, l = instanceLights.length; i < l; i ++ ) {
object = getGeometry( data.geometry ).clone();
group.add( getLight( instanceLights[ i ] ).clone() );
}
} else {
for ( var i = 0, l = instanceGeometries.length; i < l; i ++ ) {
object = new THREE.Group();
group.add( getGeometry( instanceGeometries[ i ] ).clone() );
}
object.name = data.name;
data.matrix.decompose( object.position, object.quaternion, object.scale );
for ( var i = 0, l = instanceNodes.length; i < l; i ++ ) {
for ( var i = 0, l = data.nodes.length; i < l; i ++ ) {
group.add( getNode( instanceNodes[ i ] ).clone() );
object.add( getNode( data.nodes[ i ] ).clone() );
}
for ( var i = 0, l = nodes.length; i < l; i ++ ) {
group.add( getNode( nodes[ i ] ) );
}
return object;
return group;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册