Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Animation Three.js导入混合器场景,包括动画_Animation_Three.js_Blender - Fatal编程技术网

Animation Three.js导入混合器场景,包括动画

Animation Three.js导入混合器场景,包括动画,animation,three.js,blender,Animation,Three.js,Blender,我有一个包含一堆对象的混合器场景。其中一些对象具有骨骼动画,但大多数对象没有。我正在尝试将场景导入到Three.js中,包括正确对象上的动画。以下是我遇到的问题的分类: Three.js中的骨骼动画仅在使用Three.SkinnedMesh时有效 由于动画数据位于所有对象上,因此很难(如果不是不可能的话)确定动画链接到的对象,因此不可能将这些网格作为3.SkinnedMesh加载 即使可以确定动画所属的对象,THREE.SceneLoader本身也不会将这些对象制作成SkinnedMesh,因

我有一个包含一堆对象的混合器场景。其中一些对象具有骨骼动画,但大多数对象没有。我正在尝试将场景导入到Three.js中,包括正确对象上的动画。以下是我遇到的问题的分类:

  • Three.js中的骨骼动画仅在使用Three.SkinnedMesh时有效
  • 由于动画数据位于所有对象上,因此很难(如果不是不可能的话)确定动画链接到的对象,因此不可能将这些网格作为3.SkinnedMesh加载
  • 即使可以确定动画所属的对象,THREE.SceneLoader本身也不会将这些对象制作成SkinnedMesh,因此必须删除SceneLoader制作的对象,并使用蒙皮网格再次手动创建它们
我尝试通过手动将动画网格从Blender中单独导出,以便骨骼动画数据仅在这些对象上,但这会导致这些对象的定位问题,因为动画对象的位置和旋转仅在从Blender导出的scene.js文件中可用

  • 是否有任何可能的方法将Blender中的动画对象导出为 在保持场景其余部分完好无损的情况下,立即剥皮网格
  • 是否可以确定一个对象在Three.js中是否有动画
更新


我意识到,由于我可以单独获得带有动画的对象,因此我可以在场景几何体上循环,以检查对象上是否有可用的动画,并为其创建SkinnedMesh(如果是这样的话)。但是定位问题仍然存在:Three.js中的(0,0,0)位置和旋转将对象定位在场景的中心,而不是其他点周围。我不确定这是哪一点,可能是Blender场景中心,但我想这两个应该是一样的。

我得到了一个测试对象,它是在Blender场景中心创建并设置动画的。当将其导入Three.js时,位置似乎有点偏移(对我来说,每个轴上的位置都在-1.5到1.5个单位之间),但这可以在三个轴中手动修复。这种方法工作得很好,但也有一些缺点:

  • 位置移动可能会迫使您手动重新定位动画对象。这仅在您的定位需要精确的情况下发生
  • 您需要通过将对象放置在需要的位置,手动从blender获取位置、旋转和缩放。(你可以在三个小时内完成,但我想那将是更多的工作
它不是完美的,但它现在可以工作。我确信,可以将混合器转到三个导出器,将对象与动画一起导出,就像它位于场景中心一样,然后向Three.js提供正确的位置、旋转和缩放,以便能够立即将动画对象加载到正确的位置,如果我有时间,我将我试着去实现它

我希望这能帮助其他有这个问题的人,即使这只是一个临时修复