本文拟从应用方面分析OSG坐标变换。
一、坐标变换原理
在OSG中, 局部坐标经过模型矩阵
、观察矩阵
、投影矩阵
、窗口矩阵
等变换之后,转换为屏幕窗口坐标
,即
二、应用1:视图基本操作
视图用于用户浏览OSG场景,涉及平移、旋转、缩放等三种基本操作。基于OSG坐标变换原理,可以非常轻松的实现这三种基本操作。
操作 | 正交投影 | 透视投影 |
平移 | 观察矩阵 | 观察矩阵 |
旋转 | 观察矩阵 | 观察矩阵 |
缩放 | 投影矩阵 | 观察矩阵 |
从视图浏览操作实现原理来看,对于透视投影,通过修改观察矩阵便可完成三种基本操作;对于正交投影,平移、旋转可以通过修改观察矩阵来实现,缩放则需要修改透视投影。
需要指出的是,对于正交投影,投影矩阵也是仿射变换矩阵;对于透视投影,投影矩阵通常并不是仿射变换矩阵。
三、应用2:定点缩放
在CAx软件视图中,一个基本功能是实现场景围绕世界坐标进行缩放。不失一般性,考虑通过构造修正矩阵
来实现缩放,
若取为中心缩放,为实现定点缩放,需要
因此,修正矩阵需要满足
。
设,缩放因子
,可构造如下的修正矩阵
很容易验证,上述矩阵满足定点缩放的要求。
四、应用3:S.R.T分解
对于某些应用,需要实现观察矩阵变换过程中,部分几何模型保持缩放比例不变。
考虑如下的变换:
通常,可将观察矩阵分解成缩放矩阵
、旋转矩阵
、平移矩阵
,即
S.R.T分解算法可以参见Shoemake K 1992的文章。
为了观察矩阵变化不影响模型的显示尺寸,可以通过构造模型矩阵,
其中,
由此可以推出。
参考文献
Shoemake K , Duff T . Matrix animation and polar decomposition. 1992.