三维实体对象需要经过一系列的坐标变换才能正确、真实地显示在屏幕上。在一个场景中,当读者对场景中的物体进行各种变换及相关操作时,坐标系变换是非常频繁的。
坐标系变换通常包括:世界坐标系-物体坐标系变换、物体坐标系-世界坐标系变换和世界坐标系-屏幕坐标系变换(一个二维平面坐标系,即显示器平面,是非常标准的笛卡尔坐标系的第一象限区域)。
- 世界坐标系-物体坐标系变换
它描述的问题主要是关于物体本身的。
假设在世界坐标系中,一个人正准备走向一栋建筑,那么他就面临世界坐标系到物体坐标系的变换过程,变换过程中面临的问题是人相对建筑物的朝向、人相对建筑物的距离及人的移动方向等一系列的问题。
世界坐标系-物体坐标系变换的意义在于简化了世界坐标系下变换的运算,当面对非常大的场景时,这种变换在一定程度上可以减少数据的运算量和提高场景的渲染效率。
- 物体坐标系-世界坐标系变换
它描述的问题是处于世界坐标系中的物体。
假设在物体坐标系中,一栋建筑物中有一个人,如何确定人在世界坐标系中的位置信息就是物体坐标系-世界坐标系变换所面对的问题。
- 世界坐标系-屏幕坐标系变换
在场景中,所有的实体对象需要经过一系列的坐标变换才能正确显示在屏幕上。
这些变换主要包括:
模型变换(将实体对象正确地放置在场景中)
投影变换(将场景中的实体对象投影到垂直于视线方向的二维成像平面上)
视口变换(投影变换之后得到的顶点需要经过视区变换才能得到最后的窗口坐标)
由模型变换和投影变换得到归一化的设备坐标,再由视口变换得到屏幕窗口坐标。