OpenGL关于空间变换的一些说明

首先,说一下将三维笛卡尔坐标转换为四维齐次坐标的作用:1、用于透视变换;2、可以利用线性变换实现模型平移。

顶点坐标向量vertexPosition左乘MVP矩阵(注意顺序,若右乘,根据矩阵乘法的性质则为各自转置后倒序相乘),gl_Position=P(Projection)V(View)M(Model)vertexPosition,其中,M(Model)=T(Translate)R(Rotate)S(Scale)。

为避免偏移量被Scale,要按Scale(Scale变换后,Z轴范围[-1.0, 1.0])、Rotate、Translate(进行Translation变换时,顶点位置向量的w分量应为1.0)的顺序进行变换。模型变换(model transform)的Rotate&Translate和视图变换(view transform)实质相同,只不过变换方向相反,实际上还是对顶点坐标变换,M矩阵和V矩阵完全可以合并为一个矩阵,例如:gl2.1的glMatrixMode(GL_MODELVIEW)(see also gluLookAt()),如果是自己写的vertex shader,uniform mat4 model, view; 可以合并定义uniform mat4 modelView; 采用View变换实际是为了模拟camera视角(OpenGL本身并没有camera),看上去好像是camera在旋转、平移。如果不进行View变换和Projection变换,即在默认视图空间和默认透视空间下,视角如下图:

在透视空间里,两条平行线可在无穷远处相交于一点,Projection变换可造成”近大远小“的效果,经过Projection变换后,如果nearplane=0.0,则视角是从Z=0.0(深度值=0)看向Z轴负方向(深度值>0)。注:深度值(距离镜头的深度)就是相对于camera镜头来说的,镜头处深度值为0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值