衛洪春
(四川文理學院繼續教育學院,四川達州635000)
快速坐標系變換及其在真實感圖形中的應用
衛洪春
(四川文理學院繼續教育學院,四川達州635000)
討論了在計算機生成真實感圖形的過程中,將世界坐標系統表示的場景轉換為觀察坐標系統表示的場景的三種變換方法的基本原理.雖然三種變換方式均可達到場景表達的目的,但在計算效率上不盡相同.在一般情況下經過兩次變換就能實現轉換更為合理,計算工作量可以減少三分之一.由于三種變換方式的實現方法各不相同,導致最終的變換結果也互不相同.
世界坐標;觀察坐標;真實感圖形;變換;場景
現實世界中所有物體都以三維形式存在.但三維物體在計算機中卻都以二維平面形式進行顯示.將物體從三維真實形式變換到二維顯示需要經過一系列變換.從三維空間到二維平面的變換過程與相機拍照過程十分相似,通常需經歷模型變換、觀察變換、投影變換、規范化變換與裁剪及視口變換,最后在設備上進行顯示.其中觀察變換討論了如何將世界坐標系中的物體變換到觀察坐標系(亦稱相機坐標系),從而可以用某種投影方式將物體投影變換到觀察平面,實現將三維空間物體用相應的二維平面圖形圖像進行顯示.本文討論從世界坐標系到觀察坐標系變換的幾種方法,并對其變換效率進行了比較.[1-4]
1.1 三維場景觀察
為了獲得三維世界坐標系場景的二維顯示,首先需建立觀察用坐標系VS(亦稱相機坐標系或攝影坐標系)的相關參數,該坐標系定義與照相機膠片平面對應的觀察平面或投影平面的方向;然后將世界坐標系WS中的物體經過一系列變換,將WS中的這些物體轉換成觀察坐標系統VS中的對象;最后采用適當的投影方式,把VS中的這些對象投影到觀察平面上,在輸出設備上生成對象視圖可以用線框圖形式進行表示,也可以采用光照明技術和表面繪制技術,從而獲得與現實情況非常接近的真實感圖形.三維觀察流水線如圖1所示.[5-7]

圖1 三維觀察流水線
1.2 三維觀察坐標系
在世界坐標系XYZ中選定一點P作為觀察點(亦稱為視點或相機位置),并指定觀察向上向量Yv.對于三維空間的描述還需兩個方向向量,一般將過P點指向世界坐標系原點的方向作為觀察方向Zv,第三個向量Xv可用Yv與Zv進行叉乘得到.由Xv YvZv所得到的坐標系統就是三維觀察坐標系統,如圖2所示.三維觀察坐標系統可以是左手系統,也可以是右手系統,在本文中選用左手坐標系.

圖2 世界坐標系中建立的觀察坐標系

圖3 向上向量V的調整
在觀察坐標系中需定義觀察平面(即投影平面),用以將場景投影到該平面上進行顯示.通常定義觀察平面與視線方向垂直,并讓觀察平面通過世界坐標系的原點(也可以是過空間任意點),此時觀察方向即為觀察平面的法線向量N.
如前所述,僅選定觀察平面法向量N還不能唯一確定觀察坐標系統VS,因些尚需確定用于觀察的向上向量V.因為必須有兩個不平行的空間向量后才能確定一個三維空間系統.觀察向上向量V的作用就是用來確定Yv軸的正向.一般情況下,向量V按這樣的規則來確定,即觀察向上向量V是從世界坐標系WS的原點到WS中的某個定點所形成的向量.但此時法向量N(即Zv軸方向)與向上向量V的內積通常不等于零(除非選定的WS中的定點正好位于與N垂直的方向上),說明V與N不垂直,必須將調整向量V,調整方法是:向上向量V投影到觀察平面上得到投影Yv,法向量N垂直于觀察平面,Yv屬于觀察平面,因此N與V垂直,如圖3所示.從理論分析可知,V的確定可以任意選擇(但V與N不能平行),但在實際應用中,一種方便的選擇是使用平行于世界坐標系軸Y的方向,通常使用(0,1, 0)作為向上向量V,該向量與世界坐標系的Y軸方向平行.
世界坐標系與觀察坐標系的變換不是唯一的,盡管如此,但都能將世界坐標系中的場景變換為觀察坐標系中的場景,下面討論從世界坐標系統變換到觀察坐標系統的幾種方法.[8-11]
2.1 觀察坐標系變換到世界坐標系
在該變換下,世界坐標系保持不變,將觀察坐標系及世界坐標系中的場景作為整體,平移后使觀察坐標系的視點(觀察點)與世界坐標系的原點重合.然后將觀察坐標系相對于世界坐標系進行旋轉變換,使觀察坐標系的坐標軸分別與對應的世界坐標系的三條坐標軸重合,此時場景中各點的坐標即為觀察坐標系中的坐標,具體變換過程如下:
首先將觀察坐標系及場景平移至觀察點(即視點)與世界坐標系的原點重合(圖4).在圖4(1)中,設P(0,0,1)、Q(1,0,0)、R(0,1,0)分別是觀察坐標系中Xv、Yv、Zv上的單位向量點,P’是P點在XOY面上的投影,α角是PP’O面與ZOX面所形成的二面角.
(1)將觀察坐標系Xv YvZv繞Z軸順時針α角后,P點(即Zv)位于ZOX面(圖4(2)).
(2)將觀察坐標系Xv YvZv繞Y軸順時針β角后,P點(即Zv)位于Z軸,此時Xv、Yv位于XOY平面上,但Xv與X、Yv與Y分別形成相同的夾角γ(圖4(3)).
(4)將Xv、Yv繞Z軸逆時針γ角后,Xv、Yv、Zv分別與ZYZ向量的方向重合(圖4(4)).
經過上述變換,原觀察坐標系的Xv、Yv、Zv軸分別與世界坐標系的X、Y、Z軸重合,從而原世界坐標系中的各點亦變換為觀察系中的各點的坐標.

