将变形目标从 Blender 导出到 Three.js

Posted

技术标签:

【中文标题】将变形目标从 Blender 导出到 Three.js【英文标题】:Exporting morph targets from Blender to Three.js 【发布时间】:2015-03-27 16:18:57 【问题描述】:

这是我想要实现的一个示例:http://threejs.org/examples/#webgl_animation_skinning_morph

我正在使用 Three.js r69 中的导出器将 3D 模型从 Blender (v 2.73) 导出到 Three.js (r70)。

该模型具有骨骼动画,以及许多具有不同面部表情(睁眼/闭眼等)的 Shape 键。

将骨骼动画导出到 Three.js 工作正常,但我不知道如何正确导出变形目标。

导出器有一个“变形动画”复选框,但启用它会产生一个非常大的文件,其中时间轴的每一帧都会产生一个变形目标。 (时间轴有骨骼动画)。

骑士模型 (http://threejs.org/examples/models/skinned/knight.js) 的 json 文件有 4 个变形目标,每个面部表情一个。这几乎正​​是我想要的,但我无法重现它。

任何关于如何将搅拌机文件/搅拌机设置为 three.js 工作流程的提示将不胜感激。

【问题讨论】:

新 (r70) 导出器的动画逻辑正在审核中。我建议尝试使用较旧的导出器 (r69),看看是否会达到您的预期。如果不是,则可能是 Blender 中的设置问题,但对于初学者,我想看看它是否(或不是)导出器的问题。 我已经在使用 r69 导出器了。我一开始尝试了 r70,但我无法让骨骼动画工作。我很确定这是搅拌机设置问题,但我对 3D 软件一点经验都没有。 好的,仅供参考,骨骼动画逻辑刚刚为即将到来的 r71 重写。 【参考方案1】:

只是为了结束这个话题:

经过反复试验,我们最终在 Blender 中为要导出的每个变形目标(形状键)使用了一个关键帧。变形目标对该帧的影响为 1(最大)。所以对于 3 个变形目标,我们有 4 帧(3 + 默认)。

骨骼动画不必在时间线上就可以正确导出。

这适用于 r69 导出器,我们没有尝试任何较新的版本。

【讨论】:

【参考方案2】:

COLLADA 文件格式支持 Shape-Keys(在此处称为变形键)。 如果您的平台有一个功能齐全的 COLLADA 导入器,您应该能够导入和使用它们而无需额外的工作。

您可以通过将带有 Shape-Keys 的搅拌机模型导出到 COLLADA 文件并将该 COLLADA 文件重新导入搅拌机来证明这一点。所有形状键和权重仍然存在:)

【讨论】:

以上是关于将变形目标从 Blender 导出到 Three.js的主要内容,如果未能解决你的问题,请参考以下文章

将 Blender 粒子系统头发导出到 Three.JS

从 Blender 到 THREE.js:导出器的 BufferGeometry 和动画问题

无法将从 Blender 导出的对象加载到 three.js 中?

将动画模型从 Maya 导入到 Blender,然后再导入到 three.js 时出现问题?

Blender 导出到 JSON 以获取 THREE.js 缺少的材料

如何保持从 Blender 导出的 Three.js JSON 文件的向后兼容性