现代计算机图形学入门-L4-变换.2

Viewing Transformation(观测变换)

一.View/Camera Transformation(视图变换)

视图变换主要包含模型变换和视图(摄像机)变换,统称为视图变换。

什么是视图变换?

模型-视图-投影变换,简称“MVP变换”

  • M:model transformation
    • 设置好场景
    • ex: 选好地方人摆好姿势
  • V:view tranforamtion
    • 设置好Camera的look at方向和up方向
    • ex:找到一个角度放置照相机
  • P:projection tranformation
    • 将camera看向的3d内容转换为2d画面
    • ex:拍照

model/view变换常常同时进行,由下方视图变换章节可知,做视图变换时根据相对静止,模型也同时应用变换。

如何做视图变换?

1.定义照相机

  1. postion 定义相机的位置
  2. look-at/gaze direction 定义相机看向的方向
  3. up direction 设定相机的up-direction

一个位置,两个向量,则可以确定一个相机,以上则是观测矩阵所需要的初始的定义。

2.观察

前提:当物体与相机保持相对静止时,相机与物体无论如何移动,观察的结果不变。

因此,进行以下的处理:

  • (1) 处理:变换相机到标准中心:

    放在原点、up方向为向上的y轴,看向-z方向

  • (2) 模型随相机一起运动

好处:简化很多操作

  • 设相机在e点上,look at/gaze direction的方向为g,up方向为t
  • 现在需要把相机移动到原点,向量g旋转到-z上,t旋转到y正半轴上。

基本步骤:

  1. 平移,将e点移动到原点
  2. 旋转g到-z方向
  3. 旋转向上方向t到+y上
  4. 前面步骤完成后,自然而然地gxt的方向就在+x方向了。

上述步骤使用矩阵表示

  1. Tview 平移矩阵


  2. Rview 旋转矩阵

由g,t,gxt旋转到-z,y,x上矩阵难写,可以利用旋转矩阵是正交矩阵(正交矩阵的逆等于转置)的特性:

  • 先求Rview的逆->Rview-1(即x,y,-z旋转到gxt,t,g),
  • 再对Rview-1求转置得到Rview。

二、Projection Transformatio(投影变换)

  1. 正交投影:假设相机拿到无限远,近平面与远平面完全一样大小。

  2. 透视投影,frustum中内容成像到近平面上

1、正交投影<br />Orthographic projection

无近大远小.


基本思想

  1. 设置camera在原点,gaze /look at方向为-z,up方向为+y
  2. 舍弃物体z值,使物体的z都等于0,至此所有物体都只在x轴跟y轴上,摄像机看到的就是x、y平面上的一张图。
  3. 将物体都挤压到规范正方形[-1,1][-1,1],这一步是约定俗称的操作,为了方便后面的计算。
图形学中的实际操作:
    1. 定义空间中的立方体,[lxr]x[b,t]x[f,n]。f<n,因为右手系,camera延着-z方向看
    1. 中心位于((r+l)/2,(t+b)/2,(n+f)/2)的立方体延着(-(r+l)/2,-(t+b)/2,-(n+f)/2)平移到原点。
    1. 将其给拉成一个[-1,1]的正则(canonical)立方体

数学上的表现

2、透视投影:<br />Perspective projection

符合人眼成像,近大远小,平行线远处会相交

基本思想:

  1. 将frustom挤压成一个长方体
  2. 再做一次正交投影

如何挤?

定义:

  1. 在挤压的过程中,近平面任何一个点的x,y,z值永远不会发生变化。

  2. 在挤压过程中,远平面上的Z值不会发生变化。

  3. 挤压过程中,远平面的中心点也不会发生变化。

挤压过程:

  1. 从侧面观察,根据相似三角形可得y'=(n/z)*y


  2. 同理可得x’


  3. 结果的点可以写成一个齐次坐标矩阵,然后同乘z后,仍然表示同一个点


  4. 写出变换矩阵表达式,原来的点经过变换矩阵后,得到第3步表示的点


  5. 由第4步,可以反推变换矩阵的形式如下:


    • M的第3行一定与z'有关系。


  6. 根据前述的定义:

  • 近平面上的点x、y、z值不变。取点(x,y,n),得到结果后同乘n


    观察结果第3行=n*n,与x、y无关,因此M前两项必为0:M的第3行=(0,0,A,B)

  • 远平面上的点的z值不变。取点(0,0,f),代入上述求到的(0,0,A,B)——变换矩阵第三行

综上两个等式,变换矩阵求解完毕


课后思考:

在将frustum挤压为Cuboid的过程中,已知远平面和近平面的Z'不变,那么近平面与远平面之间的z,z’相对z如何变化,更近了还是更远了?

  • 解答
    设任意点(x,y,z)经M变换



    注意点:camera在原点看向-z方向,所以n+f<0

综上,z’相对z减小,更接近远平面了

小结:

本节课主要讲述观测变换(Viewing Transformation)——三维的场景转换为二维的画面。观测变换包括:

  1. 视图变换(M、V)
  • 视图变换包含模型变换(Model Transformation)与视图变换Viewing Transformation,两者通常同时进行,统称为视图变换。
  • 这一步的目的是将摄像机摆放到look at/gaze方向为-z方向,up为+y,位置为原点的方向,包含平移与旋转过程,物体跟随相机同步变换。
  • 变换矩阵最终实际上是作用到物体上,因为应用到物体后,我们就知道这时摄像机就已经摆放到指定位置。
  • 求旋转变换矩阵的过程中根据正交矩阵的性质,可以通过求逆矩阵的方式计算,计算非常方便。
  1. 投影
    投影分为:
  • 正交投影


    • 求将立方体映射到[-1,1]x[-1,1]x[-1,1]的标准立方体(canonical cube)的变换矩阵。
    • 无近大远小,工程制图应用多。
  • 透视投影


    • 先将四棱锥frustum“压缩成”立方体
    • 再进行正交投影。
    • 近大远小,更符合人眼

更多

现代计算机图形学入门-L3-变换.1

现代计算机图形学入门-L2 ——线性代数

现代计算机图形学入门-L1

另辟蹊径的"一键打包"

Web/Native资源加密方案

Spine换装方案多平台解析

基于creator3.0的3D换装

CocosCreator3.4.2原生二次开发的正确姿势——手把手教你接SDK

在编辑器上声明自定义数据数组

包体优化指南

不规则3D地形行走

快速实现3d抛物线绘制

奇形怪状-不规则按钮实现

关于作者

我是羽毛,一名游戏研发工程师,一名野生摄影同学。我的公众号主要分享自己的一些游戏项目开发过程中的功能总结及日常开发笔记。也希望能通过平台的交流,与更多有想法的同学交流认识,共同成长。

欢迎大家在日常开发过程中,如果觉得有需要讨论解决、分享或者探讨的内容,在公众号后台或者文章留言处给我反馈,提供写作的方向,从另一个角度也尽量让写作内容更贴近大家的需求以及痛点,在此谢谢各位同学.

另外羽毛也提供付费技术咨询的服务,有需求的同学可以公众号后台私信添加微信。

今日技能你学废了吗?

<div align ="center">
<h2>更多精彩欢迎关注微信公众号“羽毛不会飞”</h2>
<img src="https://upload-images.jianshu.io/upload_images/21178773-2e5d33fde1edc63e.png" width="80%"/>
<img src="https://upload-images.jianshu.io/upload_images/21178773-ebca0bcc56f0bd3e.png" />

</div>

本文由mdnice多平台发布

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容