如何根据 x 和 y 位置手动旋转 3D 球体?

How can I manually rotate a 3D sphere based on x and y positions?

这是我的第一个 BabylonJS 项目,我坚持理解球体的旋转。另外,这是我的第一个 3D 项目,所以我不能说我很擅长这个。

我正在使用 PixiJS 开发 pool/snooker 2d 游戏(因此有一个固定的相机),现在我想要 3D 动画球,就像 Miniclip 的 8 Ball Pool。 Miniclip 正在使用 spritesheets 来模拟 3D 旋转。

我得出的结论是集成 BabylonJS 将解决这个问题,它几乎完成了,除了必须手动解决的球旋转,因为球体将遵循 2D 球坐标,X 和 Y(Z 是固定的为零)。就像这里: https://zippy.gfycat.com/ShorttermFortunateFanworms.webm

我找到了这个教程,它在 Unity 中运行良好,正是我所需要的,但它在我的项目中不起作用。 http://kwarp.blogspot.com/2015/07/unity-rotate-3d-ball-using-2d-physics.html

我认为问题在于四元数需要与向量相乘,我不确定。 也试过这个没有结果。 http://www.html5gamedevs.com/topic/32934-multiply-a-vector3-times-a-quaternion/#comment-188880

有人可以帮我解决这个问题吗?

我在这里创建了类似的东西,基于鼠标坐标。移动鼠标时地球应该旋转。 https://www.babylonjs-playground.com/#0HCCW7#29

PS:我确实搜索并调查了很多主题和解决方案,但 none 有效,或者可能超出了我理解四元数和数学的能力。

我设法通过将旋转矢量转换为四元数,将其相乘并将最终结果转换为欧拉角来解决这个问题 https://www.babylonjs-playground.com/#0HCCW7#44