gpt4 book ai didi

javascript - 三个 js - 你能克隆从 collada 文件加载的动画吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:19:28 24 4
gpt4 key购买 nike

我基本上是在问与此处找到的问题相同的问题 - https://github.com/mrdoob/three.js/issues/1883 - 使用三个 js,我可以导入一个带有基本关键帧动画的 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] 对象以在动态创建的场景对象上使用相同的动画?

最佳答案

由于这道题是几年前写的,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 支持动画的任何其他格式。

关于javascript - 三个 js - 你能克隆从 collada 文件加载的动画吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14922462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com