title.gif (4734 bytes)

[回系刊首頁 | 回系會首頁]

dot.gif (35 bytes)

 
淺談3D繪圖原理
line.gif (35 bytes)

【by vfighter】

       隨著電腦硬體的進步,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)為極座標表示法,現在利用矩陣做座標變換,

pic1.gif (10730 bytes)
<圖一>

將圖(一)的座標變成圖(二)的座標,以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]

pic3.gif (10631 bytes)
<圖三>

用等比例算出真正的螢幕顯示點,並調整座標以符合螢幕座標:

pic_.gif (1003 bytes)
pic_2.gif (1570 bytes)

     好啦!這樣子就大功告成啦,日後只要只要把3D座標輸入為(X0,Y0,Z0),經過我們推導的公式就可以產生2D的座標(SX,SY)了。聰明的你到這裡一定會想到:要是改變θ或ψ的值會發生什麼事情呢?沒錯,這樣就可以使我們用不同的角度去觀察物體,在我們不動的情形下,感覺就像物體自己在旋轉一樣,θ便控制了左右旋轉,ψ則控制上下翻轉,同理,Rho與d控制物體的遠近,(cx,cy)做上下左右的平移。利用這些轉換,我們可以在製作3D模型(如:動物、建築)之後,做全範圍的檢視,圖(四)就是一個例子,把(X0,Y0,Z0)的輸入用函數取代,這樣就可以輕鬆的做出立體的函數圖形,並且還可以旋轉、平移及拉近拉遠唷!

pic4.gif (29033 bytes)
<圖四>

 

[下一則 | 上一則 | 回系刊首頁 | 回系會首頁]

 

 
class1.gif (299 bytes) 第一版
class2.GIF (250 bytes) 人工智慧實驗室專訪
class2.GIF (250 bytes) 研究生活知多少
class1.gif (299 bytes) 第二版
class2.GIF (250 bytes) 淺談3D繪圖
class1.gif (299 bytes) 第三版
class2.GIF (250 bytes) 酸甜苦辣留言版
class2.GIF (250 bytes) 風城中的黑衫軍
資訊系壘
class2.GIF (250 bytes) X-File問卷調查結果
class1.gif (299 bytes) 第四版
class2.GIF (250 bytes) 楓橋之夜-資訊人不可錯過的年度盛宴
class2.GIF (250 bytes) 輕狂影展
class2.GIF (250 bytes) 逐鹿球場-誰會是系運總錦標?