【发布时间】:2014-06-09 11:43:24
【问题描述】:
我有一个包含一堆对象的 Blender 场景。其中一些对象有骨骼动画,但大多数没有。我正在尝试将场景导入 Three.js,包括正确对象上的动画。以下是我遇到的问题的细分:
- Three.js 中的骨骼动画仅在使用 THREE.SkinnedMesh 时有效。
- 由于动画数据位于所有对象上,很难(如果不是不可能的话)确定动画链接到哪个对象,因此无法将这些网格加载为 THREE.SkinnedMesh。
- 即使可以确定动画所属的对象,THREE.SceneLoader 本身也不会将它们变成蒙皮网格,导致必须删除 SceneLoader 制作的那些对象并使用蒙皮网格重新手动创建它们。
我尝试通过手动从 Blender 中单独导出动画网格来做到这一点,因此骨骼动画数据仅在这些对象上,但这会引发这些对象的定位问题,因为动画对象的位置和旋转仅在从 Blender 导出的 scene.js 文件中可用。
- 有没有办法将 Blender 中的动画对象导出为 立即使用 SkinnedMeshes,同时保持场景的其余部分完好无损?
- 能否在 Three.js 中判断一个对象是否有动画?
更新
我意识到,因为无论如何我都是单独获取带有动画的对象,所以我可以循环遍历场景几何体以检查对象上是否有可用的动画,如果是这样,则为它创建一个 SkinnedMesh。但是定位问题仍然存在:Three.js 中的 (0,0,0) 位置和旋转将对象定位在场景的中心,而不是在其他点周围。我不确定这是什么意思,可能是 Blender 场景中心,但我认为这两个是一样的。
【问题讨论】:
标签: animation three.js blender