圖4 從觀察坐標系VS到世界坐標系WS的變換
2.2 世界坐標系變換到觀察坐標系
在圖5(1)中,設觀察坐標系的視線向量為PO,保持世界坐標系XYZ中的所有物體對象(即場景)在觀察坐標系Xv YvZv中的相對位置不變,將XYZ系統及其原點O平移到Xv YvZv系統的視點P,然后經過系列旋轉變換后,使世界坐標系的Z軸與觀察坐標系的視線向量PO重合,即可完成從世界坐標系到觀察坐標系的變換,詳細變換過程如下:
(1)設空間點P(觀察坐標系中的視點)位于世界坐標系XYZ中(圖5(1)).
(2)將世界坐標系XYZ平移致P點,坐標軸變換為Xv、Yv、Zv(圖5(2)).
(3)將Yv、Zv繞Xv逆時針旋轉90o(圖5 (3)),為了使場景與觀察坐標系保持不變,則場景需順時針旋轉90o.
(4)將Xv、Zv繞Yv順時針旋轉α角后,Zv位于PA上,場景則逆時針旋轉α角以保持其在觀察坐標系中的相對位置不變,此時向量Zv位于面PAO上(圖5(4)).
(5)將Yv、Zv繞Xv逆時針旋轉β角后,Zv位于向量PO上,場景則順時針旋轉β角以保持其空間位置不變.此時Yv位于OBPA面上(圖5 (5)).

圖5 從世界坐標系XYZ到觀察坐標系Xv YvZv的變換
經過上述變換后,完成將場景從世界坐標系變換至觀察坐標系,然后采用合適的投影方式將場景變換到觀察平面.
2.3 對2.2變換的改進
在2.2的變換中,其主要目的是保持場景與觀察坐標系的相對位置不變,通過平移世界坐標系來完成,但該變換需涉及三次旋轉變換.經過分析,可以只經過兩次旋轉變換即可實現使Z軸與視線向量PO重合,從而使計算工作量減少三分之一,如圖6所示.變換過程如下:
(1)設空間點P(觀察坐標系中的視點)位于世界坐標系XYZ中(圖6(1)).
(2)將世界坐標系XYZ平移致P點,從而坐標軸變為Xv、Yv、Zv(圖6(2)).
(3)將向量Yv、Zv繞Xv軸逆時針旋轉90o+α角,則場景順時針旋轉90o+α角(圖6(3)與圖6(4)合并為一個變換).此時向量Zv與向量PA重合(圖6(5)).
(4)經過上述變換后,由于X、Xv、Zv(PA)、PO共面,且均與Yv垂直.故繞Yv順時針旋轉β角后Zv與向量PO重合.此時Yv位于ABP面(圖6).場景則逆時針旋轉β角以保持其空間位置不變.

圖6 世界坐標系變換到觀察坐標系(兩次旋轉變換)
在上述三種變換過程中,雖然各種變換均能將世界坐標系中的場景變換至觀察坐標系中,但由于旋轉變換過程的順序不同,所采用的向上向量不同,因而變換后的最終效果不同.在變換效率上,最后一次變換的效率最高,旋轉變換的計算量可以減少三分之一.通過場景建模、光照明計算、坐標系變換、透視變換、消隱處理后,分別在上述三種變換方式下,得到的計算結果如圖7(1)到圖7(3)所示.[12-14]

圖7 各種變換的結果比較
在計算機生成真實感圖形的過程中,涉及到模型變換、觀察變換、投影變換、規范化變換與裁剪及視口變換,最后才能在設備上進行顯示.其中觀察變換的目的就是要把在世界坐標系中表示的場景轉換為在觀察坐標系中表示的場景,然后進行透視投影變換,以期達到最佳的顯示效果.[15-17]本文討論的三種變換均可達到這一目的,但前兩種變換方式在計算效率上均比第三種方式低三分之一,在場景較大的情況下,采用第三種轉換方式更為合理;但由于三種變換方式實現的方法各不相同,因此最終的變換結果也互不相同,但這并不影響真實感圖形的生成與表現.上述分析對于加深對圖形學相關理論的深入理解及開發真實感圖形系統具有較好的參考價值.
[1]王汝傳,黃海平,林巧民,等.計算機圖形學教程[M].北京:人民郵電出版社,2014:11.
[2]蘇小紅,李 東,唐好選,等.計算機圖形學實用教程[M].北京:人民郵電出版社,2014:32.
[3]Donald Hearn,M.Pauline Baker,Warren R.Carithers.Computer Graphics with OpenGL(4th)[M].北京:電子工業出版社,2014:22.
[4]徐長青,許志聞,郭曉新,等.計算機圖形學[M].北京:機械工業出版社,2013:30.
[5]嚴蔚敏,吳偉民.數據結構[M].北京:清華大學出版社,2015:27.
[6]張雪彬,劉培國,曹 兵.基于C++語言的多維動態數組的實現[J].現代電子技術,2006(24):68-69.
[7]許金超,曾國蓀.基于棧狀態關系的動態軟件水印算法[J].計算機應用,2013(4):1065-1069.
[8]丁宇辰.圓弧的生成算法研究[J].南京工程學院學報:自然科學版,2010(2):59-62.
[9]孫崇璇.圓弧生成方法探究與實現[J].云南師范大學學報:自然科學版,2011(4):64-68.
[10]朱慶生,唐 匯,馮 驥.Delaunay三角剖分在離群點檢測中的應用[J].計算機工程與應用,2015(16):166-170.
[11]王志俊,姜詠梅,田 記.矩陣在圖形學幾何變換中的應用[J].高等數學研究,2014(1):87-89,99.
[12]鄢 濤,余 悅,于 曦.基于C++的大整數類型的設計與實現[J].成都大學學報:自然科學版,2016(3):252-255,270.
[13]董鑫正,單 緬,傅曉陽.C++教學中的知識點邏輯關系探討[J].計算機教育,2016(9):163-166.
[14]張麟華,孔令德,楊慧炯.面向圖形圖像處理的C++課程案例設計[J].計算機教育,2013(4):88-91.
[15]袁小翠,吳祿慎,陳華偉.Delaunay三角剖分算法改進與對比分析[J].計算機應用與軟件,2016(9):163-166.
[16]徐文鵬,強曉煥,侯守明.面向問題解決的圖形學教學改革探討[J].高等理科教育,2013(5):107-111.
[17]祝 恩,殷建平.以實際問題驅動圖形圖像處理技術研究型教學[J].高等教育研究學報,2013(2):24-26.
[責任編輯 范 藻]
Fast Transformation of Coordinate System and Application in Realistic Graphics
WEI Hongchun
(Computer Science School of Sichuan University of Arts and Sciences,Dazhou Sichuan 635000,China)
This paper discusses the principles of three kinds of transformation methods,which transforms the scene of the world coordinate system into the observation coordinate system.For expressing the scene correctly,although the three transformation methods can achieve the same purpose,their computational efficiencies are different.In general,it ismore reasonable that two times transformation can gain the end,the computation can be reduced by one-third.Because the implementation methods of those transformation are different,the vonversation results are different too.The analysis of this article has a good reference for understanding graphics theory in depth,improving teaching quality and developing realistic graphics system.
world coordinate;observation coordinate;realistic graphics;transformation;scene
TP391
A
1674-5248(2017)05-0023-04
2017-05-07
四川省教育廳項目(15ZB0326);四川文理學院項目(2015TP003Y);四川省教育廳自然科學項目(17ZB0369)
衛洪春(1972—),男,四川達州人.講師,碩士,主要從事軟件工程、數字媒體技術研究.