專利名稱:一種三維圖像的呈現(xiàn)方法和裝置的制作方法
技術領域:
本發(fā)明涉及計算機圖形學技術領域,特別是涉及一種三維圖像的呈現(xiàn)方法和裝置。
背景技術:
三維圖形的表示如圖1所示,在空間任取一點0,過0作互相垂直的三直線x、y、z, 稱O為原點,則構成空間坐標系。右邊是χ軸正方向,上面是1軸正方向,垂直于屏幕指向 屏幕外的方向為Z軸正方向。在計算機圖形學中,深度緩沖是在三維圖形中處理圖像深度坐標的過程,這個過 程通常在硬件中完成,但也可以在軟件中完成。深度緩沖是可見性問題的一個解決方法,而 可見性問題是確定渲染場景中哪部分可見、哪部分不可見的問題。當三維圖形卡渲染物體的時候,每一個所生成的像素的深度(即ζ坐標,也稱ζ 值)就保存在一個緩沖區(qū)中。這個緩沖區(qū)叫做ζ緩沖區(qū)或者深度緩沖區(qū),這個緩沖區(qū)通常組 織成一個保存每個屏幕像素深度的χ-y 二維數(shù)組。如果場景中的另外一個物體也在同一個 像素生成渲染結果,那么圖形處理卡就會比較二者的深度,并且保留距離觀察者較近(即ζ 值較大)的物體。然后這個所保留的物體點深度保存到深度緩沖區(qū)中。最后,圖形卡就可 以根據(jù)深度緩沖區(qū)正確地生成通常的深度感知效果較近的物體遮擋較遠的物體。這個過 程叫做ζ消隱。在渲染過程中,ζ消隱是根據(jù)深度信息對像素的早期剔除。當渲染隱藏表面所需 要的計算量很大的時候,這種方法可以提升處理性能。ζ消隱是深度緩沖的一個直接結果, 在這種方法中每個待定像素的深度都要與相同位置的現(xiàn)存像素的深度進行比較。參照圖2,是三維圖形的疊加顯示效果圖。顯示區(qū)域包括一個顯示為錐體的三維圖 形(簡稱三維椎體),以及一行顯示為“NEWAUT0”的二維文字。其中,二維文字在ζ軸上可 以一個值表示(因為與ζ軸相交一點),但三維椎體在ζ軸上需要以一定的區(qū)間表示(因為 與ζ軸相交兩點)。按照上述渲染繪制方法,ζ消隱過程中對于三維椎體和二維文字相重疊的部分,由 于相同像素位置上二維文字的Z值大于三維椎體的Z值區(qū)間,即二維文字的Z值大于三維 椎體Z值區(qū)間的最大值,即二維文字距離觀察者較近,因此深度緩沖中保留二維文字的深 度,在顯示區(qū)域的顯示效果如圖2所示,二維文字遮擋三維椎體。參照圖3,是放大三維椎體的效果圖。所述“放大”是把一個圖元調整的離觀察者 近一些,即ζ值增大,觀察者感覺圖元在放大。對三維椎體進行放大操作后,需要重新進行 渲染繪制。按照上述渲染繪制方法,如果相同像素位置上三維椎體的ζ值區(qū)間大于二維文 字的Z值,即三維椎體Z值區(qū)間的最大值大于二維文字的Z值,則顯示效果如圖3所示,二 維文字穿越三維椎體顯示。這樣,就帶來如下問題如果多次放大二維文字和三維椎體,就會改變原始的疊加 次序,經常出現(xiàn)二者位置互換的現(xiàn)象。
發(fā)明內容
本發(fā)明所要解決的技術問題是提供一種三維圖像的呈現(xiàn)方法和裝置,以解決現(xiàn)有 技術中放大三維圖像后改變了圖像的原始疊加次序的問題。為了解決上述問題,本發(fā)明公開了一種三維圖像的呈現(xiàn)方法,包括在包含多個圖元的顯示區(qū)域,放大該顯示區(qū)域中的三維圖元;渲染放大后的三維圖元時,關閉該三維圖元的深度緩沖,使深度值對渲染無效;然后根據(jù)所述各圖元建立的時間順序,對所述放大后的三維圖元進行渲染;對渲染后的三維圖元在該顯示區(qū)域重新呈現(xiàn)。其中,根據(jù)所述各圖元建立的時間順序,對所述放大后的三維圖元進行渲染,包 括在所述三維圖元與其它圖元存在重疊的像素位置,比較三維圖元與其它圖元的建 立時間;保留建立時間較晚的圖元的渲染結果。所述方法還包括建立圖元,包括新建深度緩沖控制屬性和深度排序屬性;初始化所述深度緩沖控制屬性和深度排序屬性,并將各圖元的深度緩沖控制屬性 和深度排序屬性都設置為FALSE。其中,通過以下方式關閉該三維圖元的深度緩沖將深度緩沖控制屬性和深度排序屬性添加到該三維圖元;渲染放大后的三維圖元時,通過判斷該三維圖元的深度緩沖控制屬性和深度排序 屬性都為FALSE,關閉該三維圖元的深度緩沖。其中,所述添加包括將深度緩沖控制屬性和深度排序屬性直接添加到相應圖元上;或者,將深度緩沖控制屬性和深度排序屬性直接添加到應用場景中,則該應用場 景中的所有圖元都添加了所述兩個屬性。本發(fā)明還提供了一種三維圖像的呈現(xiàn)裝置,包括放大操作單元,用于在包含多個圖元的顯示區(qū)域,放大該顯示區(qū)域中的三維圖 元;深度緩沖控制單元,用于渲染放大后的三維圖元時,關閉該三維圖元的深度緩沖, 使深度值對渲染無效;渲染單元,用于根據(jù)所述各圖元建立的時間順序,對所述放大后的三維圖元進行 渲染;顯示單元,用于對渲染后的三維圖元在該顯示區(qū)域重新呈現(xiàn)。其中,所述渲染單元在所述三維圖元與其它圖元存在重疊的像素位置,比較三維 圖元與其它圖元的建立時間,然后保留建立時間較晚的圖元的渲染結果。所述裝置還包括圖元建立單元,用于建立圖元;該圖元建立單元包括屬性建立子單元,用于新建深度緩沖控制屬性和深度排序屬性;
初始化子單元,用于初始化所述深度緩沖控制屬性和深度排序屬性,并將各圖元 的深度緩沖控制屬性和深度排序屬性都設置為FALSE。所述裝置還包括屬性添加單元,用于將深度緩沖控制屬性和深度排序屬性添加到該三維圖元;渲染放大后的三維圖元時,所述深度緩沖控制單元通過判斷該三維圖元的深度緩 沖控制屬性和深度排序屬性都為FALSE,關閉該三維圖元的深度緩沖。其中,所述屬性添加單元包括第一添加子單元,用于將深度緩沖控制屬性和深度排序屬性直接添加到相應圖元 上;或者包括,第二添加子單元,用于將深度緩沖控制屬性和深度排序屬性直接添加 到應用場景中,則該應用場景中的所有圖元都添加了所述兩個屬性。與現(xiàn)有技術相比,本發(fā)明具有以下優(yōu)點本發(fā)明對三維圖元進行放大,增大其像素深度之后,對該三維圖元重新進行渲染 繪制時,關閉該三維圖元的深度緩沖,使深度值對渲染無效,然后根據(jù)圖元建立的時間順 序,在相同像素位置保留建立時間較晚的圖元像素深度,并最終顯示。這樣,渲染過程與像 素深度無關,不會受像素深度的影響,從而避免了圖元先后位置互換的現(xiàn)象。
圖1是現(xiàn)有技術中三維圖形的坐標系示意圖;圖2是現(xiàn)有技術中三維圖形的疊加顯示效果圖;圖3是現(xiàn)有技術對圖2中三維圖形放大的效果圖;圖4是本發(fā)明對圖2中三維圖形放大的效果圖;圖5是本發(fā)明實施例一所述放大三維圖形的方法流程圖;圖6是本發(fā)明實施例二所述呈現(xiàn)三維圖形的方法流程圖;圖7是本發(fā)明實施例三所述呈現(xiàn)三維圖形的裝置結構圖。
具體實施例方式為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖和具體實 施方式對本發(fā)明作進一步詳細的說明。本發(fā)明針對三維圖元放大后的渲染,提出了一種改進的方法,根據(jù)圖元的建立時 間確定先后渲染順序,不同于現(xiàn)有技術按照像素深度進行渲染。其中,所述“放大”可以解釋為兩種含義第一種是把一個圖元調整的離觀察者近 一些,即ζ值增大,觀察者感覺圖元在放大;第二種“放大”,就是單純的進行縮放,即x、Y軸 的縮放,但是Z軸沒有變化。本實施例中,所述“放大”是指第一種含義。其中,所述圖元是一套軟件或者系統(tǒng)能操控的基本單位,一根線、一個矩形、一幅 截圖等都是圖元,圖元的組合體也是圖元,分別為簡單圖元和復雜圖元。本發(fā)明所指圖元包 括所述的簡單圖元和復雜圖元。其中,圖像渲染是將基于對象的高級描述轉換為用于在某個顯示設備上顯示的圖 形化圖像。例如,在將三維對象或場景的數(shù)學模型轉換為位像期間,就會發(fā)生圖像渲染的動作。通常,稱為圖形渲染引擎的硬件設備執(zhí)行這些圖形處理任務。圖形渲染引擎通常 將場景渲染到隨后被輸出到圖形輸出設備的存儲器緩沖器中,但某些渲染引擎可以將其二 維輸出直接寫到輸出設備中。圖形渲染引擎插入圖元數(shù)據(jù)來計算表示每個圖元的顯示屏幕 象素,并計算每個象素的R、G和B顏色值。下面通過實施例進行詳細說明。實施例一參照圖5,是本發(fā)明實施例一所述放大三維圖形的方法流程圖。步驟501,在包含多個圖元的顯示區(qū)域,放大該顯示區(qū)域中的三維圖元;在一顯示區(qū)域,顯示了包含三維圖元在內的多個圖元,圖元之間存在疊加關系。放 大三維圖元,其它圖元保持不變。步驟502,渲染放大后的三維圖元時,關閉該三維圖元的深度緩沖,使深度值對渲 染無效;三維圖元被放大后,重新進行渲染繪制,該渲染過程與深度緩沖無關,因此關閉該 三維圖元的深度緩沖。但是,放大后的三維圖元的像素深度仍增大。步驟503,然后根據(jù)所述各圖元建立的時間順序,對所述放大后的三維圖元進行渲 染;如果放大后的三維圖元與其他圖元有重疊,則對重疊部分進行渲染時,比較該三 維圖元與重疊圖元的建立時間,并保留建立時間較晚的圖元的渲染結果。步驟504,對渲染后的三維圖元在該顯示區(qū)域重新呈現(xiàn)。重新顯示放大后的三維圖元,在重疊部分,顯示上述步驟保留的渲染結果。如果在 相同的像素位置,三維圖元的建立時間早于重疊圖元,則對放大后的三維圖元渲染時將重 疊部分裁剪掉,仍舊保留建立時間較晚的重疊圖元的渲染結果,并顯示。綜上所述,本發(fā)明對三維圖元進行放大,增大其像素深度之后,對該三維圖元重新 進行渲染繪制時,關閉該三維圖元的深度緩沖,使深度值對渲染無效,然后根據(jù)圖元建立的 時間順序,在相同像素位置保留建立時間較晚的圖元像素深度,并最終顯示。這樣,渲染過 程與像素深度無關,不會受像素深度的影響,從而避免了圖元先后位置互換的現(xiàn)象。實施例二 仍以圖2為例,放大三維椎體的顯示效果如圖4所示。下面具體說明。參照圖6,是本發(fā)明實施例二所述呈現(xiàn)三維圖形的方法流程圖。步驟601,建立三維椎體和二維文字時,分別新建Z_0rder屬性和專家模式屬性;每個圖元會有很多屬性,其中有兩個屬性是Z_0rder屬性(深度排序屬性)和專 家模式屬性,用于實現(xiàn)圖元按時間順序繪制的效果。其中,Z_0rder屬性定義了相同像素位 置的深度排序,專家模式屬性定義了渲染模式、繪制模式、繪制線寬、光照屬性、DepthTest 屬性、RGB 以及 Alpha 屬性、Backfaceculling 屬性、ZBuffer 屬性等。步驟602,對Z_0rder和專家模式屬性進行初始化;步驟603,關閉Z_0rder屬性中的Z_0rder選項,即置為FALSE ;同時關閉專家模式 屬性中的D印thTest選項(即ζ軸屬性),即置為FALSE ;步驟604,對三維椎體和二維文字進行渲染時,把新建的兩屬性分別添加到對應圖 元上;
其中,本實施例提供了兩種添加方式一種是直接添加到相應圖元上,這時控制被 添加圖元的ζ軸屬性;另一種是直接添加到一個場景上,一個場景通常包括多個圖元,因此 該場景中所有圖元的ζ軸屬性都被控制。步驟605,通過判斷所述兩個屬性,關閉圖元的深度緩沖;渲染和繪制的過程中會判斷圖元上的Z_0rder選項和D^thTest選項,如果都為 FALSE,則渲染時關閉深度緩沖,使深度值對渲染無效。步驟606,針對相同像素位置(即重疊部分),比較二者的建立時間;對于不同像素位置(即不重疊的部分),則分別進行渲染繪制。步驟607,比較結果是三維椎體的建立時間早于二維文字,則保留二維文字在相同 像素位置的渲染結果,并顯示;步驟608,對三維椎體進行放大操作;步驟609,對放大后的三維椎體重新進行渲染,與二維文字重疊的像素位置,仍舊 保留建立時間較晚的二維文字的渲染結果;渲染過程如前所述,重復步驟604-607 ;步驟610,顯示放大后的三維椎體。最終顯示效果如圖4所示,三維椎體仍舊按照原始的疊加次序,被二維文字遮擋。實施例三參照圖7,是本發(fā)明實施例三所述呈現(xiàn)三維圖形的裝置結構圖。所述裝置包括放大操作單元71,用于在包含多個圖元的顯示區(qū)域,放大該顯示區(qū)域中的三維圖 元;深度緩沖控制單元72,用于渲染放大后的三維圖元時,關閉該三維圖元的深度緩 沖,使深度值對渲染無效;渲染單元73,用于根據(jù)所述各圖元建立的時間順序,對所述放大后的三維圖元進 行渲染;在所述三維圖元與其它圖元存在重疊的像素位置,比較三維圖元與其它圖元的建 立時間,然后保留建立時間較晚的圖元的渲染結果;顯示單元74,用于對渲染后的三維圖元在該顯示區(qū)域重新呈現(xiàn)。所述裝置還可以包括圖元建立單元,用于建立圖元;該圖元建立單元包括屬性建立子單元,用于新建深度緩沖控制屬性和深度排序屬性;初始化子單元,用于初始化所述深度緩沖控制屬性和深度排序屬性,并將各圖元 的深度緩沖控制屬性和深度排序屬性都設置為FALSE。所述裝置還可以包括屬性添加單元75,用于將深度緩沖控制屬性和深度排序屬性添加到該三維圖元;渲染放大后的三維圖元時,深度緩沖控制單元72通過判斷該三維圖元的深度緩 沖控制屬性和深度排序屬性都為FALSE,關閉該三維圖元的深度緩沖。所述屬性添加單元72可以包括第一添加子單元,用于將深度緩沖控制屬性和深度排序屬性直接添加到相應圖元 上;
或者包括,第二添加子單元,用于將深度緩沖控制屬性和深度排序屬性直接添加 到應用場景中,則該應用場景中的所有圖元都添加了所述兩個屬性。上述裝置使渲染與像素深度無關,從而避免了現(xiàn)有技術改變圖元原始疊加次序的 問題。本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與 其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置實施例 而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部 分說明即可。以上對本發(fā)明所提供的一種三維圖像的呈現(xiàn)方法和裝置,進行了詳細介紹,本文 中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫 助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據(jù)本發(fā)明的思 想,在具體實施方式
及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對 本發(fā)明的限制。
權利要求
1.一種三維圖像的呈現(xiàn)方法,其特征在于,包括在包含多個圖元的顯示區(qū)域,放大該顯示區(qū)域中的三維圖元; 渲染放大后的三維圖元時,關閉該三維圖元的深度緩沖,使深度值對渲染無效; 然后根據(jù)所述各圖元建立的時間順序,對所述放大后的三維圖元進行渲染; 對渲染后的三維圖元在該顯示區(qū)域重新呈現(xiàn)。
2.根據(jù)權利要求1所述的方法,其特征在于,根據(jù)所述各圖元建立的時間順序,對所述 放大后的三維圖元進行渲染,包括在所述三維圖元與其它圖元存在重疊的像素位置,比較三維圖元與其它圖元的建立時間;保留建立時間較晚的圖元的渲染結果。
3.根據(jù)權利要求1所述的方法,其特征在于,還包括建立圖元,包括 新建深度緩沖控制屬性和深度排序屬性;初始化所述深度緩沖控制屬性和深度排序屬性,并將各圖元的深度緩沖控制屬性和深 度排序屬性都設置為FALSE。
4.根據(jù)權利要求3所述的方法,其特征在于,通過以下方式關閉該三維圖元的深度緩沖將深度緩沖控制屬性和深度排序屬性添加到該三維圖元;渲染放大后的三維圖元時,通過判斷該三維圖元的深度緩沖控制屬性和深度排序屬性 都為FALSE,關閉該三維圖元的深度緩沖。
5.根據(jù)權利要求4所述的方法,其特征在于,所述添加包括 將深度緩沖控制屬性和深度排序屬性直接添加到相應圖元上;或者,將深度緩沖控制屬性和深度排序屬性直接添加到應用場景中,則該應用場景中 的所有圖元都添加了所述兩個屬性。
6.一種三維圖像的呈現(xiàn)裝置,其特征在于,包括放大操作單元,用于在包含多個圖元的顯示區(qū)域,放大該顯示區(qū)域中的三維圖元; 深度緩沖控制單元,用于渲染放大后的三維圖元時,關閉該三維圖元的深度緩沖,使深 度值對渲染無效;渲染單元,用于根據(jù)所述各圖元建立的時間順序,對所述放大后的三維圖元進行渲染;顯示單元,用于對渲染后的三維圖元在該顯示區(qū)域重新呈現(xiàn)。
7.根據(jù)權利要求6所述的裝置,其特征在于所述渲染單元在所述三維圖元與其它圖元存在重疊的像素位置,比較三維圖元與其它 圖元的建立時間,然后保留建立時間較晚的圖元的渲染結果。
8.根據(jù)權利要求6所述的裝置,其特征在于,還包括 圖元建立單元,用于建立圖元;該圖元建立單元包括屬性建立子單元,用于新建深度緩沖控制屬性和深度排序屬性; 初始化子單元,用于初始化所述深度緩沖控制屬性和深度排序屬性,并將各圖元的深 度緩沖控制屬性和深度排序屬性都設置為FALSE。
9.根據(jù)權利要求8所述的裝置,其特征在于,還包括屬性添加單元,用于將深度緩沖控制屬性和深度排序屬性添加到該三維圖元; 渲染放大后的三維圖元時,所述深度緩沖控制單元通過判斷該三維圖元的深度緩沖控 制屬性和深度排序屬性都為FALSE,關閉該三維圖元的深度緩沖。
10.根據(jù)權利要求9所述的裝置,其特征在于,所述屬性添加單元包括 第一添加子單元,用于將深度緩沖控制屬性和深度排序屬性直接添加到相應圖元上; 或者包括,第二添加子單元,用于將深度緩沖控制屬性和深度排序屬性直接添加到應 用場景中,則該應用場景中的所有圖元都添加了所述兩個屬性。
全文摘要
本發(fā)明提供了一種三維圖像的呈現(xiàn)方法和裝置,該方法對三維圖元進行放大,增大其像素深度之后,對該三維圖元重新進行渲染繪制時,關閉該三維圖元的深度緩沖,使深度值對渲染無效,然后根據(jù)圖元建立的時間順序,在相同像素位置保留建立時間較晚的圖元像素深度,并最終顯示。這樣,渲染過程與像素深度無關,不會受像素深度的影響,從而避免了圖元先后位置互換的現(xiàn)象。
文檔編號G06T15/00GK102063734SQ200910237760
公開日2011年5月18日 申請日期2009年11月18日 優(yōu)先權日2009年11月18日
發(fā)明者呂精華, 廖健, 沈季, 鄭培楓 申請人:新奧特(北京)視頻技術有限公司