■ 3D Math Basis
摘要: 我們將討論渲染一幅帶有基本光照的單個(gè)圖像的大體過(guò)程,這里不考慮動(dòng)畫(huà)和全局光照,如陰影和輻射度。
此外,注意這里只從概念上講解通過(guò)圖形管道的數(shù)據(jù)流,其順序并不是固定的。實(shí)踐中,我們也許會(huì)為了性能的優(yōu)化而并行或亂序執(zhí)行一些任務(wù)。比如,考慮到不同的渲染API,我們可能首先變換和照明所有頂點(diǎn),然后才進(jìn)一步的處理(進(jìn)行裁剪和剔除),或者會(huì)并行處理二者,也可能在背面剔除之后再進(jìn)行光照會(huì)得到更高效率。
閱讀全文
摘要: 最簡(jiǎn)單的情形,多邊形網(wǎng)格不過(guò)是一個(gè)多邊形列表;三角網(wǎng)格就是全部由三角形組成的多邊形網(wǎng)格。多邊形和三角網(wǎng)格在圖形學(xué)和建模中廣泛使用,用來(lái)模擬復(fù)雜物體的表面,如建筑、車(chē)輛、人體,當(dāng)然還有茶壺等。
當(dāng)然,任意多邊形網(wǎng)格都能轉(zhuǎn)換成三角網(wǎng)格,三角網(wǎng)格以其簡(jiǎn)單性而吸引人,相對(duì)于一般多邊形網(wǎng)格,許多操作對(duì)三角網(wǎng)格更容易。
閱讀全文
摘要: 考慮2D中的直線(xiàn)L,L由所有滿(mǎn)足p . n = d的點(diǎn)p組成。
其中n是單位向量,我們的目標(biāo)是對(duì)任意點(diǎn)q,找出直線(xiàn)L上距q距離最短的點(diǎn)q',它是q投影到L上的結(jié)果。讓我們畫(huà)一條經(jīng)過(guò)q平行于L的輔助線(xiàn) M,如圖13.1所示。設(shè)nM和dM分別為直線(xiàn)方程的法向量和d值。因?yàn)長(zhǎng)和M平行,所以它們的法向量相等:nM=n。又因?yàn)閝在M上,所以dM為 q.n。
閱讀全文
摘要: 通過(guò)定義一個(gè)布爾函數(shù)f(x, y , z),我們能夠隱式表示一個(gè)圖元。如果所指定的點(diǎn)在這個(gè)圖元上,這個(gè)布爾函數(shù)就為真;對(duì)于其他的點(diǎn),這個(gè)布爾函數(shù)為假。例如等式:
x2+y2+z2 = 1
對(duì)中心在原點(diǎn)的單位球表面上的所有點(diǎn)為真,隱式表示法用于測(cè)試圖元是否包含某點(diǎn)時(shí)非常有用。
閱讀全文
摘要: 處理變換是一件非常令人頭疼的事,矩陣更是棘手。如果你曾經(jīng)編寫(xiě)過(guò)關(guān)于矩陣的代碼并且沒(méi)有用設(shè)計(jì)良好的類(lèi),你會(huì)發(fā)現(xiàn)經(jīng)常要處理負(fù)號(hào)、轉(zhuǎn)置矩陣或翻轉(zhuǎn)連接順序以使其能正常工作。
下面這幾個(gè)類(lèi)正是為了消除在編程中經(jīng)常遇到的這類(lèi)問(wèn)題而設(shè)計(jì)的。例如,很少需要直接訪(fǎng)問(wèn)矩陣或四元數(shù)中的元素,因此特意限制了可用操作的數(shù)目以避免產(chǎn)生迷惑,再如,對(duì)cRotationMatrix類(lèi),沒(méi)有求逆和連接操作,因?yàn)槿绻雌浔旧淼哪康氖褂胏RotationMatrix,這些操作是不應(yīng)該出現(xiàn)或沒(méi)有意義的。
閱讀全文
摘要: 直觀地說(shuō),我們知道物體的“方位”主要描述的是物體的朝向。然而“方向”和“方位”并不完全一樣。向量有“方向”但沒(méi)有“方位”,區(qū)別在于,當(dāng)一個(gè)向量指向特定方向時(shí),可以讓向量自轉(zhuǎn)(如圖10.1所示),但向量(或者說(shuō)它的方向)卻不會(huì)有任何變化,因?yàn)橄蛄康膶傩灾挥小按笮 保鴽](méi)有“厚度”和“寬度”。
閱讀全文
摘要: 在任意方陣中都存在一個(gè)標(biāo)量,稱(chēng)作該方陣的行列式。
方陣M的行列式記作|M|或“det M”,非方陣矩陣的行列式是未定義的。n x n階矩陣的行列式定義非常復(fù)雜,讓我們先從2 x 2,3 x 3矩陣開(kāi)始。
閱讀全文
摘要: 包含平移的線(xiàn)性變換稱(chēng)作仿射變換,3D中的仿射變換不能用 3 x 3 矩陣表達(dá),必須使用4 x 4矩陣。
一般來(lái)說(shuō),變換物體相當(dāng)于以相反的量變換描述這個(gè)物體的坐標(biāo)系。當(dāng)有多個(gè)變換時(shí),則需要以相反的順序變換相反的量。例如,將物體順時(shí)針旋轉(zhuǎn)20度,擴(kuò)大200%,等價(jià)于將坐標(biāo)系縮小200%,再逆時(shí)針旋轉(zhuǎn)20度。
閱讀全文
摘要: 一般來(lái)說(shuō),方陣能描述任意線(xiàn)性變換。線(xiàn)性變換保留了直線(xiàn)和平行線(xiàn),但原點(diǎn)沒(méi)有移動(dòng)。線(xiàn)性變換保留直線(xiàn)的同時(shí),其他的幾何性質(zhì)如長(zhǎng)度、角度、面積和體積可能被變換改變了。從非技術(shù)意義上說(shuō),線(xiàn)性變換可能“拉伸”坐標(biāo)系,但不會(huì)“彎曲”或“卷折”坐標(biāo)系。
閱讀全文
摘要: 矩陣的維度被定義為它包含了多少行多少列,一個(gè) r x c 矩陣有r行c列。用黑體大寫(xiě)字母表示矩陣,如:M、A、R。需要引用矩陣的分量時(shí),采用下標(biāo)法,常使用對(duì)應(yīng)的斜體小寫(xiě)字母,如下面的3 x 3矩陣所示:
閱讀全文
摘要: 提供以下基本操作:
1. 存取向量的各分量(x, y , z)
2. 向量間的賦值操作
3. 比較兩向量是否相同
4. 將向量置為零向量
5. 向量求負(fù)
6. 求向量的模
7. 向量與標(biāo)量的乘除法
8. 向量標(biāo)準(zhǔn)化
9. 向量加減法
10. 計(jì)算兩點(diǎn)(點(diǎn)用向量表示)間距離
11. 向量點(diǎn)乘
12. 向量叉乘
該向量的操作運(yùn)算對(duì)3D點(diǎn)同樣適合。
閱讀全文
摘要: 向量的點(diǎn)積:
假設(shè)向量u(ux, uy)和v(vx, vy),u和v之間的夾角為α,從三角形的邊角關(guān)系等式出發(fā),可作出如下簡(jiǎn)單推導(dǎo):
|u - v| * |u - v| = |u| * |u| + |v| * |v| - 2 * |u| * |v| * cosα
閱讀全文