2013-02-17 44 views
4

我基本上提出了同样的问题 - https://github.com/mrdoob/three.js/issues/1883 - 使用三个j我可以导入基本关键帧动画的collada场景,并且很容易地回放这些动画,但是想从一个场景复制动画数据反对另一个。三js - 你可以克隆从collada文件加载的动画吗?

这可能吗?

在运行时,我注意到collada.animations对象包含一个--collada.animations [n] .node - 它似乎是一个THREEJS.Mesh对象,我一直试图在运行时替换(to徒劳无功)。我也注意到,collada.animations [N] .hierarchy [n]的对象,也包含了像这样节点属性:

cameras: Array[0] 
channels: Array[9] 
controllers: Array[0] 
endTime: 2.5 
geometries: Array[1] 
id: "name_of_exported_object" 
keys: Array[2] 
matrix: THREE.Matrix4 
name: "name_of_exported_object" 
nodes: Array[0] 
sid: null 
sids: Array[9] 
startTime: 0 
transforms: Array[5] 
type: "NODE" 

这个对象出现,通过。名称和.ID,被捆绑到我用3D软件包(Blender)创建的“name_of_exported_object”...我不太清楚这个节点对象是用于什么的。如何充分地改变collada.animation [n]对象以在动态创建的场景对象上使用相同的动画?

+0

您是否找到了解决办法?我面临同样的问题 – ThisIsSparta 2013-12-12 10:03:08

+0

不,不是我想要的。我有一个非常简单的用例,我可以通过使用Tween JS(https://github.com/sole/tween.js/)来解决这个问题。不太清楚你的想法,但如果我想尝试复制一个复杂的动画,我首先看看这个例子 - http://threejs.org/examples/#webgl_shadowmap – Charlie 2013-12-13 12:52:38

+0

好吧,谢谢你的链接I将尝试使其适应collada模型并查看它是否有效。 – ThisIsSparta 2013-12-13 13:37:21

回答

0

因为这个问题是几年前写的,所以three.js动画系统已经被重写了。您不再需要“克隆”动画,只需使用不同的混合器将它们应用于其他对象即可。例如:

var clip; // some THREE.AnimationClip instance. 

var mixer1 = new THREE.AnimationMixer(object1); 
var mixer2 = new THREE.AnimationMixer(object2); 

var action1 = mixer1.clipAction(clip); 
var action2 = mixer2.clipAction(clip); 

action1.play(); 
action2.play(); 

这是不是唯一的COLLADA,它适用于FBX,glTF,那three.js所支持动画任何其他格式。