前言:一些讀書筆記
引用閆令琪老師的課程內(nèi)容,GAMES101,老師講的很好任连,可以看原課程視頻。
Overview of Computer Graphics
基本就是介紹這門課例诀,然后講了一下學(xué)習(xí)的意義和學(xué)習(xí)所需的前置知識和工具等随抠。
1)什么是計(jì)算機(jī)圖形學(xué)?
使用計(jì)算機(jī)合成和操作視覺信息繁涂。
2)課程內(nèi)容
Rasterization 光柵化
Curves and Meshes 曲線和網(wǎng)格
Ray Tracing 光學(xué)追蹤
Animation/Simulation 動畫/仿真
3)作業(yè)鏈接地址
http://games-cn.org/forums/topic/allhw/
Review of Linear Algebra
基本就是線代的一些基礎(chǔ)知識拱她,其中怎樣將這些知識應(yīng)用于實(shí)際會讓人更好的理解線代在CG上的應(yīng)用。
1)Vectors
向量(數(shù)學(xué)上)扔罪,矢量(物理上)秉沼。
Dot product:a·b=||a||||b||
作用:
1.判斷2個方向之間的距離
2.分解1個向量
3.判斷前后dot product > or < 0
Cross product:axb=||a||||b||
作用:
1.判斷左側(cè)/右側(cè)
例如:當(dāng)叉乘方向?yàn)檎龝r,b在左側(cè)
2.判斷內(nèi)側(cè)/外側(cè)
例如:求ABxAP,P在AB左側(cè)唬复;求BCxBP矗积,P在BC左側(cè);求CAxCP敞咧,P在CA左側(cè)棘捣。于是P在內(nèi)側(cè),否則會存在異側(cè)的情況休建。
2)Matrices
Transformation
這節(jié)課主要講了一些圖形變化時乍恐,計(jì)算機(jī)所做的變化。
1)2D變換
主要用矩陣
1.scale 縮放(縮寫0.5倍時)
丰包,禁熏。
2.reflection 反射(關(guān)于y軸鏡像)
3.shear 切變(水平方向移動)
4.rotate 旋轉(zhuǎn)(旋轉(zhuǎn))
2)齊次坐標(biāo)
1.平移不能用之前矩陣形式表示,即邑彪,平移不是線性變化
2.解決辦法:增加一個維度
2D point =
2D vector = 瞧毙,向量有平移不變性
此時平移操作為:
一般操作:
vector + vector = vector
point - point = vector
point + vector = point
point + point = 中點(diǎn) ()
3.總結(jié):仿射變換Affine Transformations
Affine map = linear map + transformation
Using homogenous coordinates
3)3D變換
與2D變換類似蝶桶,多了一維卸留。
1.齊次坐標(biāo)
3D point =
3D vector =
實(shí)際上帕识,3D point是用表示阁猜。
2.先線性變換琅束,后平移
3.旋轉(zhuǎn)操作:以某個軸為基準(zhǔn)旋轉(zhuǎn)(這種方法的可行性可以從飛機(jī)的直觀例子得到)
可以將一個任意旋轉(zhuǎn)拆分為在各個軸方面的旋轉(zhuǎn)的組合雷滚。
Rodrigues' Rotation Formula:
繞n軸旋轉(zhuǎn)度握玛,其中這個n向量默認(rèn)會平移到原地再開始旋轉(zhuǎn)望门。
4)view transformation
1.拍照過程可以解釋為如下過程:
找好地方篮迎,聚集好人(model transformation)
找好角度(viewing transformation)
茄子(projection transformation)
2.定義相機(jī)
位置向量e
往哪看
向上
3.初始相機(jī)放在原點(diǎn)男图,上到Y(jié),看向-Z(Mview)
如果相機(jī)和物體一起運(yùn)動甜橱,那么它們是相對靜止的逊笆,為了能識別物體的運(yùn)動,我們默認(rèn)相機(jī)是靜止的岂傲,且有個初始狀態(tài)难裆。
這期間需要做的操作有:1、將e水平移到原點(diǎn)镊掖,旋轉(zhuǎn)g到-Z乃戈,旋轉(zhuǎn)t到Y(jié),旋轉(zhuǎn)gxt到X亩进,即Mview = RviewTview症虑。
其中Tview =
因?yàn)橹苯尤デ驲view不好求,我們使用逆向思維去求-Z到g归薛,Y到t谍憔,X到gxt驶冒。
可以得到Rview^(-1) =
舉例:Rview^(-1)·X = Rview^(-1)·= =
因?yàn)樾D(zhuǎn)矩陣是正交矩陣,于是就得到Rview =
5)投影變換 projection transformation
正交投影 orthographic projection
透視投影 perspective projection
1.正交投影
一種說法:照相機(jī)初始化韵卤,扔掉Z坐標(biāo),縮放到
另一種說法:平移崇猫、縮放為標(biāo)準(zhǔn)塊沈条,map[l,r]x[b,t]x[f,n] to cube
這里是l,r對應(yīng)左右,b,t對應(yīng)下上诅炉,f,n對應(yīng)遠(yuǎn)近蜡歹,因?yàn)槭侵赶?Z的右手系,遠(yuǎn)的反而是小的涕烧。
Mortho =
Mortho先平移到原點(diǎn)月而,然后進(jìn)行縮放。
2.透視投影
透視投影是遠(yuǎn)的東西會變小议纯,那么我們期望下面的左子圖能變成右子圖Mpersp->ortho父款,再進(jìn)行正交投影Mortho。這樣就完成了透視投影瞻凤。具體怎樣得到Mpersp->ortho的過程比較復(fù)雜憨攒。總的來說就是一個相似三角形的定理阀参,然后根據(jù)定義中遠(yuǎn)的矩陣會縮成近的肝集,中心點(diǎn)不變,遠(yuǎn)近不變等等條件做插值求得矩陣蛛壳。
Mpersp->ortho =
注意杏瞻,有時候也可以用fovY和Aspect ratio來表示t,b,l,r。