隨著電腦硬體的進步,CPU與顯示卡的速度也都獲得了相當大的提升,如一般的PC使用者,現在可以利用3D
Studio或是AutoCAD等套裝軟體輕鬆做到以往工作站級的3D繪圖及動畫,更早在多年以前,立體繪圖就已經被利用來拍攝電影,像『魔鬼終結者』、『星際大戰』、『玩具總動員』等,此外遊戲界也隨著巫毒卡的出現而不斷向3D市場堆進,就算你不知道VR快打、UnReal、古墓奇兵、MotorRacer,也總該聽過DOOM吧!這個一腳踢開
第一人稱射擊大門的經典之作,當時不知道使多少玩家變成血腥暴力的屠殺狂呀!而研究領域中,立體視覺也是極力開發的對象,像是WWW上的VRML以及虛擬實境,都在為立體環境的真實性與即時性做改良。說了那麼多,到底如何在電腦上建立一個3D模型,而那些動畫又是如何產生的呢?這就牽涉到討厭的數學了,我們的目標其實很簡單,就是要把一個建立好的3D模型想辦法在2D的螢幕上表示出來,首先,假設三度空間的世界用X,Y,Z的座標表示,如圖(一),那片矩形就代表了我們的螢幕,假設眼睛是直視原點0,θ表示對X軸的旋轉角度,ψ表示對Z軸的旋轉角度,Rho為眼睛到原點的距離,p(θ,ψ,Rho)為極座標表示法,現在利用矩陣做座標變換,
<圖一>
將圖(一)的座標變成圖(二)的座標,以Z為軸轉-(90-θ)度,再以X為軸轉(180-ψ)度,然後將X反向,因此若點A在圖(一)中為(X0,Y0,Z0),則到圖(二)後就變成了:
[-1 0 0] [1
0
0
][cos(θ-90) sin(θ-90) 0][X0]
[ 0 1 0] [0 cos(180-ψ) sin(180-ψ) ][-sin(θ-90) -cos(θ-90) 0][Y0]
[ 0 0 1] [0 -sin(180-ψ) cos(180-ψ)][ 0
0
1][Z0]
[ -sinθ
cosθ
0 ] [X0]
= [-cosθcosψ -sinθcosψ sinψ] [Y0]
[-cosθsinψ -sinθcosψ -cosψ] [Z0]
<圖二>
最後,把眼睛作為原點,如圖(三),再做一次座標變換,並令成新的座標(Xe,Ye,Ze):
[Xe] [ -sinθ
cosθ
0 ][X0] [ 0
]
[Ye] =[-cosθcosψ -sinθcosψ sinψ][Y0]+ [ 0 ]
[Ze] [-cosθsinψ -sinθcosψ -cosψ][Z0]
[Rho]
<圖三>
用等比例算出真正的螢幕顯示點,並調整座標以符合螢幕座標:
好啦!這樣子就大功告成啦,日後只要只要把3D座標輸入為(X0,Y0,Z0),經過我們推導的公式就可以產生2D的座標(SX,SY)了。聰明的你到這裡一定會想到:要是改變θ或ψ的值會發生什麼事情呢?沒錯,這樣就可以使我們用不同的角度去觀察物體,在我們不動的情形下,感覺就像物體自己在旋轉一樣,θ便控制了左右旋轉,ψ則控制上下翻轉,同理,Rho與d控制物體的遠近,(cx,cy)做上下左右的平移。利用這些轉換,我們可以在製作3D模型(如:動物、建築)之後,做全範圍的檢視,圖(四)就是一個例子,把(X0,Y0,Z0)的輸入用函數取代,這樣就可以輕鬆的做出立體的函數圖形,並且還可以旋轉、平移及拉近拉遠唷!
<圖四>
[下一則
| 上一則 | 回系刊首頁 | 回系會首頁]
|