向 3D 点旋转对象

Posted

技术标签:

【中文标题】向 3D 点旋转对象【英文标题】:Rotate object towards 3D point 【发布时间】:2016-12-21 23:10:40 【问题描述】:

我正在尝试使用 OpenGL 和 glm 将对象旋转到 3d 点。要找到 xRotation,我正在这样做:

xRotation=atan2(lookAtDiff.x,lookAtDiff.z)

xRotation 围绕 Y 轴,lookAtDiff 是一个 vec3,它是对象位置与我试图让它面对的位置之间的差异。这完美无缺。所以我决定以同样的方式做 yRotation(绕 X 轴旋转):

yRotation=atan2(lookAtDiff.y,lookAtDiff.x)

这给了我错误的旋转。我的问题是为什么我会从中得到错误的轮换,我该如何解决?

【问题讨论】:

【参考方案1】:

你必须使用对角线:

yRotation = atan2(lookAtDiff.y, sqrt(lookAtDiff.x * lookAtDiff.x + lookAtDiff.z * lookAtDiff.z));

【讨论】:

以上是关于向 3D 点旋转对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在统一脚本中旋转我的 3d 对象的边缘点

如何在 3D 中围绕同一个枢轴/点旋转多个对象?

使用 Three.js 将 3D 对象旋转到鼠标

根据 3D 对象的位置旋转相机

按钮旋转 3D 对象 ARKit 2

在 3d 中沿贝塞尔路径移动对象:旋转问题