王 飛, 王晨升, 劉曉杰
(1.北京郵電大學(xué),北京 100876;
2.長(zhǎng)春大學(xué)機(jī)械工程學(xué)院,吉林 長(zhǎng)春 130022)
與傳統(tǒng)的單視點(diǎn)透視投影圖不同,物體體視圖的繪制需要同時(shí)創(chuàng)建相當(dāng)于觀察者左右眼所看到的透視投影圖。通過左右眼透視投影圖的差異—兩眼視差,進(jìn)而在觀察者頭腦中形成立體映像。手工繪制體視圖無疑是很困難的[1],因此多以CAD軟件為工具進(jìn)行繪制。常用的三維CAD軟件只支持單視點(diǎn)透視投影圖的繪制,不能直接用于體視圖的創(chuàng)建。
AutoCAD是一款具有悠久歷史的 CAD軟件,擁有眾多的用戶,并且還在不斷進(jìn)步,目前已經(jīng)推出了AutoCAD 2009版本。AutoCAD的二維繪圖功能具有目前的三維CAD軟件所不能比擬的優(yōu)勢(shì),而且其三維功能也越來越強(qiáng)大。盡管被認(rèn)為基于過時(shí)了的設(shè)計(jì)觀念,以AutoCAD軟件進(jìn)行三維設(shè)計(jì)的用戶也不多,但AutoCAD具有的靈活的創(chuàng)建物體透視圖的功能卻為體視圖繪制創(chuàng)造了條件。一個(gè)可能的辦法是用AutoCAD定義透視圖的命令 Dview設(shè)置參數(shù)分兩次創(chuàng)建對(duì)應(yīng)于左右眼的透視圖[2]??紤]到Dview的相機(jī)參數(shù)、目標(biāo)、距離和點(diǎn)間相互關(guān)聯(lián),不能鎖定,無法為三維模型在創(chuàng)建右視點(diǎn)的透視圖后,再準(zhǔn)確地創(chuàng)建對(duì)應(yīng)于左視點(diǎn)的透視圖,因此需要采用AutoCAD軟件的二次開發(fā)技術(shù)來為AutoCAD補(bǔ)充創(chuàng)建體視圖的功能。
在用AutoCAD進(jìn)行三維建模的基礎(chǔ)上,一般有兩種方法進(jìn)行二次開發(fā)為模型創(chuàng)建體視圖,一是專門設(shè)置兩個(gè)視點(diǎn)(即左、右視點(diǎn))形成體視圖[3];另一種是只為 AutoCAD補(bǔ)充錯(cuò)切功能[4],并利用Dview命令來生成體視圖,即利用單視點(diǎn)透視原理來創(chuàng)建體視圖。顯然后一種方法比較方便,作者研究的就是這一種。
體視圖是分別將觀察者的兩眼各看作一個(gè)視點(diǎn),生成具有一定視差的兩幅透視圖,稱為體視圖對(duì)。對(duì)應(yīng)于左眼的透視圖稱為左投影,對(duì)應(yīng)于右眼的透視圖稱為右投影。在觀察體視圖時(shí),如能保證左眼只能看到左投影,右眼只能看到右投影,則可使體視圖對(duì)在觀察者頭腦中融合成一個(gè)三維圖形,形成立體映像。當(dāng)投影面為平面時(shí),按投影面位置可分為H面(水平面)體視圖(圖1)和 V面(正立面)體視圖(圖2)兩種。在觀察H面體視圖時(shí),體視圖對(duì)從水平面上躍然而起,立在空間;在觀察V面體視圖時(shí),根據(jù)物體相對(duì)畫面的位置可以伸向畫面的遠(yuǎn)方或觀察者與畫面之間,從而形成強(qiáng)烈的深度感。一般在計(jì)算機(jī)屏幕上形成的多是V面體視圖。對(duì)觀察者來說,當(dāng)物體在畫面前面,則形成的立體映像伸出屏幕,如物體在畫面后面,則形成的體視映像在屏幕后方。前者稱為交叉視,后者稱為同側(cè)視。
圖1 H面體視圖
圖2 V面體視圖
當(dāng)投影面為VP面時(shí),體視觀察空間是以左視點(diǎn)SL、右視點(diǎn)SR為錐頂,棱線過窗口VB角點(diǎn)的兩個(gè)半無限四棱錐的公共部分。為便于裁剪,在前后各設(shè)置一個(gè)平面(FP和 BP),經(jīng)過觀察方向變換[4]成為如圖3所示的形狀。
根據(jù)透視投影的變換矩陣可導(dǎo)出體視投影變換矩陣。以視點(diǎn)坐標(biāo)系(右手系)原點(diǎn)O(在體視學(xué)中叫做中央眼)為視點(diǎn)的透視變換矩陣為
圖3 體視觀察空間
式中 d為視距。如圖2所示,設(shè)左視點(diǎn)為 SL(-B/2,0,0),右視點(diǎn)為 SR(B/2,0,0),SLSR稱為眼基線,SLSR平行于畫面,SLSR=B,B稱為目距,約為65mm。則左、右視點(diǎn)的體視變換矩陣分別為
設(shè)空間一點(diǎn)的坐標(biāo)為(x,y,z),則其左、右投影分別為
顯然,左、右視點(diǎn)y和z坐標(biāo)分別相等,所不同的只是x坐標(biāo),而
其中 kB稱為圖對(duì)間隔位似系數(shù),如圖2所示。上式說明,左、右投影間距不是一個(gè)常數(shù),而是與物體各頂點(diǎn)的z坐標(biāo)有關(guān)。 由圖2還可以看出,這時(shí)z坐標(biāo)應(yīng)小于0。
人們的習(xí)慣眼一般是右眼,下面討論由右視點(diǎn)得到左投影的方法。假設(shè)
顯然,Tx為錯(cuò)切和平移的變換矩陣。設(shè)經(jīng)過Tx變換的坐標(biāo)分別用x′,y ′,z′表示,則
以上的推導(dǎo)過程表明,為了用右視點(diǎn)得到左投影,先讓物體C沿x軸關(guān)于z錯(cuò)切Bz/d使物體產(chǎn)生錯(cuò)切變形得C1,再將C1沿x軸平移B,最后以右視點(diǎn)為視點(diǎn)對(duì) C1進(jìn)行透視變換,即可得到C的左投影,如圖4所示。顯然,這種方法可以由單視點(diǎn)計(jì)算得到多視點(diǎn)體視圖。
圖4 由右視點(diǎn)獲得左投影的方法
討論的解析過程和體視結(jié)構(gòu)符合空間三透射定理[5]。由圖4看出,C的左投影與C構(gòu)成透射對(duì)應(yīng) TL,中心為左視點(diǎn) SL,軸平面為 V;因C1是C沿x軸錯(cuò)切和平移得到的,故軸平面也是V,其中心為x軸的非固有點(diǎn)S∞,因此 C與 C1構(gòu)成透視仿射對(duì)應(yīng)P。右視點(diǎn)SR也取在x軸上,根據(jù)空間三透射定理,左投影與 C1也構(gòu)成透射對(duì)應(yīng)TR,軸平面也為V。綜上所述,SL與SR、S∞三中心共線,P、TL和TR具有公共的軸平面V,這就在幾何上證明了由右視點(diǎn)得到物體左投影方法的正確性。
在AutoCAD中,對(duì)上述結(jié)論進(jìn)行了驗(yàn)證。由于 AutoCAD軟件沒有錯(cuò)切功能,利用三維CAD軟件的開發(fā)工具,為軟件增加了錯(cuò)切功能[3]。具體步驟如下:先在模型空間建立一個(gè)三維模型,然后對(duì)模型的副本進(jìn)行錯(cuò)切和平移,如圖5所示;最后啟動(dòng)Dview命令,分別設(shè)置目標(biāo)點(diǎn)和視點(diǎn)—相機(jī)(B/2,0,0)、觀察方向(Camara)、視距d(Distance),就得到了模型的體視投影圖,如圖6所示。通過用補(bǔ)色眼鏡觀察,立體效果良好。這樣就使得創(chuàng)建體視圖的方法幾乎和透視圖一樣容易。
圖5 錯(cuò)切和平移后的模型
需要指出的是:有的軟件不能對(duì)視點(diǎn)進(jìn)行設(shè)置(如Autodesk Inventor等),那么僅用上述方法就不能生成體視圖,需要用二次開發(fā)工具對(duì)視點(diǎn)進(jìn)行設(shè)置,采用上述的第一種方法。
體視映像在計(jì)算機(jī)立體視覺、虛擬現(xiàn)實(shí)等領(lǐng)域中有廣闊的應(yīng)用前景。本文提出的基于第一視點(diǎn)(右視點(diǎn))通過錯(cuò)切、平移等仿射變換得到計(jì)算體視像第二個(gè)投影(左投影)的方法,簡(jiǎn)單、易行,并已經(jīng)在AutoCAD軟件中得到了實(shí)現(xiàn)和驗(yàn)證,效果良好。
本文所提出的算法形成的體視圖的立體景深取決于左右投影的水平視差,根據(jù)式(4)和式(5)可得任意兩點(diǎn)A、B的水平視差
由上式看出,d值越大,左右投影的水平視差越大,所形成立體映像的景深就越大;反之,立體景深就越小。需要注意的是當(dāng)d值小于一定的閾值時(shí),有可能導(dǎo)致融像失敗。
對(duì)于三維CAD軟件系統(tǒng),本文所提出的算法依然適用,此時(shí)只需按本文計(jì)算公式中的要求設(shè)置第二視點(diǎn)(左視點(diǎn)),并獲取左投影即可。
[1]董國(guó)耀. 透視和體視[M]. 北京: 北京理工大學(xué)出版社, 1992. 218-220.
[2]張培忠, 王 慧. 利用AutoCAD軟件繪制體視圖的方法[J]. 山東建材學(xué)院學(xué)報(bào), 1998, 12(3): 271-274.
[3]王 飛, 董國(guó)耀. 標(biāo)準(zhǔn)圖形系統(tǒng)中體視變換矩陣的推導(dǎo)[J]. 北京郵電大學(xué)學(xué)報(bào), 1995, 18(1): 16-24.
[4]于春暉, 王 飛. 為三維軟件增加錯(cuò)切功能[J]. 計(jì)算機(jī)與現(xiàn)代化, 2005, 122(10): 51-54.
[5]葉玉駒, 簡(jiǎn)召全. 高等畫法幾何[M]. 北京: 國(guó)防工業(yè)出版社, 1990. 95.