|
|

楼主 |
发表于 2006-8-26 14:09:00
|
显示全部楼层
Re:求助:模型坐标如何变换到世界坐标
谢谢, 但我还不是很明白,可能是对矩阵名称的描述不一样吧.
你说的WM应该是我说的模型矩阵(Model Matrix)即模型相对于世界坐标系的变换矩阵
VM应该是视点矩阵(View Matrix), 即摄像机位置和角度的矩阵
如果是这样,那么你说的方法求出来的应该是裁剪坐标,
我已经知道原理上怎么将模型坐标变换到世界坐标了, 就是对模型的坐标乘以Model Matrix,这样就可以求出该点在3维场景中的绝对坐标(就是世界坐标), 但是OpenGL会把Model Matrix和
View Matrix(视点矩阵)给合起来成为Model View Matrix, 用查询函数也只能得到这个矩阵.
这样求得的坐标就不是世界坐标了, 而是"视点坐标", 据我猜测应该是以摄像机的位置为原点的坐标系中的坐标, 不知对不对, 那么如何出去摄像机对坐标的影响, 直接求得世界坐标呢?
我现在用的是一种很苯的方法, 先保存当前矩阵, 然后将当前矩阵清空为单位矩阵(这样就等于消除了View Matrix的影响, 将View Matrix 还原成为了默认状态, 此时它与世界坐标系完全重合), 再进行模型变换(如平移, 缩放, 旋转), 接着用查询函数获取Model View Matrix, 最后恢复之前保存的当前矩阵. 这样就可以用模型中任意一个点与刚才获取的矩阵相乘, 求出其世界坐标.
但是这样很麻烦啊(当然,至少比用3D变换的知识自己算出变换矩阵省时, 反正计算机也不怕多这么点工作量), 我想知道的是有没有直接用查询函数获取矩阵, 并进行简单处理就可以求出世界坐标的方法. |
|