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

标签 javascript animation three.js collada

我基本上是在问与此处找到的问题相同的问题 - 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/

相关文章:

javascript - 删除 Json 键中的空格

Android导航组件: PopEnterAnim not working

ios - 为 CGAffineTransformMakeRotation Swift 设置旋转点

three.js,服装和形状键

three.js - Three.js 中 HDR 照明的场景范围 envmap

javascript - 在 JS 中工作的正则表达式在 PHP 中不起作用

javascript - 默认情况下,异步 Javascript XMLHttpRequest 不应该设置 XMLHttpRequest 请求 header 吗?

javascript - 同一 svg 上的 map + 图例

android - 使用动画更新布局

three.js - THREE.GLTFLoader -scope.manager 未定义