3d - 如何根据 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:我确实搜索并研究了很多主题和解决方案,但没有一个有效,或者可能超出了我理解四元数和数学的能力。
解决方案
我设法通过将旋转向量转换为四元数,将其相乘并将最终结果转换为欧拉角来解决这个问题 https://www.babylonjs-playground.com/#0HCCW7#44
推荐阅读
- c# - 如果对象尚不存在,则创建具有特殊属性的对象
- arrays - 如何在一行中用数组编写以下代码行?
- python - 使用 python + selenium 进行测试时如何包含电子二进制文件
- python - 如何使用 Python 在整个音频文件中设置固定音量
- python - 在运行时从类型列表生成联合类型
- ssl - 是否可以使双向 SSL 异步?
- php - 由于 Symfony,使用 Laravel 安装程序创建一个新的 Laravel 项目会报错
- matlab - Matlab两条线的交点
- javascript - 在 D3 分组条形图中自定义网格线
- database - CollectionGroup 查询返回空结果