繁体   English   中英

三个js的Object3D旋转

[英]three js Object3D rotation

我仍然是使用三个js的新手。 当我旋转相机对象时,有一个旋转属性,其值为x,y,z。 我想知道对象3D旋转中的x,y,z来自哪里? 我知道x,y,z表示对象欧拉角的弧度,但是根据链接three.js文件提供: https ://en.wikipedia.org/wiki/Euler_anglesα和γ的范围覆盖2π弧度,并且β的范围覆盖π弧度。 但是,当我测试它时,所有x,y,z的范围仅覆盖π弧度。 从最初的x = 0,y = 0,z = 0开始,直接查找,为什么只有x值改变了? 并且如果Object3D是摄像机,是否意味着摄像机视图中的中心像素代表x轴? 感谢您的帮助。

您可能会更清楚地阐述问题,并提供代码来重现您的错误。

为什么只有X-vaue变化,当你看从(0,0,0)直线上升的问题,是因为x,y和z表示你 通常,3js和3D图形中的标准是以x为水平轴,以y为垂直轴,以z为“深度”轴。 笔直向上看,您将沿水平x轴旋转90度,从而更改旋转中的x值。

我可以给您链接到https://threejs.org/docs/#api/math/Euler

Three.js提供了两种表示3D旋转的方式:欧拉角和四元数,以及在两者之间进行转换的方法。 欧拉角受到称为“万向节锁定”的问题的困扰,其中某些配置可能会失去一定的自由度(防止对象绕一个轴旋转)。 因此,对象旋转始终存储在对象的四元数中。

该库的早期版本包括useQuaternion属性,当将其设置为false时,该属性将导致从欧拉角计算对象的矩阵。 不建议使用此方法-而是应使用setRotationFromEuler方法,该方法将更新四元数。

https://threejs.org/docs/manual/introduction/Matrix-transformations.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM