專(zhuān)利名稱(chēng):一種圖形的路徑構(gòu)建方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多媒體技術(shù)領(lǐng)域,特別是涉及一種圖形的路徑構(gòu)建方法。
背景技術(shù):
隨著計(jì)算機(jī)圖形圖像技術(shù)和計(jì)算機(jī)硬件技術(shù)的發(fā)展,計(jì)算機(jī)動(dòng)畫(huà)和圖形 圖像處理廣泛應(yīng)用于軍事、娛樂(lè)、廣告、仿真、教育等領(lǐng)域。精彩的電影特 技,精美的產(chǎn)品模型設(shè)計(jì),身臨其境的模擬訓(xùn)練器和逼真的游戲動(dòng)畫(huà),無(wú)不 體現(xiàn)著現(xiàn)代圖形圖像技術(shù)的強(qiáng)大能力。計(jì)算機(jī)硬件技術(shù)的發(fā)展,為計(jì)算機(jī)圖 形圖像技術(shù)的發(fā)展提供了物質(zhì)保障,而計(jì)算機(jī)圖形圖像技術(shù)的發(fā)展,對(duì)計(jì)算 機(jī)硬件系統(tǒng)的要求越來(lái)越高,又促使計(jì)算機(jī)硬件系統(tǒng)不斷更新發(fā)展。圖形圖 像渲染引擎是圖形圖像處理系統(tǒng)的核心,每一個(gè)現(xiàn)代圖形圖像系統(tǒng)都需要與 之功能相適應(yīng)的引擎,提供其圖形圖像處理的技術(shù)基礎(chǔ)。圖形圖像應(yīng)用系統(tǒng) 通過(guò)渲染引擎把模型、動(dòng)畫(huà)、光影、特效等所有效果計(jì)算出來(lái)并以圖像形式 顯示,圖像最終的輸出質(zhì)量由圖形圖像應(yīng)用系統(tǒng)直接決定。
常見(jiàn)的渲染引擎,如OpenGL和Direct3D,使用傳統(tǒng)的三維變換渲染三 維圖形,將一個(gè)圖形生成圖像并顯示在屏幕上。如圖l所示,為現(xiàn)有技術(shù)中 圖形的路徑構(gòu)建方法流程圖,包括以下步驟
步驟101,通過(guò)建模變換矩陣將物體空間中的圖形放置在世界空間中。 步驟102,通過(guò)視變換矩陣將世界空間中的圖形放置在眼空間中。 步驟103,通過(guò)投影變換矩陣將眼空間中的圖形放置在剪裁空間中。 步驟104,通過(guò)透視除法將剪裁空間中的圖形放置在標(biāo)準(zhǔn)設(shè)備空間中。 步驟105,通過(guò)視圖和深度范圍變換將標(biāo)準(zhǔn)設(shè)備空間中的圖形放置在 窗口空間中。
步驟106,改變建模變換矩陣。
步驟107,通過(guò)改變過(guò)的建模變換矩陣控制圖形在世界空間中的位置。上述步驟中,每個(gè)從一個(gè)空間到另一個(gè)空間的變換,都是一個(gè)矩陣的操 作。在工程中創(chuàng)建完一個(gè)圖形,該圖形會(huì)在物體空間中有一個(gè)物體空間坐標(biāo)。 如果想把該圖形放置在世界空間中,就需要得到該圖形的世界空間坐標(biāo)。該 圖形的世界空間坐標(biāo)是通過(guò)該圖形的物體空間坐標(biāo)乘以 一個(gè)轉(zhuǎn)換矩陣得到 的,這個(gè)矩陣是物體空間坐標(biāo)經(jīng)過(guò)旋轉(zhuǎn)、縮放和平移的體現(xiàn),稱(chēng)為建模變換 矩陣。目前,對(duì)圖形在空間中的操控是在這一步完成的,也就是改變建模變 換的矩陣使圖形處于不同的空間位置。
在有些情況下,需要輸出的圖像沿一定的路徑運(yùn)動(dòng)或者離開(kāi)屏幕,并控 制圖像進(jìn)入或離開(kāi)屏幕的時(shí)間和位置,現(xiàn)有技術(shù)中,只能通過(guò)改變建模變換 矩陣,在世界空間中控制圖形的運(yùn)動(dòng),而無(wú)法在最終的視覺(jué)效果上達(dá)到控制 目的。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種圖形的路徑構(gòu)建方法,實(shí)現(xiàn)了在最終的視覺(jué)效果 上控制輸出的圖像運(yùn)動(dòng),并使該路徑正對(duì)攝像機(jī)或觀(guān)察者的眼睛的目的。
為達(dá)到上述目的,本發(fā)明實(shí)施例提出一種^ 各徑構(gòu)建方法,包括以下步驟 設(shè)定圖形的^各徑方向; 獲取所述圖形的空間變換矩陣; 沖艮據(jù)所述空間變換矩陣計(jì)算所述圖形的路徑距離; 根據(jù)所述圖形的路徑方向和路徑距離構(gòu)建所述圖形的路徑。 所述計(jì)算路徑距離之前,還包括 獲取包圍所述圖形的長(zhǎng)方體空間的頂點(diǎn)坐標(biāo); 根據(jù)所述路徑方向和所述頂點(diǎn)坐標(biāo)計(jì)算所述圖形離開(kāi)屏幕的位置。 所述獲取包圍所述圖形的長(zhǎng)方體空間的頂點(diǎn)坐標(biāo),具體包括 獲取包圍所述圖形的長(zhǎng)方體空間的頂點(diǎn)的物體空間坐標(biāo); 根據(jù)所述圖形的空間變換矩陣將包圍所述圖形的長(zhǎng)方體空間的頂點(diǎn)的物 體空間坐標(biāo)轉(zhuǎn)換為包圍所述圖形的長(zhǎng)方體空間的頂點(diǎn)的標(biāo)準(zhǔn)設(shè)備空間坐標(biāo)。 所述根據(jù)路徑方向和頂點(diǎn)坐標(biāo)計(jì)算所述圖形離開(kāi)屏幕的位置,具體包括:根據(jù)所述路徑方向和所述頂點(diǎn)坐標(biāo)計(jì)算所述圖形離開(kāi)屏幕的位置的標(biāo)準(zhǔn)
設(shè)備空間坐標(biāo);
根據(jù)所述圖形的空間變換矩陣將所述圖形離開(kāi)屏幕的位置的標(biāo)準(zhǔn)設(shè)備空 間坐標(biāo)轉(zhuǎn)換為所述圖形離開(kāi)屏幕的位置的物體空間坐標(biāo)。
本發(fā)明實(shí)施例的技術(shù)方案具有以下優(yōu)點(diǎn),因?yàn)椴捎昧藢?duì)圖形路徑的構(gòu)建 機(jī)制,達(dá)到了控制圖形運(yùn)動(dòng)路徑,并使該路徑正對(duì)攝像機(jī)或觀(guān)察者的眼睛的 目的。
圖1為現(xiàn)有技術(shù)中圖形的路徑構(gòu)建方法流程圖2為本發(fā)明實(shí)施例中圖形的路徑構(gòu)建方法流程圖3為本發(fā)明實(shí)施中圖形的路徑構(gòu)建具體實(shí)現(xiàn)方式流程圖。
具體實(shí)施例方式
下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì)描述 如圖2所示,為本發(fā)明實(shí)施例中圖形的路徑構(gòu)建方法流程圖,包括以下步 驟
步驟201,設(shè)定圖形的路徑方向。
圖形的路徑方向?yàn)闃?biāo)準(zhǔn)設(shè)備空間中的一個(gè)三維向量,表示圖形的運(yùn)動(dòng)方向。
步驟202,獲取圖形的空間變換坐標(biāo)。
圖形的空間變換矩陣包括建模變換矩陣、視變換矩陣和投影變換矩陣。 步驟203,計(jì)算圖形的路徑距離。
圖形的路徑距離為圖形的初始位置和圖形離開(kāi)屏幕的位置之間的距離。 步驟204,根據(jù)圖形的路徑方向和圖形的路徑距離構(gòu)建路徑。 在得到圖形的路徑方向和圖形的路徑距離之后,可以確定圖形在每一 時(shí) 刻的位置,從而完成對(duì)路徑的構(gòu)建。
如圖3所示,為本發(fā)明實(shí)施中圖形的路徑構(gòu)建具體實(shí)現(xiàn)方式流程圖,包括以下步驟
步驟301 ,通過(guò)建模變換矩陣將物體空間中的圖形放置在世界空間中。 將圖形在物體空間中的坐標(biāo)乘以建模變換矩陣,即得到圖形在世界空
間中的坐標(biāo),圖形也被放置在世界空間中。
步驟302,通過(guò)視變換矩陣將世界空間中的圖形放置在眼空間中。 將圖形在世界空間中的坐標(biāo)乘以視變換矩陣,即得到圖形在眼空間中
的坐標(biāo),圖形也被放置在眼空間中。
步驟303,通過(guò)投影變換矩陣將眼空間中的圖形放置在剪裁空間中。 將圖形在眼空間中的坐標(biāo)乘以投影變換矩陣,即得到圖形在剪裁空間
中的坐標(biāo),圖形也被放置在剪裁空間中。
步驟304,通過(guò)透視除法將剪裁空間中的圖形放置在標(biāo)準(zhǔn)設(shè)備空間中。 剪裁空間的坐標(biāo)是齊次形式〈x,y,z,w〉的,使用透視除法,即用w除x、
y、 z,便可得到圖形在標(biāo)準(zhǔn)設(shè)備空間中的坐標(biāo),圖形也被放置在標(biāo)準(zhǔn)設(shè)備
空間中。
步驟305,通過(guò)視圖和深度范圍變換將標(biāo)準(zhǔn)設(shè)備空間中的圖形放置在 窗口空間中。
取圖形的標(biāo)準(zhǔn)設(shè)備坐標(biāo),進(jìn)行視圖和深度范圍變換后,得到圖形早窗 口空間中的坐標(biāo),圖形被放置在窗口空間中,并以圖像的形式顯示輸出。 然而,輸出的圖像是否正對(duì)攝像機(jī)和觀(guān)察者的眼睛,依賴(lài)于攝像機(jī)和觀(guān)察 者的位置,即視變換矩陣。 一旦視變換矩陣改變,輸出的圖像將不再正對(duì) 攝像機(jī)和觀(guān)察者的眼睛。
步驟306,設(shè)定圖形的路徑方向。
步驟307,從圖形流水線(xiàn)中獲取空間變換矩陣。
獲取的空間變換矩陣包括建模變換矩陣、視變換矩陣和投影變換矩陣, 建模變換矩陣記為matModel,視變換矩陣記為matView,投影變換矩陣記為 matProj 。
步驟3 08 ,獲取包圍圖形的長(zhǎng)方體空間的頂點(diǎn)的物體空間坐標(biāo)。
包圍圖形的長(zhǎng)方體空間的八個(gè)頂點(diǎn)構(gòu)成一個(gè)包圍盒,用來(lái)描述圖形的大小、朝向等屬性。
步驟309,將包圍圖形的長(zhǎng)方體空間的頂點(diǎn)的物體空間坐標(biāo)轉(zhuǎn)換為包圍圖 形的長(zhǎng)方體空間的頂點(diǎn)的標(biāo)準(zhǔn)設(shè)備空間坐標(biāo)。
根據(jù)圖形的空間變換矩陣,可將包圍圖形的長(zhǎng)方體空間的頂點(diǎn)的物體空 間坐標(biāo)轉(zhuǎn)換為包圍圖形的長(zhǎng)方體空間的頂點(diǎn)的標(biāo)準(zhǔn)設(shè)備空間坐標(biāo),即用包圍 圖形的長(zhǎng)方體空間的頂點(diǎn)的物體空間坐標(biāo)依次乘以matModel、 matView和 matProj,再進(jìn)行透^L除法,便得到包圍圖形的長(zhǎng)方體空間的頂點(diǎn)在標(biāo)準(zhǔn)設(shè)備 空間中的坐標(biāo),x,y,z的坐標(biāo)值均在-1和1之間。
步驟310 ,根據(jù)路徑方向和包圍圖形的長(zhǎng)方體空間的頂點(diǎn)的標(biāo)準(zhǔn)設(shè)備空間 坐標(biāo)計(jì)算圖形離開(kāi)標(biāo)準(zhǔn)設(shè)備空間的位置。
先根據(jù)路徑方向判斷圖形可能從那個(gè)裁減面離開(kāi)屏幕。路徑方向記為 VecDir (三維向量),分別計(jì)算abs ( VecDir[O]) /VecDir
, abs ( VecDir[l]) /VecDir[1], abs ( VecDir[2])/VecDir[2],分別記為fX,fY,fZ,是三維向量VecDir 在每個(gè)方向上分量的絕對(duì)值除以這個(gè)分量的值(如這個(gè)方向上分量為0,不再 計(jì)算這個(gè)式子)。上述三個(gè)式子(除分母為0的情況)只能是1或-1,如GC,fY,fZ 分別為1, -1, 0,表明圖形可能從x正方向裁剪面,y負(fù)方向裁剪面離開(kāi)屏幕 (z方向分量為O,不可能從z方向的裁剪面離開(kāi)屏幕)。
取包圍盒一個(gè)頂點(diǎn)的坐標(biāo),記為VecPos,如下式子(fX-VecPos[O]) /VecDir
, ( fY-VecPos[l] ) /VecDir[1], ( fZ-VecPos[2] ) /VecDir[2],計(jì)算分 母不為0的式子,將最小的值記為Min。
依次取包圍盒的其他頂點(diǎn),重復(fù)上一步的計(jì)算,并比較每次計(jì)算的結(jié)果, 將八個(gè)頂點(diǎn)計(jì)算結(jié)果中的最小值賦給fMinAll.將這個(gè)最小值對(duì)應(yīng)的頂點(diǎn)坐標(biāo) 賦給VecPosMin。
從上述步驟可以知道物體是從哪個(gè)裁剪面離開(kāi)屏幕的(fMinAll對(duì)應(yīng)的式 子的方向,又可以從知道是正方向還是負(fù)方向),可進(jìn)一步計(jì)算這個(gè)頂點(diǎn)離開(kāi) 這個(gè)裁剪面的位置,如fMinAll對(duì)應(yīng)x方向,則這個(gè)頂點(diǎn)離開(kāi)裁剪面的位置的 x,y,z坐標(biāo)為VecDir
/abs(VecDir [O]), fMinAll* VecDir [1]+ VecPosMin [l], fMinAll* VecDir [2]+ VecPosMin [2])。
7步驟311,將圖形離開(kāi)標(biāo)準(zhǔn)設(shè)備空間的位置的標(biāo)準(zhǔn)設(shè)備空間坐標(biāo)轉(zhuǎn)換為
該位置在物體空間中的坐標(biāo)。
記matMVP=matModel*matView*matProj , 3奪圖形離開(kāi)才示準(zhǔn)i殳備空間的 位置的標(biāo)準(zhǔn)設(shè)備空間坐標(biāo)乘以matMVP的逆矩陣,即得到該位置在物體坐 標(biāo)系中的坐標(biāo)。
步驟312,計(jì)算圖形的路徑距離。
將圖形離開(kāi)標(biāo)準(zhǔn)設(shè)備空間的位置的物體空間坐標(biāo)與圖形的初始位置物 體空間坐標(biāo)(O, 0, O)相減,即得到圖形的路徑距離。
步驟313,根據(jù)圖形的路徑方向和路徑距離構(gòu)建路徑。
根據(jù)設(shè)定的路徑方向,計(jì)算當(dāng)前幀圖形運(yùn)動(dòng)到路徑(物體空間中的) 的位置,記為VecTempPos (三維向量),(比如我們給定100幀物體沿直線(xiàn) 運(yùn)動(dòng)離開(kāi)屏幕,那第20幀的時(shí)候運(yùn)動(dòng)到20%的位置)。
得到物體空間中構(gòu)建的路徑的長(zhǎng)度,將前面計(jì)算的路徑距離除以這個(gè)值, 記為fScale(縮放因子, 一維的)。用VecTempPos乘以fScale (也就是 VecTempPos的x, y, z分量分別乘以fScale)得到一個(gè)新的向量,記為 VecTempPos 。再VecTempPos乘以matModel和matView的兩個(gè)S走轉(zhuǎn)頭巨陣的 乘積,得到一個(gè)新的向量,將這個(gè)向量轉(zhuǎn)化為建模變換中的平移矩陣。
通過(guò)圖形流水線(xiàn)可以看到當(dāng)前幀的效果,從而完成路徑的構(gòu)建,控制圖 形在給定的時(shí)間內(nèi)進(jìn)入或離開(kāi)屏幕,并正對(duì)攝像機(jī)或觀(guān)察者的眼睛。
本發(fā)明實(shí)施例的技術(shù)方案具有以下優(yōu)點(diǎn),因?yàn)椴捎昧藢?duì)圖形路徑的構(gòu)建 機(jī)制,達(dá)到了控制圖形運(yùn)動(dòng)路徑,并使該路徑正對(duì)攝像機(jī)或觀(guān)察者的眼睛的 目的。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本 發(fā)明可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬 件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技 術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體
現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使 得一臺(tái)終端設(shè)備(可以是手機(jī),個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的 普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)
和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)^L本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種圖形的路徑構(gòu)建方法,其特征在于,包括以下步驟設(shè)定圖形的路徑方向;獲取所述圖形的空間變換矩陣;根據(jù)所述空間變換矩陣計(jì)算所述圖形的路徑距離;根據(jù)所述圖形的路徑方向和路徑距離構(gòu)建所述圖形的路徑。
2、 如權(quán)利要求1所述路徑構(gòu)建方法,其特征在于,所述計(jì)算路徑距離之 前5還包括二獲取包圍所述圖形的長(zhǎng)方體空間的頂點(diǎn)坐標(biāo); 根據(jù)所述路徑方向和所述頂點(diǎn)坐標(biāo)計(jì)算所述圖形離開(kāi)屏幕的位置。
3、 如權(quán)利要求2所述路徑構(gòu)建方法,其特征在于,所述獲取包圍所述圖 形的長(zhǎng)方體空間的頂點(diǎn)坐標(biāo),具體包括獲^^包圍所述圖形的長(zhǎng)方體空間的頂點(diǎn)的物體空間坐標(biāo); 根據(jù)所述圖形的空間變換矩陣將包圍所述圖形的長(zhǎng)方體空間的頂點(diǎn)的物 體空間坐標(biāo)轉(zhuǎn)換為包圍所述圖形的長(zhǎng)方體空間的標(biāo)準(zhǔn)設(shè)備空間坐標(biāo)。
4、 如權(quán)利要求3所述路徑構(gòu)建方法,其特征在于,所述根據(jù)路徑方向和 頂點(diǎn)坐標(biāo)計(jì)算所述圖形離開(kāi)屏幕的位置,具體包括根據(jù)所述路徑方向和所述頂點(diǎn)坐標(biāo)計(jì)算所述圖形離開(kāi)屏幕的位置的標(biāo)準(zhǔn) i殳備空間坐標(biāo);根據(jù)所述圖形的空間變換矩陣將所述圖形離開(kāi)屏幕的位置的標(biāo)準(zhǔn)設(shè)備空 間坐標(biāo)轉(zhuǎn)換為所述圖形離開(kāi)屏幕的位置的物體空間坐標(biāo)。
全文摘要
本發(fā)明實(shí)施例公開(kāi)了一種圖形的路徑構(gòu)建方法,包括以下步驟設(shè)定圖形的路徑方向;獲取所述圖形的空間變換矩陣;獲取包圍所述圖形的長(zhǎng)方體空間的頂點(diǎn)坐標(biāo);根據(jù)所述路徑方向和所述頂點(diǎn)坐標(biāo)計(jì)算所述圖形進(jìn)入或離開(kāi)屏幕的位置。根據(jù)所述空間變換矩陣計(jì)算所述圖形的路徑距離;根據(jù)所述圖形的路徑方向和路徑距離構(gòu)建所述圖形的路徑。本發(fā)明實(shí)施例采用了對(duì)圖形路徑的構(gòu)建機(jī)制,達(dá)到了控制圖形運(yùn)動(dòng)路徑,并使該路徑正對(duì)攝像機(jī)或觀(guān)察者的眼睛的目的。
文檔編號(hào)G06T15/70GK101593362SQ20081011270
公開(kāi)日2009年12月2日 申請(qǐng)日期2008年5月26日 優(yōu)先權(quán)日2008年5月26日
發(fā)明者歡 蔡 申請(qǐng)人:新奧特(北京)視頻技術(shù)有限公司