現(xiàn)代計(jì)算機(jī)圖形學(xué)入門-閆令琪-01

前言:一些讀書筆記
引用閆令琪老師的課程內(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||\cos{\theta}
作用:
1.判斷2個方向之間的距離
2.分解1個向量
3.判斷前后dot product > or < 0
Cross product:axb=||a||||b||\sin{\theta}
作用:
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倍時)
\left[ \begin{matrix} x' \\ y' \end{matrix} \right] = \left[ \begin{matrix} s & 0\\ 0 & s \end{matrix} \right] \left[ \begin{matrix} x \\ y \end{matrix} \right]丰包,s=0.5禁熏。


2.reflection 反射(關(guān)于y軸鏡像)
\left[ \begin{matrix} x' \\ y' \end{matrix} \right] = \left[ \begin{matrix} -1 & 0\\ 0 & 1 \end{matrix} \right] \left[ \begin{matrix} x \\ y \end{matrix} \right]

3.shear 切變(水平方向移動a
\left[ \begin{matrix} x' \\ y' \end{matrix} \right] = \left[ \begin{matrix} 1 & a\\ 0 & 1 \end{matrix} \right] \left[ \begin{matrix} x \\ y \end{matrix} \right]

4.rotate 旋轉(zhuǎn)(旋轉(zhuǎn)\theta
\left[ \begin{matrix} x' \\ y' \end{matrix} \right] = \left[ \begin{matrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{matrix} \right] \left[ \begin{matrix} x \\ y \end{matrix} \right]

2)齊次坐標(biāo)
1.平移不能用之前x'=Mx矩陣形式表示,即邑彪,平移不是線性變化
2.解決辦法:增加一個維度
2D point = (x,y,1)^T
2D vector = (x,y,0)^T瞧毙,向量有平移不變性
此時平移操作為:
\left[ \begin{matrix} x' \\ y' \\w' \end{matrix} \right] = \left[ \begin{matrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{matrix} \right] \left[ \begin{matrix} x \\ y \\ 1\end{matrix} \right]
一般操作:
vector + vector = vector
point - point = vector
point + vector = point
point + point = 中點(diǎn) (\left[ \begin{matrix} x \\ y \\w \end{matrix} \right] \rightarrow \left[ \begin{matrix} x/w \\ y/w \\ 1 \end{matrix} \right]
3.總結(jié):仿射變換Affine Transformations
Affine map = linear map + transformation
\left[ \begin{matrix} x' \\ y' \end{matrix} \right] = \left[ \begin{matrix} a & b\\ c & d \end{matrix} \right] \left[ \begin{matrix} x \\ y \end{matrix} \right] + \left[ \begin{matrix} t_x \\ t_y \end{matrix} \right]
Using homogenous coordinates
\left[ \begin{matrix} x' \\ y' \\ 1\end{matrix} \right] = \left[ \begin{matrix} a & b & t_x \\ c & d & t_y \\ 0 & 0 & 1 \end{matrix} \right] \left[ \begin{matrix} x \\ y \\ 1\end{matrix} \right]

3)3D變換
與2D變換類似蝶桶,多了一維卸留。
1.齊次坐標(biāo)
3D point = (x,y,z,1)^T
3D vector = (x,y,z,0)^T
實(shí)際上帕识,3D point是用(x,y,z,w)表示(x/w,y/w,z/w)阁猜。
2.先線性變換琅束,后平移
3.旋轉(zhuǎn)操作:以某個軸為基準(zhǔn)旋轉(zhuǎn)(這種方法的可行性可以從飛機(jī)的直觀例子得到)
R_x(\alpha) = \left[ \begin{matrix} 1 & 0 & 0 & 0 \\ 0 & \cos{\alpha} & -\sin{\alpha} & 0 \\ 0 & \sin{\alpha} & \cos{\alpha} & 0 \\ 0 & 0 & 0 & 1 \end{matrix} \right]

R_y(\alpha) = \left[ \begin{matrix} \cos{\alpha} & 0 & \sin{\alpha} & 0 \\ 0 & 1 & 0 & 0 \\ -\sin{\alpha} & 0 & \cos{\alpha} & 0 \\ 0 & 0 & 0 & 1 \end{matrix} \right]

R_z(\alpha) = \left[ \begin{matrix} \cos{\alpha} & -\sin{\alpha} & 0 & 0 \\ \sin{\alpha} & \cos{\alpha} & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{matrix} \right]

可以將一個任意旋轉(zhuǎn)拆分為在各個軸方面的旋轉(zhuǎn)的組合雷滚。

Rodrigues' Rotation Formula:
n軸旋轉(zhuǎn)\alpha度握玛,其中這個n向量默認(rèn)會平移到原地再開始旋轉(zhuǎn)望门。
R(n,\alpha) = \cos{(\alpha)}I+(1-\cos{(\alpha)})nn^T+\sin{(\alpha)}\left[ \begin{matrix} 0 & -n_z & n_y \\ n_z & 0 & -n_x \\ -n_y & n_x & 0 \end{matrix} \right]

4)view transformation
1.拍照過程可以解釋為如下過程:
找好地方篮迎,聚集好人(model transformation)
找好角度(viewing transformation)
茄子(projection transformation)
2.定義相機(jī)
位置向量e
往哪看\hat{g}
向上\hat{t}
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 = \left[ \begin{matrix}1 & 0 & 0 & -x_e \\ 0 & 1 & 0 & -y_e \\ 0 & 0 & 1 & -z_e \\ 0 & 0 & 0 & 1 \end{matrix} \right]
因?yàn)橹苯尤デ驲view不好求,我們使用逆向思維去求-Z到g归薛,Y到t谍憔,X到gxt驶冒。
可以得到Rview^(-1) = \left[ \begin{matrix} x_{\hat{g}\times\hat{t}} & x_t & x_{-g} & 0 \\ y_{\hat{g}\times\hat{t}} & y_t & y_{-g} & 0 \\ z_{\hat{g}\times\hat{t}} & z_t & z_{-g} & 0 \\ 0 & 0 & 0 & 1 \end{matrix} \right]
舉例:Rview^(-1)·X = Rview^(-1)·\left[ \begin{matrix} 1 \\ 0 \\0 \\0 \end{matrix} \right]=\left[ \begin{matrix} x_{\hat{g}\times\hat{t}} \\ y_{\hat{g}\times\hat{t}} \\z_{\hat{g}\times\hat{t}} \\0 \end{matrix} \right] = \hat{g}\times\hat{t}
因?yàn)樾D(zhuǎn)矩陣是正交矩陣,于是就得到Rview = \left[ \begin{matrix} x_{\hat{g}\times\hat{t}} & y_{\hat{g}\times\hat{t}} & z_{\hat{g}\times\hat{t}} & 0\\ x_t & y_t & z_t & 0 \\ x_{-g} & y_{-g} & z_{-g} & 0 \\ 0 & 0 & 0 & 1 \end{matrix} \right]
5)投影變換 projection transformation
正交投影 orthographic projection
透視投影 perspective projection


