本文主要是介绍Part I 空气曲棍球 Chapter5 (5.2 Working with a Virtual Coordinate Space),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
5.2 虚拟坐标系(Working with a Virtual Coordinate Space)
为了适配屏幕旋转的情况,我们需要调整之前使用的坐标空间,如何调整呢?那就是不能直接使用规范化设备坐标而是需要调整会使用虚拟坐标空间。为了使用OpenGL能够正确的进行渲染,我们需要找一种把虚拟坐标空间转换到规范化坐标空间的方法。而为了使用我们的球台桌面的竖屏与横屏情况下都得到正确的显示,这种转换还需要考虑屏幕方向。
我们需要做的就是一个正侧投影,在正侧投影规则下,无论多远或者多近所有的东西看起来都是同样的大小。为了更好的理解下侧投影,假设我们有一个火车轨道,下图是从轨道下上方看轨道时的样子:
这里还有一种特殊的投影方式叫做等轴测投影(isometric projection),它也是一种正侧投影,只不过有了一个偏移角度。这种类型的投影可以用来创建一个3D视角,就是在游戏中看到的城市模拟一样,如下图所示:
5.2.1 坐标空间转换(From Virtual Coordinates Back to Normalized Device Coordinates)
当我们使用正侧投影把虚拟坐标空间转换到规范化设备坐标空间时,我们相当于在我们的世界中定义了一个3D空间,所有在所定义3D空间里面的内容都会得到显示,所有在3D空间外面的都被裁剪掉。在下面的图示中我们可以看到一个立方体中的简单场景:
当我们使用正侧投影把这个立方体投射到屏幕的时候,就会得到下图所示场景:
我们可以通过使用正侧投影改变立方体空间大小,然后就可以在屏幕上看到更多或者更少的内容,我们也可以改变这个立方体的形状使得在不现屏幕方向下都能得到正确的显示。
在我们使用正侧投影之前,需要先来复习下一些线性代数基础知识(点击进入下一章)。
这篇关于Part I 空气曲棍球 Chapter5 (5.2 Working with a Virtual Coordinate Space)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!