Games101笔记——Lecture4:Transformation Cont.

Lecture4:Transformation Cont.

  • 这节课比较困难!
  • 对于上节课的补充
    • 要旋转-θ角度怎么办?
    • 实际上就是做了旋转θ角度的转置
    • 而实际上也应该是旋转θ角度的逆
    • 所以得到旋转矩阵的逆等于旋转矩阵的转置
      在这里插入图片描述
  • 今日内容·
    • 继续3D变换
    • 观测变换
      • 视图变换
      • 两种投影变换(正交&透视)

3D变换

在这里插入图片描述

  • 先线性变换再平移
    在这里插入图片描述
  • 绕某一固定轴旋转
    在这里插入图片描述
    • 绕y轴旋转右上左下两个sin值与其他两个相反
      • 因为z叉乘x,可以得到y
  • 3D旋转
    • 绕任意轴的旋转可以写成绕三个轴的旋转的组合
    • 引入欧拉角的概念,并证明其合理性
      在这里插入图片描述
  • 罗德里格斯旋转公式
    在这里插入图片描述
    • 这一公式的推导见附件
  • 涉及3D旋转,有四元数这一概念,其引入更多是为了旋转与旋转之间的插值。

Viewing transformation

View / Camera Transformation

  • 什么是视图变换?
    • 思考一下怎么拍一张照片:MPV三步
      在这里插入图片描述
  • 怎么做视图变换?
    • 如何确定一个相机的摆放?
      • 相机位置
      • 视线方向
      • 向上方向
        在这里插入图片描述
    • 移动物体和移动相机可以造成一样的效果
    • 约定俗成,相机在原点,向-z看,向上方向为y
      在这里插入图片描述
    • 如何把相机放到标准位置?
      在这里插入图片描述
    • 上图是思路,写成矩阵形式:
      在这里插入图片描述
    • 先平移、再旋转,同时在旋转的时候利用旋转矩阵逆矩阵和转置矩阵相同的性质
    • 视图变换小总结
      在这里插入图片描述

Projection Transformation

  • 两种投影方式:正交和透视
    在这里插入图片描述在这里插入图片描述
Orthographic Transformation
  • 简单的理解方式:
    • 相机还是老样子三件事
    • 单纯丢掉 Z 坐标 (之后讲用深度缓冲区分前后)
    • scale到[-1,1]平方的矩形上
  • 方便且正式的做法
    • 定义一个[-1,1]三次方的立方体,把任意空间中的长方体映射成这样一个正方体 ,特殊地,z值上远小于近,因为我没沿着-z方向看(最后视口变换还会拉伸回来,所以不用考虑物体最后会扭曲地展现)
    • 把正交投影写成数学形式:
    • 实际上OpenGL采用右手系
Perspective Transformation

在这里插入图片描述

  • 准备推导
    在这里插入图片描述
  • 透视投影的理解
    在这里插入图片描述
    • “挤捏 ”
    • 近、远平面永远不变
    • 中心点永远不变
  • 对于y值
    在这里插入图片描述
  • x与y同理,z不知道
    在这里插入图片描述
  • 推导各行的各项,还差第三行
    在这里插入图片描述
  • 利用近远平面的z值都不会发生变化
    在这里插入图片描述
    • 乘n的这一步并不是为了构造n平方,而是为了满足上上图的第1、3、4项。由上图我们可知只需求A,B两值
    • 再利用远平面上的原点(任意一点也可)
      在这里插入图片描述
  • 最后解出来A和B
    在这里插入图片描述
    • 那么对于中点的一点呢,思考题
      • 更靠近远平面f,代入算一下就知道咯
      • 用Mpersp->ortho(x y (n+f)/2 1)T,得到的结果为(nx ny 1/2(n2+f2) (n+f)/2)T,进行齐次坐标变换,都除以(n+f)/2,得到(2nx/(n+f) 2ny/(n+f) (n2+f2)/(n+f) 1)T,然后把(n2+f2)/(n+f)与(n+f)/2进行比较,两个相减,得到(n-f)2/2(n+f),(n-f)2>0,(n+f)<0,所以结果<0,z变小了,被推向远的平面。摘自课程作业论坛
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值