通过数学为立方体转动制作动画 (Java)

Animate a cube turning via mathematics (Java)

我为一个学校项目制作了一个程序,可以解出魔方(你知道,那个有所有颜色的魔方)。但是现在我的老师问我是否可以做一些研究并尝试为其中一侧制作 3d 动画。但他们希望看到数学方法来做到这一点。我找到了一种使用极坐标移动角的方法。但我不知道如何在 3d 中渲染立方体并为其制作动画。

所以我的问题是:如何在 3d 中渲染诸如立方体之类的东西(或者是否有任何好的库)以及如何使用这些极坐标为其设置动画? java 3d 渲染有好的教程吗?

我必须说我完全没有 3d 渲染的经验,所以这可能有点困难。但我真的很想尝试一下。

提前致谢

根据您是要采用现有实现还是要从头开始构建 3D 动画代码,您可以尝试 this tutorial。这方面的图形编程可能会涉及很多;问题的完整答案超出了本网站的范围。但是,有几个主要领域。

  1. 矢量数学用于对象变换(平移、旋转)的用法。这可以直接完成,也可以使用 4×4 矩阵通过射影几何来完成。后者更容易连接转换。

  2. 背面剔除以移除相机无法看到的对象面。

  3. 使用投影和相机模型将 3D 坐标转换为 2D 坐标。

  4. 使用光栅器将 3D 矢量信息渲染到屏幕上。这里 Bresenham's algorithm 可能是一个好的开始。

我建议您查看其中一个 3D 库。 JMonkeyEngine (JME) 是我经常使用并发现非常出色的一个,它专为游戏而设计,但可以很好地满足您的需求。它还有一个优秀的教程,可以让您从基础到非常复杂。事实上,教程的第一步是一个旋转的彩色立方体!

JME 承担了大量的 3D 建模工作。您使用材质、灯光等在代码中构建一个场景,JME 会完成渲染它的所有工作。您甚至可以在 Blender 等工具中构建模型,这样您甚至不需要在代码中进行建模。但我要警告你,使用建模工具绝对不适合胆小的人。