如何将three.js的旋转转换为blender的旋转?

5

我在场景中放置了一些物体,并使用OrbitControls来移动相机。我已经找到了一些理想的相机位置/旋转方式,使得渲染效果很好,所以我读取了相机的位置和旋转,并尝试将它们直接输入到Blender中,以获得相同的视图。

从three.js复制到Blender相机中的位置可以正常工作-我获得了与three.js中的orbited相机相同的位置。 即使记住Y和Z互换,旋转也有所不同。 难道不应该采用相同的方式(只是将Y和Z交换)吗?

如果不是这样,如何转换这些值,以便能够以与three.js中相同的位置设置Blender相机? 这里是我在github上写的一篇文章,附有一些截图: https://github.com/mrdoob/three.js/issues/3348 我应该如何读取相机的旋转,使它们旋转的方式与在three.js中相同? 我只读取camera.rotation.x,y,z。 是否应该从某种全局/本地矩阵或其他方式中读取旋转?

非常感谢您的任何帮助。

马切伊

1个回答

0
为了能够从一个软件转到另一个软件,您需要找到每个软件使用的坐标系。例如,three.js使用的坐标系是正x向右,正y向上,正z从屏幕中出来。从我在http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Understanding_Coordinates看到的(我没有使用blender),在blender中正x向右,正y进入屏幕,正z向上。所以它们是不同的。但是,如果您将three.js系统沿着x轴旋转90度,您就会得到blender坐标系。

问题是关于相机的“旋转”向量,而不是关于坐标系的。 - WestLangley
谢谢回答。是的,我已经注意到了坐标系统,并在应用相机位置时通过切换Y和Z来包含它。 - user2301593
我认为这与本地/全局旋转有关...也许我读错了其中一个。我会尝试更多实验,并更准确地记录所有内容。谢谢。 - user2301593

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接