1.正交投影
一種說法:照相機(jī)初始化韵卤,扔掉Z坐標(biāo),縮放到[-1,1]^2
另一種說法:平移崇猫、縮放為標(biāo)準(zhǔn)塊沈条,map[l,r]x[b,t]x[f,n] to cube [-1,1]^3
這里是l,r對應(yīng)左右,b,t對應(yīng)下上诅炉,f,n對應(yīng)遠(yuǎn)近蜡歹,因?yàn)槭侵赶?Z的右手系,遠(yuǎn)的反而是小的涕烧。
Mortho = \left[ \begin{matrix} \frac{2}{r-l} & 0 & 0 & 0 \\ 0 & \frac{2}{t-b} & 0 & 0 \\ 0 & 0 & \frac{2}{n-f} & 0 \\ 0 & 0 & 0 & 1 \end{matrix} \right] \left[ \begin{matrix} 1 & 0 & 0 & -\frac{r+l}{2} \\ 0 & 1 & 0 & -\frac{t+b}{2} \\ 0 & 0 & 1 & -\frac{n+f}{2} \\ 0 & 0 & 0 & 1 \end{matrix} \right]
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 = \left[ \begin{matrix} n & 0 & 0 & 0 \\ 0 & n & 0 & 0 \\ 0 & 0 & n+f & -nf \\ 0 & 0 & 1 & 0 \\\end{matrix} \right]
注意杏瞻,有時候也可以用fovY和Aspect ratio來表示t,b,l,r。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末衙荐,一起剝皮案震驚了整個濱河市捞挥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赫模,老刑警劉巖树肃,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瀑罗,居然都是意外死亡胸嘴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門斩祭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來劣像,“玉大人,你說我怎么就攤上這事摧玫《龋” “怎么了绑青?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長屋群。 經(jīng)常有香客問我闸婴,道長,這世上最難降的妖魔是什么芍躏? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任邪乍,我火速辦了婚禮,結(jié)果婚禮上对竣,老公的妹妹穿的比我還像新娘庇楞。我一直安慰自己,他們只是感情好否纬,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布吕晌。 她就那樣靜靜地躺著,像睡著了一般临燃。 火紅的嫁衣襯著肌膚如雪睛驳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天谬俄,我揣著相機(jī)與錄音柏靶,去河邊找鬼。 笑死溃论,一個胖子當(dāng)著我的面吹牛屎蜓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钥勋,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼炬转,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了算灸?” 一聲冷哼從身側(cè)響起扼劈,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菲驴,沒想到半個月后荐吵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赊瞬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年先煎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巧涧。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡薯蝎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谤绳,到底是詐尸還是另有隱情占锯,我是刑警寧澤袒哥,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站消略,受9級特大地震影響堡称,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜艺演,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一粮呢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钞艇,春花似錦、人聲如沸豪硅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽懒浮。三九已至飘弧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間砚著,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工稽穆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冠王,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓舌镶,卻偏偏與公主長得像柱彻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子餐胀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容