正如我们所知,OpenGL维护映射点的模型视图和投影矩阵。初学者对模型到世界坐标映射的困惑
如果仔细观察,我把模型视图矩阵: MAT4模型视图= WorldViewMtx * ModelWorldMtx
好,什么我不明白是怎么ModelWorldMtx算出来
例如,如果我们有模型corrdinates(MC)和世界坐标(WC)在2D中,如下示:
在MC一个点= [1; 1; 1](在均相列向量坐标,我表示它的像马的方式tlab)中,映射到WC的是b = M a = [ - 1 0 4; 0 1 3; 0 0 1] [1; 1] = [3; 4; 1]两个坐标之间的转换矩阵(我的意思是两个坐标的基矢量之间的关系矩阵)。
如果我们在2D风格中应用gltranslate(1.0,0.0,0.0),那么平移矩阵是T = [1 0 1.0; 0 1 0.0; 0 0 1]。因此,在这种方式指向映射到WC遗嘱:
B” = M Ť A = [ - 1 0 4 0 1 3 0 0 1] [1 0 1.0 0 1 0.0 0 0 1] [1; 1; 1] = [2; 4; 1]。
那么在这个例子中,ModelWorldMtx究竟是什么?
我认为,仿射变换功能,如glTranslate,glScale只是工作在模型coordinates.If MC和WC在这种情况下不重合,
所以ModelWorldMtx = M T = [ - 1 0 4 ; 0 1 3; 0 0 1] [1 0 1.0; 0 1 0.0; 0 0 1] = [-1 0 3; 0 1 3; 0 0 1]。
如果MC和WC在OpenGL中重合,转换矩阵M是一个单位矩阵,所以ModelWorldMtx = T,也就是说在调用gltranslate后该点被映射到WC。
我对不对?
究竟是什么问题? “那么在这个例子中,ModelWorldMtx究竟是什么?”无论你如何定义它。你只是做了2个转换的组合,并得到了应该预期的结果。但我不明白你在问什么。 – derhass 2014-09-01 19:33:53