首页 > 解决方案 > 如何根据 x 和 y 位置手动旋转 3D 球体?

问题描述

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

我正在使用 PixiJS 开发 2d 的台球/斯诺克游戏(所以有一个固定的相机),现在我想要像 Miniclip 的 8 Ball Pool 一样的 3D 动画球。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:我确实搜索并研究了很多主题和解决方案,但没有一个有效,或者可能超出了我理解四元数和数学的能力。

标签: 3drotationbabylonjs

解决方案


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


推荐阅读