我们的空气曲棍球项目已经捣鼓好久了,现在绘制出来的桌面也是呈现出了一个好视角并且配合纹理映射后看起来更好了;然而由于球棍只是一个点所以看起来并不像真正的球棍,你能想象下使用像一个点一样的球棍打球会是什么样的体验吗?很多应用程序都是通过组合简单的形体来绘制一些复杂的物体,在这一章里面我们将学习如何使用简单的形体绘制一个更好的球棍。
现在的应用里面还缺少一种简单的方法去放置、旋转及移动场景中的物体,很多3D应用程序都是通过使用view矩阵去实现这个功能的;通过改变矩阵来决定物体在场景中的位置,这种感觉就像是从一个移动的相机里面观察事物一样。我们将会增加一个view矩阵使得旋转及移动物体更容易。
下面是这章的主要内容:
- 首先学习如何使用绘制三角形的命令组合三角形绘制简单物体。
- 然后学习如何定义view矩阵并集成到已有的矩阵中去。
一旦我们完成了这些任务,就可以使用一行代码来移动场景,而且我们也会绘制一个更像现实生活中的一个球棍,下图是本章完成后效果图。最后在开始这章之前先把前一章节的项目拷贝一份,并且命名为AirHockeyWithBetterMallets。
下面是这一章的内容划分:
8.1 三角形绘制(Combining Triangle Strips and Triangle Fans)
8.2 定义形体(Adding a Geometry Class)
8.3 构造形体(Adding an Object Builder)
8.4 更新相应类(Updating Our Objects)
8.5 更新着色器(Updating Shaders)
8.6 代码集成(Integrating Our Changes)
8.7 小结(Review)
恭喜你已经完成了比较精彩的一章,这里学习了triangle strips及triangle fans两种绘制命令并使用他们来绘制简单形体,同时学习了如何封装绘制命令使得代码复用更容易且在需要的时候通过一行代码就可以实现形体绘制。
我们同时还学习了相关矩阵:投影、相机、模型三个,通过分解成这三种矩阵进行操作使得你更好把握相关场景绘制及移动物体。
8.8 练习(Exercises)
1 在onDrawFrame()稍微旋转你的视角。
2 更有挑战的练习,如下图所示,你如何修改球棍相关代码来绘制下面的形体?这里你还是可以使用简单形体来绘制上面的形体。
最后附上本章代码(点击下载)