我基本上问的问题与这里发现的问题相同 - https://github.com/mrdoob/three.js/issues/1883 - 使用三个j我可以导入一个带有基本关键帧动画的collada场景,并且可以轻松地播放这些动画,但是想要复制动画数据从一个场景对象到另一个。
这可能吗?
在运行时我注意到collada.animations对象包含一个 - collada.animations [n] .node - 它似乎是一个THREEJS.Mesh对象,我一直试图在运行时替换它(没有果)。我还注意到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"
这个对象由.name和.id出现,与我用3D包(Blender)创建的“name_of_exported_object”相关联......我不太清楚这个节点对象的用途。如何更改collada.animation [n]对象以在动态创建的场景对象上使用相同的动画?
答案 0 :(得分:2)
由于这个问题是几年前写的,所以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支持动画的任何其他格式。