專利名稱:影像物件的隱藏面移除的預先揀選方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明有關于一種隱藏面移除技術(Hidden SurfaceRemoval,HSR),且特別有關 于一種影像物件的隱藏面移除的預先揀選方法與系統(tǒng)。
背景技術:
隱藏面移除(HSR)屬于圖形繪制管線(Graphics RenderingPipeline)中頗為重 要的一環(huán),其基本理念為“在繪制一個3D物體的時候,通常后面的部分會被前面的部分蓋 掉而看不到,所以只畫出看的到的部分,看不到的部分就不畫,如此可提高繪制速度”。也就 是說,如果一個多邊形(Polygon)在經(jīng)過繪制管線處理并被繪制在目標物件上后,屬于這 個多邊形的像素最終不會被人眼觀察到,故可以將繪制該多邊形的整個過程都視為是多余 而且可以被移除的。揀選方法(Culling)為其中一種HSR演算法,其概念為將一多邊形經(jīng)過坐標轉(zhuǎn) 換(Transform)后,其坐標會落在人眼空間(eye space)。如果該多邊形的其中一工作面 (Face)的法線(Normal)與人眼的法線的夾角超過90度,則該工作面即視為正面(Front Face),反之,若該夾角小于90度,則該工作面即視為背面(Back Face),如圖1所示。因 此,可以依照裝置驅(qū)動程序接口(Device Driver Interface,DDI)提供的設定(Back/ FrontFace Culling),來決定是否要將該多邊形送入硬件(Hardware,HW)的繪制管線。也就是說,依照人眼位置/方向(Eye Position/Direction),可以推測一個多邊 形是位于人眼看的到的方向,或是看不到的方向。傳統(tǒng)揀選方法的缺點包括下列二點。(1)運作于人眼空間(Eye Space)。也就是說,在執(zhí)行揀選(Culling)的計算前, 必須經(jīng)過坐標轉(zhuǎn)換(Transform)與光源照射(Lighting)的過程,如果一個多邊形可以事先 知道其是可以被移除的,那么該揀選計算可以被視為是多余的。(2)需要實時(Real-time)計算人眼的法線與多邊形的每一工作面的法線的夾 角。一般來說,該夾角的計算表示為((xl-xO)X(y2-yO)) > ((χ2-χ0) X (yl_y0)),其需 要存取六個浮點數(shù)、兩個乘法指令、四個減法指令以及一個比較指令,計算相當?shù)姆睆颓屹M 時。
發(fā)明內(nèi)容
本發(fā)明提供一種影像物件的隱藏面移除的預先揀選方法與系統(tǒng),其為一改良式的 揀選(Culling)方法。本發(fā)明提供了一種影像物件的隱藏面移除的預先揀選方法。當欲執(zhí)行一描繪操作 時,將一人眼坐標自一人眼空間轉(zhuǎn)換至一多邊形所在的一模型空間中。比對該人眼坐標在 該模型空間的一法向量與該多邊形的每一工作面的法向量,以判斷該多邊形的每一工作面 相對于該人眼坐標為正面或反面。本發(fā)明提供了一種影像物件的隱藏面移除的預先揀選系統(tǒng),包括一轉(zhuǎn)換單元、一計算單元、一判斷單元與一描繪單元。當欲執(zhí)行一描繪操作時,該轉(zhuǎn)換單元將一人眼坐標自 一人眼空間轉(zhuǎn)換至一多邊形所在的一模型空間中。該計算單元計算該人眼坐標在該模型空 間中的一法向量。該判斷單元比對該人眼坐標的該法向量與對應該多邊形的每一工作面的 法向量,以判斷該多邊形的每一工作面相對于該人眼坐標為正面或反面。當判斷出該多邊 形的一工作面為反面時,該描繪單元不繪出該工作面在該模型空間中。本發(fā)明所述的揀選方法及系統(tǒng)在執(zhí)行繪制操作時可省去坐標轉(zhuǎn)換與光源照射的 過程以及減少實時計算步驟。
圖1是顯示多邊形的正面與反面表示法的示意圖。圖2是顯示本發(fā)明實施例的影像物件的隱藏面移除的預先揀選方法的步驟流程 圖。
圖3是顯示本發(fā)明實施例的象限分割的示意圖。圖4A是顯示本發(fā)明實施例的象限分類的示意圖。圖4B是顯示本發(fā)明另一實施例的象限分類的示意圖。圖5是顯示本發(fā)明另一實施例的象限分割的示意圖。圖6是顯示本發(fā)明另一實施例的象限分割的示意圖。圖7是顯示本發(fā)明實施例的五邊形的象限分割的示意圖。圖8是顯示本發(fā)明實施例的影像物件的隱藏面移除的預先揀選系統(tǒng)的架構(gòu)示意 圖。
具體實施例方式為了讓本發(fā)明的目的、特征及優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所 附圖式圖2至圖8,做詳細的說明。本發(fā)明說明書提供不同的實施例來說明本發(fā)明不同實施 方式的技術特征。其中,實施例中的各元件的配置為說明之用,并非用以限制本發(fā)明。且實 施例中圖式標號的部分重復,是為了簡化說明,并非意指不同實施例之間的關聯(lián)性。本發(fā)明實施例揭露了一種影像物件的隱藏面移除的預先揀選方法與系統(tǒng)。本發(fā)明實施例的影像物件的隱藏面移除的預先揀選方法為一預先計算的揀選索 弓丨(Pre-Calculated Culling Index,以下簡稱為PCCI)方法,其在模型空間(Model Space) 即可計算,所以可以減少坐標轉(zhuǎn)換(Transform)與光源照射(Lighting)的計算量,在即時 繪制時不需執(zhí)行外積計算(cross operation)而可以降低計算的復雜度,以及可利用硬件 與軟件(Software,Sff)來實現(xiàn)。圖2是顯示本發(fā)明實施例的影像物件的隱藏面移除的預先揀選方法的步驟流程 圖。首先,執(zhí)行一離線(off-line)操作(即,前處理操作)(步驟S21),其包括下列步
馬聚ο將位于模型空間中的一多邊形依其各工作面的法線的方向定義出多個象限(步 驟S31)。利用一外積運算計算取得該多邊形的每一工作面的法向量(步驟S32),并且對每 一法向量執(zhí)行正規(guī)化運算(Normalize)(步驟S33)。完成正規(guī)化運算后,根據(jù)上述定義的象限對每一工作面的 法向量進行分類,以取得對應每一工作面的法向量的PCCI值,并且產(chǎn)生 一 PCCI陣列(步驟S34)。該PCCI陣列儲存在一存儲器中,對應該多邊形的每一工作面的 頂點數(shù)據(jù)儲存在一頂點緩沖區(qū)(Vertex Buffer,VB)中,對應該多邊形的頂點數(shù)據(jù)的索引值 儲存在一索引緩沖區(qū)(IndexBuffer,IB)中。有關象限分割與PCCI陣列說明如下。若定義出A、B、C、D四個象限(如圖3所示),則將一多邊形的工作面計算所得的 法向量分別歸類至A、B、C、D四個象限中而產(chǎn)生對應的PCCI陣列。又,圖4A是顯示一由上往下看的立方體(Cube)的象限示意圖。若將一多邊形分 成A、B、C、D四個象限,以象限A為例,只要任何一個工作面的法線在象限A的范圍內(nèi),該工 作面即被歸類于此象限A。以象限B為例,只要任何一個工作面的法線在象限B的范圍內(nèi), 該工作面即被歸類于此象限B。以象限C為例,只要任何一個工作面的法線在象限C的范 圍內(nèi),該工作面即被歸類于此象限C。以象限D(zhuǎn)為例,只要任何一個工作面的法線在象限D(zhuǎn) 的范圍內(nèi),該工作面即被歸類于此象限D(zhuǎn)。因此,擁有法線Atl的工作面被分類于象限A,產(chǎn) 生的PCCI值則表示為A,而擁有法線Btl的工作面被分類于象限B,產(chǎn)生的PCCI值表示為B。 而擁有法線Ctl的工作面被分類于象限C,產(chǎn)生的PCCI值表示為C。而擁有法線Dtl的工作面 被分類于象限D(zhuǎn),產(chǎn)生的PCCI值表示為D。請參考圖4B中,以象限A與象限B為例,只要任何一個工作面的法線平行于象限A 與象限B的相鄰處,該工作面即被歸類橫跨象限A與象限B。以象限B與象限C為例,只要 任何一個工作面的法線平行于象限B與象限C的相鄰處,該工作面即被歸類橫跨象限B與 象限C。以象限C與象限D(zhuǎn)為例,只要任何一個工作面的法線平行于象限C與象限D(zhuǎn)的相鄰 處,該工作面即被歸類橫跨象限C與象限D(zhuǎn)。以象限D(zhuǎn)與象限A為例,只要任何一個工作面 的法線平行于象限D(zhuǎn)與象限A的相鄰處,該工作面即被歸類橫跨象限D(zhuǎn)與象限A。因此,擁 有法線ABtl的工作面被分類于象限A以及象限B,產(chǎn)生的PCCI值則表示為AB,而擁有法線 BCtlW工作面被分類于象限B以及象限C,產(chǎn)生的PC CI值表示為B C。而擁有法線⑶C1的 工作面被分類于象限C以及象限D(zhuǎn),產(chǎn)生的PCCI值表示為CD。而擁有法線DAtl的工作面被 分類于象限D(zhuǎn)以及象限A,產(chǎn)生的PCCI值表示為DA。在實際操作時,不一定只有四個象限,可以依據(jù)需求增加或減少象限的數(shù)量,如圖 5、圖6所示。分割的象限越少,用以儲存PCCI值的陣列空間就越小。例如,分割為4個象 限,每個PCCI陣列中的元素就只需要占用3個位元。因此,分割的象限數(shù)越少,可以節(jié)省儲 存空間與降低存儲器頻寬的消耗。又,圖7是顯示本發(fā)明實施例的五邊形的象限分割的示意圖。該五邊形的五個工 作面依序為fo、f\、f2> f3與f4,且將該五邊形分為A、B、C、D四個象限,故PCCI陣列中的值 依序表示為AB、B、C、⑶與DA,其分別對應工作面fQ、f\、f2、f3與f4,其中AB、⑶、DA用以表 示該多邊形的對應工作面的法線平行于兩個象限相鄰處。接下來,當欲執(zhí)行一描繪操作(S卩,線上(on-line)操作)時(步驟S22),將人眼 坐標自人眼空間轉(zhuǎn)換至該多邊形所在的模型空間中(步驟S23),并且計算該人眼坐標在 該模型空間中的法向量,從而得知該人眼坐標的法向量位于該多邊形的哪一象限中(步驟 S24)。利用一模型-視野-投射(Model ViewProjection,以下簡稱為MVP)反矩陣將該人 眼位置轉(zhuǎn)換到該多邊形所在的模型空間中,并且根據(jù)該MVP矩陣求得該人眼坐標在該模型空間中的法線。以下以一范例說明MVP反矩陣((MVP)—1)的計算過程。令人眼坐標的法向量為=Normaleye = (x, y,ζ),而將Normaleye映射至模型空間的 計算方式為 Normaleye‘ = NormaleyeX (MVP)"1
"0.36 0.48 -0.8]「0.36 -0.8 0.48"令MVP=-0.8 0.6 0 ,則(MFP)-1 = 0.48 0.6 0.64。
0.48 0.64 0.6 J[-0.8 0 0.6 V|r「0.36 -0.8 0.48—因此,iVo/Twa/明'=少0.48 0.6 0.64。
ζ O·8 0 0.6需注意到,在此演算法中,人眼空間中的攝影機(Camera)的方向向量可視為(0, 0,+ζ),即 Normaleye = (0,0, +ζ)。本發(fā)明不限于使用MVP反矩陣來計算人眼坐標在模型空間中的法向量,更可利用 如Gauss-Jordan演算法、LUdecomposition等方法來計算人眼坐標在模型空間中的法向量。接下來,將該人眼坐標的法向量與該多邊形的每一工作面的PCCI值比對(步驟 S25),以判斷其中一工作面的法向量與該人眼坐標的法向量間的夾角是否大于一預設值 (例如,90度)(步驟S26)。若夾角大于或等于該預設值,表示該工作面為正面,則根據(jù)該頂 點緩沖區(qū)(VB)中的頂點數(shù)據(jù)與該索引緩沖區(qū)(IB)中的索引值,將該工作面繪出在該模型 空間中(步驟S27)。若夾角小于該預設值,表示該工作面為背面,則移除該工作面而不予以 繪出(步驟S28)。舉例來說,參考圖7,當人眼坐標的法向量于象限A時,A、AB、DA為背面。當人眼 坐標的法向量屬于象限B時,PCCI值為B、AB、BC的工作面為背面。當人眼坐標的法向量 屬于象限C時,PCCI值為C、BC、⑶的工作面為背面。當人眼坐標的法向量屬于象限D(zhuǎn)時, PCCI值為D、DA、⑶的工作面為背面,其余的工作面為正面。當人眼坐標的法向量屬于象限 AB時,PCCI值為AB、A、B的工作面為背面,其余的工作面為正面。當人眼坐標的法向量屬 于象限BC時,PCCI值為BC、B、C的工作面為背面,其余的工作面為正面。當人眼坐標的法 向量屬于象限⑶時,PCCI值為⑶、C、D的工作面為背面,其余的工作面為正面。當人眼坐 標的法向量屬于象限D(zhuǎn)A時,PCCI值為DA、A、D的工作面為背面,其余的工作面為正面。因此,如圖7所示,人眼坐標的法向量屬于象限B,則工作面f2、f3與f4要被繪出, 而工作面為fo、fi則被移除,不會繪出。圖8是顯示本發(fā)明實施例的影像物件的隱藏面移除的預先揀選系統(tǒng)的架構(gòu)示意 圖。本發(fā)明實施例的影像物件的隱藏面移除的預先揀選系統(tǒng)包括一前處理單元810、 一轉(zhuǎn)換單元820、一計算單元830、一判斷單元840與一描繪單元850。前處理單元810將位于一模型空間中的一多邊形800依其各工作面的法線的方 向定義出多個象限,利用一外積運算計算取得該多邊形的每一工作面的法向量,并且對每 一法向量執(zhí)行正規(guī)化運算。完成正規(guī)化運算后,前處理單元810根據(jù)上述定義的象限對每 一工作面的法向量進行分類,以取得對應每一工作面的法向量的PCCI值,并且產(chǎn)生一 PCCI 陣列。該PCCI陣列儲存在一儲存介質(zhì)811中,對應該多邊形的每一工作面的頂點數(shù)據(jù)儲存在一頂點緩沖區(qū)(VB)813中,對應該多邊形的頂點數(shù)據(jù)的索引值儲存在一索引緩沖區(qū) (IB)815 中。當欲執(zhí)行一描繪操作時,轉(zhuǎn)換單元820將人眼坐標自人眼空間轉(zhuǎn)換至該多邊形所 在的模型空間中。計算單元830計算該人眼坐標在該模型空間中的法向量,從而得知該人 眼坐標的法向量位于該多邊形的哪一象限中。判斷單元將該人眼坐標的法向量與該多邊形 的每一工作面的PCCI值比對,以判斷其中一工作面的法向量與該人眼坐標的法向量間的 夾角是否大于一預設值(例如,90度)。若夾角大于或等于該預設值,表示該工作面為正面,則描繪單元850根據(jù)該頂點 緩沖區(qū)(VB)813中的頂點數(shù)據(jù)與該索引緩沖區(qū)(IB)815中的索引值,將該工作面繪出在該 模型空間中。若夾角小于該預設值,表示該工作面為背面,則描繪單元850移除該工作面而 不予以繪出。傳統(tǒng)上,欲在3D場景中描繪多邊形物件時,以多邊形物件在場景中移動而人眼固 定不動的方式來將多邊形物件繪出。本發(fā)明方法以多邊形物件固定不動而人眼在場景中移 動的方式來將多邊形物件繪出,其通過一前處理操作先判斷出該多邊形物件的每一工作面 相對于人眼來說為正面或反面,使得在實際執(zhí)行繪制操作時可省卻坐標轉(zhuǎn)換與光源照射的 過程以及減少實時計算步驟。 本發(fā)明的方法,或特定型態(tài)或其部分,可以以程序碼的型態(tài)存在。程序碼可以包含 于實體介質(zhì),如軟盤、光盤片、硬盤、或是任何其他機器可讀取(如計算機可讀取)儲存介 質(zhì),其中,當程序碼被機器,如計算機,載入且執(zhí)行時,此機器變成用以參與本發(fā)明的裝置。 程序碼也可以通過一些傳送介質(zhì),如電線或電纜、光纖、或是任何傳輸形態(tài)進行傳送,其中, 當程序碼被機器,如計算機接收、載入且執(zhí)行時,此機器變成用以參與本發(fā)明的裝置。當在 一般用途處理單元中實現(xiàn)時,程序碼結(jié)合處理單元提供一操作類似于應用特定邏輯電路的 獨特裝置。以上所述僅為本發(fā)明較佳實施例,然其并非用以限定本發(fā)明的范圍,任何熟悉本 項技術的人員,在不脫離本發(fā)明的精神和范圍內(nèi),可在此基礎上做進一步的改進和變化,因 此本發(fā)明的保護范圍當以本申請的權利要求書所界定的范圍為準。附圖中符號的簡單說明如下A、B、C、D 象限;S21 S28 流程步驟;S31 S34 流程步驟;f0 f5 工作面的法 向量;800 多邊形;810 前處理單元;811 儲存介質(zhì);813 頂點緩沖區(qū);815 索引緩沖區(qū); 820 轉(zhuǎn)換單元;830 計算單元;840 判斷單元;850 描繪單元。
權利要求
1.一種影像物件的隱藏面移除的預先揀選方法,其特征在于,包括下列步驟當欲執(zhí)行一描繪操作時,將一人眼坐標自一人眼空間轉(zhuǎn)換至一多邊形所在的一模型空 間中;以及比對該人眼坐標在該模型空間的一法向量與該多邊形的每一工作面的法向量,以判斷 該多邊形的每一工作面相對于該人眼坐標為正面或反面。
2.根據(jù)權利要求1所述的影像物件的隱藏面移除的預先揀選方法,其特征在于,當該 多邊形的一工作面的法向量與該人眼坐標的該法向量間的一夾角小于一預設值時,則該工 作面不繪出在該模型空間中。
3.根據(jù)權利要求1所述的影像物件的隱藏面移除的預先揀選方法,其特征在于,還包 括下列步驟預先執(zhí)行一前處理操作,以取得該多邊形的多個象限與一 PCCI陣列,該PCCI陣列包含 多個PCCI值,每一 PCCI值對應該多邊形的每一工作面的法向量; 計算該人眼坐標在該模型空間中的該法向量; 比對該人眼坐標的該法向量與對應該多邊形的一工作面的一 PCCI值。
4.根據(jù)權利要求3所述的影像物件的隱藏面移除的預先揀選方法,其特征在于,該前 處理操作還包括下列步驟將位于該模型空間中的該多邊形依其各工作面的法線的方向定義出所述象限; 利用一外積運算計算取得該多邊形的每一工作面的法向量; 對該多邊形的每一工作面的法向量執(zhí)行一正規(guī)化運算;以及完成該正規(guī)化運算后,根據(jù)所述象限對該多邊形的每一工作面的法向量進行分類,以 取得對應該多邊形的每一工作面的法向量的所述PCCI值,并且產(chǎn)生該PCCI陣列。
5.根據(jù)權利要求2所述的影像物件的隱藏面移除的預先揀選方法,其特征在于,當該 夾角大于或等于該預設值,則根據(jù)一頂點緩沖區(qū)中的對應該多邊形的頂點數(shù)據(jù)與一索引緩 沖區(qū)中的對應該多邊形的該頂點數(shù)據(jù)的多個索引值,將該工作面繪出在該模型空間中。
6.根據(jù)權利要求1所述的影像物件的隱藏面移除的預先揀選方法,其特征在于,執(zhí)行 一反轉(zhuǎn)換操作以將該人眼坐標自該人眼空間轉(zhuǎn)換至該多邊形所在的該模型空間中。
7.一種影像物件的隱藏面移除的預先揀選系統(tǒng),其特征在于,包括一轉(zhuǎn)換單元,當欲執(zhí)行一描繪操作時,其將一人眼坐標自一人眼空間轉(zhuǎn)換至一多邊形 所在的一模型空間中;一計算單元,其計算該人眼坐標在該模型空間中的一法向量;一判斷單元,比對該人眼坐標的該法向量與對應該多邊形的每一工作面的法向量,以 判斷該多邊形的每一工作面相對于該人眼坐標為正面或反面;以及一描繪單元,當判斷出該多邊形的一工作面為反面時,則不繪出該工作面在該模型空 間中。
8.根據(jù)權利要求7所述的影像物件的隱藏面移除的預先揀選系統(tǒng),其特征在于,還包括一前處理單元,其執(zhí)行一前處理操作,以取得該多邊形的多個象限與一 PCCI陣列,該 PCCI陣列包含多個PCCI值,每一 PCCI值對應該多邊形的每一工作面的法向量;該判斷單元比對該人眼坐標的該法向量與對應該多邊形的一工作面的一 PCCI值。
9.根據(jù)權利要求7所述的影像物件的隱藏面移除的預先揀選系統(tǒng),其特征在于, 當該判斷單元判斷該工作面的法向量與該人眼坐標的該法向量間的一夾角大于或等于一預設值時,則該描繪單元繪出該工作面在該模型空間中;以及當該判斷單元判斷該夾角小于該預設值,則該描繪單元不繪出該工作面。
10.根據(jù)權利要求8所述的影像物件的隱藏面移除的預先揀選系統(tǒng),其特征在于,該前 處理單元將位于該模型空間中的該多邊形依其各工作面的法線的方向定義出所述象限,利 用一外積運算計算取得該多邊形的每一工作面的法向量,對該多邊形的每一工作面的法向 量執(zhí)行一正規(guī)化運算,完成該正規(guī)化運算后,根據(jù)所述象限對該多邊形的每一工作面的法 向量進行分類,以取得對應該多邊形的每一工作面的法向量的所述多個PCCI值,并且產(chǎn)生 該PCCI陣列。
11.根據(jù)權利要求9所述的影像物件的隱藏面移除的預先揀選系統(tǒng),其特征在于,當該 夾角大于或等于該預設值,則該描繪單元根據(jù)一頂點緩沖區(qū)中的對應該多邊形的頂點數(shù)據(jù) 與一索引緩沖區(qū)中的對應該多邊形的該頂點數(shù)據(jù)的多個索引值,將該工作面繪出在該模型 空間中。
12.根據(jù)權利要求7所述的影像物件的隱藏面移除的預先揀選系統(tǒng),其特征在于,該轉(zhuǎn) 換單元執(zhí)行一反轉(zhuǎn)換操作以將該人眼坐標自該人眼空間轉(zhuǎn)換至該多邊形所在的該模型空 間中。
全文摘要
一種影像物件的隱藏面移除的預先揀選方法及系統(tǒng)。該預先揀選方法包括執(zhí)行一前處理操作,以取得一多邊形的多個象限;將一人眼坐標自一人眼空間轉(zhuǎn)換至該多邊形所在的一模型空間中;根據(jù)該人眼坐標所在的其中一象限,比對該人眼坐標的一法向量與該多邊形的每一工作面的法向量,以判斷該多邊形的每一工作面相對于該人眼坐標為正面或反面。本發(fā)明在執(zhí)行繪制操作時可省去坐標轉(zhuǎn)換與光源照射的過程以及減少實時計算步驟。
文檔編號G06T15/40GK102096940SQ20111002060
公開日2011年6月15日 申請日期2011年1月12日 優(yōu)先權日2010年12月14日
發(fā)明者吳裘宏, 蔡宗諭 申請人:威盛電子股份有限公司