OpenGL ES 3D 编程与 3D 向量基础
1. 3D 场景与物体层级
在 3D 场景中,我们可以构建复杂的物体层级结构。例如,太阳仅绕自身旋转,行星与太阳保持 3 个单位的距离绕其公转,同时行星也会绕自身旋转,且大小为太阳的 20%。卫星会绕行星公转,并且由于矩阵栈的使用,会随着行星一起绕太阳运动,同时卫星也有自身旋转和缩放等局部变换。
HierarchicalObject 类具有很强的通用性,我们可以利用它添加更多的行星、卫星,甚至卫星的卫星。不过在使用矩阵栈时要注意,它有最大深度限制,通常在 16 到 32 个条目之间,具体取决于 GPU 和驱动程序。在实际应用中,最多使用四层层级结构。
2. 简单相机系统
在 3D 场景中,相机系统是非常重要的,它决定了我们观察场景的视角。
- 移动世界来模拟相机移动 :由于相机固定在原点,看向负 z 轴方向,我们可以通过移动世界来模拟相机的移动。例如,想要相机位于 (10, 4, 2) 的位置,我们可以使用 glTranslatef(-10, -4, -2) 来实现。如果想要相机绕 y 轴旋转 45 度,可以使用 glRotatef(-45, 0, 1, 0) 。我们也可以将这两个步骤结合起来,通过对变换方法的参数取反,将世界变换到相机的固定视角中。
- Euler 旋转相机 :一个简单的相机可以由四个属性来指定:
- 世界空间中的位置。
- 绕 x 轴的旋转(俯仰角),类似于上下倾斜头部。
- 绕 y 轴的旋转(偏航角),
超级会员免费看
订阅专栏 解锁全文
56

被折叠的 条评论
为什么被折叠?



