顯卡中實現3d骨骼動畫模型的碰撞檢測方法及顯卡、系統的製作方法
2023-05-02 07:16:11 2
專利名稱:顯卡中實現3d骨骼動畫模型的碰撞檢測方法及顯卡、系統的製作方法
技術領域:
本發明涉及計算機繪圖處理領域,尤其涉及一種顯卡中實現3D骨骼動畫 模型的碰撞4企測方法及顯卡、系統。
背景技術:
目前,隨著計算機繪圖處理技術的提高,計算機遊戲的界面變的越來越 漂亮,3D遊戲(三維遊戲)以其場景和打鬥場面形象逼真的特點更受到玩家 的青睞。在3D遊戲中,為模擬真實的人物打鬥場景,常需要在運行該3D遊戲 的計算機上進行大量三維動畫的繪圖處理,則使繪圖時數據運算量較大,以 往這些數據運算處理均由計算機的中央處理器CPU完成,處理後再傳送至顯 卡中進行顯示,但這種方式存在浪費CPU資源,CPU佔用率過高的問題。隨著 顯卡性能的不斷發展完善,這些動畫的繪製工作已由以前的計算機中央處理 器CPU處理,轉至由顯卡進行運算處理,主要是利用顯卡中高性能圖形處理 器GPU進行圖形數據的運算處理,實現3D動畫的繪圖,這樣可以有效節省 CPU的資源,減少CPU的佔用率。
隨著3D動畫技術的不斷完善,現在的3D動畫中常用骨骼動畫來進行3D虛 擬人物的繪製,骨骼動畫的實現思路是從人的身體的運動方式而來的,將動 畫人物的身體(肉、皮膚等)定義為一個網格模型,網格的內部是一個骨架 結構。當人物的骨架運動時,身體就會跟著骨架一起運動。骨架是由一定數 目的骨骼組成的層次結構,每一個骨骼的排列和連接關係對整個骨架的運動 有很重要的影響,每一個骨骼數據都包含其自身的動畫數據,和每個骨骼相 關聯的是的一個網格模型(表示人物的肉、皮膚等),它提供動畫繪製所需 要的幾何才莫型(Vertex, Normal, etc)和紋理材質信息。網祐4莫型的每個頂點都有相應的權值(Weight),這些權值定義了骨骼的運動對有關頂點的影響因 子。當把動畫人物的姿勢和全局運動信息作用到骨骼上時,這個網格模型就 會跟隨骨架一起運動。所以關鍵是對骨架進行動畫生成,生成的方法是用關 鍵幀。關鍵幀動畫是對人物的網格模型採用關鍵幀生成動畫;而骨骼動畫則 是對人物的骨架採用關鍵幀生成動畫,然後再讓網格模型跟隨骨架運動。關 鍵幀動畫實現的關鍵點是根據當前時間,通過插值計算出每個骨骼的旋轉 、平移等值,形成中間幀的骨骼,根據骨骼的變化情況,插值計算出骨骼的 網格模型的各個頂點的位置變化。對於某個特定骨骼,網格模型的頂點變換 矩陣=初始姿勢的變換矩陣的逆x姿勢變換後的矩陣。在顯卡中實現骨骼動 畫的要點是把頂點數據輸入頂點著色器,把當前時間的骨骼在CPU中計算好 ,用常量寄存器的方式輸入顯卡,由顯卡計算頂點的最終位置。由於模擬真 實的需要,常需要對兩個三維模型是否發生碰撞進行檢測,即判斷模型A與 模型B是否有任意一個三角形相交,判斷兩個三角形是否相交可以判斷其中 一個三角形的三條線段是否與另 一個三角形相交。
但發明人發現,現有技術中雖將繪製骨骼動畫時的數據運算處理交由計 算機顯卡的GPU來完成,但由於骨骼動畫的轉換在顯卡的GPU中進行之後無 法回傳到計算機的CPU中,因此在對顯卡實現的骨骼動畫進行碰撞才企測時, 仍要在CPU中進行骨骼動畫的轉換,因此,針對在顯卡中實現繪製骨骼動畫 但在CPU進行骨骼動畫的碰撞檢測的處理方式而言,仍然存在消耗CPU資源 ,CPU佔用率過高的缺點。
發明內容
基於上述現有技術所存在的問題,本發明實施方式的目的是提供一種顯 卡中實現3D骨骼動畫模型的碰撞檢測方法及顯卡、系統,將3D骨骼動畫模型 的碰撞檢測由計算機的顯卡完成,節省計算機CPU的資源和降低CPU的佔一種顯卡中實現3D骨骼動畫模型的碰撞檢測方法,包括 生成第一3D骨骼動畫;f莫型的三角形面頂點紋理或邊頂點紋理時,將確定 的三角形面頂點的信息傳遞給顯卡的像素著色器作為輸出三角形面紋理的像 素點的信息,或將確定的邊頂點的信息傳遞給顯卡的像素著色器作為邊紋理 的像素點的信息;
生成第二3D骨骼動畫模型的邊頂點紋理或三角形面頂點紋理時,將確定 的邊頂點的信息傳遞給顯卡的像素著色器作為輸出邊紋理的像素點的信息, 或將確定的三角形面頂點的信息傳遞給顯卡的像素著色器作為三角形面紋理 的像素點的信息;
顯卡的像素著色器輸出第一3D骨骼動畫模型的三角形面或邊與第二3D骨
骼動畫模型的邊或三角形面相交的像素點,查詢顯卡的像素著色器有像素點 輸出則確定第一3D骨骼動畫模型與第二3D骨骼動畫模型發生碰撞。
一種實現權利要求l - 8中任一項所述的3D骨骼動畫模型的碰撞檢測方法 的顯卡,包括
中央處理單元、頂點信息獲取單元,像素著色器和查詢才企測單元; 所述中央處理單元,與所述頂點信息獲取單元連接,用於對構建3D骨骼 動畫模型的數據進行處理生成3D骨骼動畫模型;
所述頂點信息獲取單元,分別與所述中央處理單元和像素著色器連接, 用於獲取所述中央處理單元生成3D骨骼動畫模型的三角形面頂點紋理時確定 的三角形面頂點的信息,或生成3D骨骼動畫^t型的邊頂點紋理時確定的邊頂 點的信息,並將獲取的三角形面頂點的信息或邊頂點的信息向像素著色器傳 送;
所述像素著色器,分別與所述頂點信息獲取單元和查詢檢測單元連接, 用於接收所述頂點信息獲取單元傳送的第一3D骨骼動畫模型的三角形面頂點 的信息,作為確定第一3D骨骼動畫模型的三角形面紋理的像素點的信息,或 接收所述頂點信息獲取單元傳送的第一3D骨骼動畫模型的邊頂點的信息,作為確定第一3D骨骼動畫模型的邊紋理的像素點的信息;並接收所述頂點信息 獲取單元傳送的第二3D骨骼動畫模型的邊頂點的信息,作為確定第二3D骨骼 動畫模型的邊紋理的像素點的信息,或接收所述頂點信息獲取單元傳送的第 二3D骨骼動畫模型的三角形面頂點的信息,作為確定第二3D骨骼動畫模型的 三角形面紋理的像素點的信息;並輸出第一3D骨骼動畫模型的三角形面或邊 與第二3D骨骼動畫模型的邊或三角形面相交的像素點;
所述查詢檢測單元,與所述像素著色器連接,用於查詢顯卡的像素著色 器是否有像素點輸出,若有像素點輸出則確定第一3D骨骼動畫模型與第二3D 骨骼動畫模型發生碰撞。
一種在顯卡中實現3D骨骼動畫模型的碰撞檢測方法的系統,包括
計算機主機與顯示裝置,計算機主機與顯示裝置連接;
所述計算機主機中設有處理裝置和上述權利要求9 - IO中任一項所述的顯 卡,顯卡與處理裝置連接,用於對處理裝置中運行3D遊戲程序的3D骨骼動畫 模型的數據進行處理,並將顯示畫面輸出至顯示裝置,並對該顯卡中生成的 不同3D骨骼動畫模型之間的碰撞進行檢測;
所述顯示裝置,與所述計算機主機連接,用於顯示所述計算機主機的顯 卡輸出的3D遊戲程序的畫面。
由上述本發明實施例提供的技術方案可以看出,本發明實施例通過顯卡 生成第一3D骨骼動畫模型和第二3D骨骼動畫模型時,將構成第一3D骨骼動畫 模型三角形面紋理的像素點信息和第二 3D骨骼動畫模型的邊紋理的像素點信 息傳送至顯卡的像素著色器,顯卡的像素著色器輸出第一3D骨骼動畫模型的 三角形面和第二3D骨骼動畫模型邊相交的像素點,通過查詢顯卡的像素著色 器輸出像素點,則可確定顯卡生成的第一3D骨骼動畫模型和第二3D骨骼動畫 模型是否發生碰撞。該方法充分利用了顯卡的處理能力,將對顯卡生成的3D 骨骼動畫模型的碰撞檢測直接由顯卡完成,避免了傳統處理方法中,對顯卡 生成的3D骨骼動畫模型的碰撞檢測要在計算機的CPU中完成,導致計算機CPU因進行3D骨骼動畫模型的碰撞檢測造成的佔用率高,浪費CPU資源的問 題。
圖1為本發明實施例 一顯卡中實現3D骨骼動畫的碰撞檢測方法流程圖; 圖2為本發明實施例二顯卡中實現3D骨骼動畫的^s並撞;險測方法流程圖; 圖3為本發明實施例三顯卡中實現3D骨骼動畫的碰撞;險測方法流程圖; 圖4為本發明實施例四顯卡中實現3D骨骼動畫的石並撞才企測方法流程圖; 圖5為本發明實施例五的實現3D骨格動畫的^5並撞的;f全測方法的顯卡的結構
框圖6為本發明實施例六的實現3D骨骼動畫的碰撞的檢測方法的計算機系統 結構框圖。
具體實施例方式
本發明實施例提供一種顯卡中實現3D骨骼動畫模型的碰撞檢測方法,具 體是將顯卡生成的3D骨骼動畫模型的碰撞檢測直接放在計算機的顯卡中完 成,該方法包括
生成第一3D骨骼動畫^K型的三角形面頂點紋理或邊頂點紋理時,將確定 的三角形面頂點的信息傳遞給顯卡的像素著色器作為輸出三角形面紋理的像 素點的信息,或將確定的邊頂點的信息傳遞給顯卡的像素著色器作為邊紋理 的像素點的信息;
生成第二3D骨骼動畫才莫型的邊頂點紋理或三角形面頂點紋理時,將確定 的邊頂點的信息傳遞給顯卡的像素著色器作為輸出邊紋理的像素點的信息, 或將確定的三角形面頂點的信息傳遞給顯卡的像素著色器作為三角形面紋理 的像素點的信息;
顯卡的像素著色器輸出第一3D骨骼動畫模型的三角形面或邊與第二3D骨骼動畫模型的邊或三角形面相交的像素點,查詢顯卡的像素著色器有像素點
輸出則確定第一3D骨骼動畫模型與第二3D骨骼動畫模型發生碰撞。
該方法簡單,充分利用了顯卡自身的特點,在生成3D骨骼動畫模型時, 利用查詢顯卡的像素著色器是否輸出像素點,使顯卡直接完成對3D骨骼動畫 模型的碰撞檢測,相比傳統的在計算機的CPU中完成3D骨骼動畫模型的碰撞 檢測方法,降低了CPU的佔用率,減少了CPU資源的浪費。
為便於對本發明實施方式的理解,下面首先結合3D模型的構建特點對本 發明實施例中採用的對兩個3D模型的碰撞檢測方法進行說明
在實際中,定義3D模型時均以三角形作為基本單位,連接三角形頂點的 線段稱為邊,這是因為通過多個頂點可定義出3D模型的框架,通過多條線段 (一般稱為邊)可將各頂點連接起來,這樣多個邊連接的3個或者3個以上的 頂點則構成封閉的圖形,該封閉的圖形就形成了一個多邊形,最簡單的多邊 形就是三角形,而無論多複雜的多邊形均可以分解為三角形,因此,可以用 三角形作為構建3D模型的基本單位,所以在顯卡中構造3D模型時通常採用三 角形,而不採用其他複雜的多邊形(如矩形或者五邊形),三角形與邊也 作為檢測兩個3D模型是否碰撞的基本單位,可以引出下述幾種檢測方式
(1) 檢測3D模型A的三角形與3D模型B的邊是否相交,相交則兩3D模型碰
撞;
(2) 檢測3D模型A的三角形與3D模型B的三角形是否相交,相交則兩3D模 型碰撞;
(3) 檢測3D模型A的邊與3D模型B的三角形是否相交,相交則兩3D模型碰
撞;
(4) 檢測3D模型A的邊與3D模型B的邊是否相交,相交則兩3D模型碰撞; 本發明實施例中對顯卡中生成的3D骨骼動畫模型的碰撞檢測即採用上述
的方法,結合附圖和具體實施例對本發明作進一步說明。 實施例一本實施例提供一種顯卡中實現3D骨骼動畫才莫型的碰撞檢測方法,通過該 方法可以實現將顯卡生成的3D骨骼動畫模型的碰撞檢測直接在計算機的顯卡 中完成,該方法如圖l所示,採用的是檢測一個3D骨骼動畫模型的三角形與另 一個3D骨骼動畫模型的邊是否相交,來檢測兩個3D骨骼動畫模型是否發生碰 撞,具體包括下述步驟
步驟l:顯卡生成第一3D骨駱動畫模型的三角形面頂點紋理時,將確定的 三角形面頂點的信息傳遞給顯卡的像素著色器作為輸出三角形面紋理的像素 點的信息;
步驟2:顯卡生成第二3D骨骼動畫模型的邊頂點紋理時,將確定的邊頂點
的信息傳遞給顯卡的像素著色器作為輸出邊紋理的像素點的信息;
步驟3:顯卡的像素著色器輸出第一3D骨骼動畫模型的三角形面與第二犯
骨骼動畫模型的邊相交的像素點,查詢顯卡的像素著色器有像素點輸出則確 定第一3D骨骼動畫模型與第二3D骨骼動畫模型發生碰撞。
為更清楚的理解上述方法,需要說明的是,顯卡生成3D骨骼動畫模型時 ,是以三角形作為生成模型的基本單位, 一個三角形由3個頂點組成, 一個頂 點由3個坐標x、 y、 z組成,由於設置在一個三角形上的一個紋理最多有4個 通道,所以必須要3張紋理。
因此在上述檢測方法中,顯卡生成第一3D骨骼動畫模型的三角形面頂點 紋理時,顯卡以三角形索引方式繪製第一3D骨骼動畫模型的三角形面頂點, 顯卡的頂點著色器根據顯卡的常量寄存器輸入的第一3D骨骼動畫模型的骨骼 信息進行頂點位置變換後,得到當前頂點的實際位置,結合頂點所在三角形 的編號確定頂點的具體位置,將確定的頂點的具體位置及頂點在所在三角形 中的索引值作為三角形面頂點的信息傳遞給顯卡的像素著色器,將所述索引 值用於作為顯卡的像素著色器確定將所述像素點輸出至哪一個三角形面紋理 的信息,所述頂點的具體位置作為輸出像素點的位置信息。
對於以邊定義的3D骨骼動畫模型,認為模型的各頂點均是由邊連接而成的, 一個邊由兩個頂點組成, 一個頂點由3個坐標x、 y、 z組成,所以4十對一 個邊必須要兩張紋理。
因此上述檢測方法中,顯卡以線段索引方式繪製第二3D骨骼動畫模型的 邊頂點,顯卡的頂點著色器根據顯卡的常量寄存器輸入的第二3D骨骼動畫模 型的骨骼信息進行頂點位置變換後,得到當前頂點的實際位置,結合頂點所 在邊的編號確定頂點的具體位置,將確定的頂點的具體位置及頂點在所在邊 中的索引值作為邊頂點的信息傳遞給顯卡的像素著色器,其中,所述索引值 用於作為顯卡的像素著色器確定將所述像素點輸出至哪一個邊紋理的信息, 所述頂點的具體位置作為輸出像素點的位置信息。
在顯卡的像素著色器得到第一 3D骨骼動畫模型的三角形面紋理的像素點 的信息與第二3D骨骼動畫模型的邊紋理像素點的信息後,通過遍歷構成第二 3D骨骼動畫模型邊紋理的每個像素點,若存在任一像素點與構成第一3D骨骼 動畫模型的三角形面紋理的任一像素點重合,則確定第一3D骨骼動畫模型三 角形面與第二3D骨骼動畫模型邊相交並輸出重合的像素點,通過顯卡硬體查 詢像素著色器是否有像素點輸出,即可確定顯卡生成的第一3D骨骼動畫模型 和第二3D骨骼動畫模型是否發生碰撞。相比傳統3D骨骼動畫模型的碰撞檢測 方法,降低了CPU的佔用率,減少了CPU資源的浪費。
下面以實際中顯卡對生成的骨骼動畫的碰撞進行才全測的過程,對上述本 發明實施例的處理方法作進一步說明,具體包括
步驟l:生成模型A的三角形面頂點紋理(如可以將三個紋理分別設有為 :A—Pos-Map-l, A—Pos—Map_2, A_Pos_Map_3), 一個三角形由3個頂點組成 , 一個頂點由3個坐標x、 y、 z組成,由於一個紋理最多有4個通道,所以必 須要3張紋理。紋理的大小由模型A的三角形面數目決定,紋理長度=寬度= Map-length,為大於三角形面數目的最小的2的冪,如構成模型A的三角形 面數目為3200,那麼用於模型A的紋理的長度=寬度=Map—length-64 ( 64 x 64 = 4096 > 3200 );基於上述說明,顯卡在生成模型A時以三角形索引的方式繪製點,在頂 點著色器中處理頂點時,先根據常量寄存器輸入的骨骼信息進行頂點位置的 變換,得到當前時間頂點的實際位置,再根據頂點所在的三角形的編號(如
可以將編號設為Tri-No)決定頂點的位置,具體位置的確定為x = Tri_No + Map_length (鄉文理的長度),y = T"一No + Map-length (紋理的高度),z =0,並且把頂點本身的位置以及頂點在本三角形中的索引傳遞給像素著色器 ;像素著色器根據本頂點在本三角形中的索引決定把像素輸出到頂點紋理的 哪一個,輸出值為頂點的本身位置;
步驟2:顯卡生成模型B的邊頂點紋理(如可以將兩個紋理分別設有為 B-EDGE—Map-1, B—EDGE—Map—2 ), —個邊由兩個頂點組成, 一個頂點由3個坐 標x、 y、 z組成,所以必須要兩張紋理。紋理的大小由模型B的邊的數目決 定,紋理長度=寬度=Map-length,為大於邊數目的最小的2的冪,例如邊數 目為940,那麼紋理長度=寬度=Map-length = 32 ( 32 x 32 = 1024 〉 940 );
基於上述說明,顯卡在生成模型B時以線段索引的方式繪製點,在頂點 著色器中處理頂點時,先根據常量寄存器輸入的骨骼信息進行頂點位置的變 換,得到當前時間頂點的實際位置,再根據頂點所在的邊的編號(如可以將 編號設為Edge_No)決定頂點的位置,位置x = Edge_No + Map—length (紋理 的長度),y = Edge—No + Map—length (紋理的高度),z = 0,並且4巴頂點本 身的位置以及頂點在本邊中的索引傳遞給像素著色器;像素著色器根據本頂 點在本邊中的索引決定把像素輸出到頂點紋理的哪一 個,輸出值為頂點的本 身位置;
步驟3:硬體查詢(顯卡查詢顯卡的像素著色器是否有像素被繪製,若有 則確定顯卡生成的模型A與模型B發生碰撞,並可以將檢測結果回傳至CPU ) ;具體處理過程可以是顯卡繪製一個以才莫型A的三角形面的一個紋理 A-Pos-Map-l為大小的平面,在顯卡的像素著色器中設置一個全局邏輯變量 bHit = false (假),以 A一Pos-Map一l , A—Poslp-2 , A—Pos_Map_3和B_EDGE_Map—1, B-EDGE-Map—2為顯卡像素著色器的輸入;對於像素處理器處 理繪製故理A-Pos-Map-l為大小的平面中的一個^f象素p時,如果bHit = true (真)就不處理這個像素,並負責取得該像素p在模型A的三角形面的三個 紋理A—Pos-Map—1, A-Pos—Map—2, A—Pos—Map-3上所對應的Y象素,得到三個頂 點位置,也就得到了三角形;遍歷才莫型B的邊紋理B_EDGE_Map—l , B_EDGE_Map—2上每個像素,得到兩個頂點位置,也就得到一個邊,判斷像素p 在模型A的三角形面的三個紋理上構成的三角形與模型B的邊是否相交,若 相交則像素著色器將相交的像素輸出,並且把全局變量bHit = true,否則處 理才莫型B的兩個紋理的B—EDGE_Map-l, B_EDGE—Map-2的下一個^象素,若構成 模型A的三角形與構成模型B的邊相交則顯卡通過硬體查詢會返回像素著色 器有一個像素被繪製,即可確定顯卡生成的模型A與模型B發生碰撞。
本實施例中在進行3D骨骼動畫模型的碰撞檢測時,通過判斷構成第一3D 骨骼動畫模型的三角形面是否與第二3D骨骼動畫模型構成的邊相交,若相交 則判斷兩個3D骨骼動畫模型發生碰撞,即通過顯卡查詢像素著色器是否有相 交點的像素輸出,由顯卡完成對兩個3D骨骼動畫模型的碰撞檢測,這種方式 充分利用了構建3D骨骼動畫模型的特點,具有檢測速度快,佔用資源小的特 點。
實施例二
本實施例提供另一種顯卡中實現3D骨骼動畫模型的碰撞檢測方法,是在 顯卡中採用檢測一個3D骨骼動畫模型的三角形與另一個3D骨骼動畫模型的三 角形是否相交,來檢測兩個3D骨骼動畫模型是否發生碰撞,該方法如圖2所示 ,具體包括下述步驟
步驟21:顯卡生成第一3D骨骼動畫模型的三角形面頂點紋理時,將確定 的三角形面頂點的信息傳遞給顯卡的像素著色器作為輸出第一3D骨骼動畫模 型三角形面紋理的像素點的信息;
步驟22:顯卡生成第二3D骨骼動畫模型的三角形面頂點紋理時,將確定的三角形面頂點的信息傳遞給顯卡的像素著色器作為輸出第二3D骨骼動畫模 型三角形面紋理的像素點的信息;
步驟23:顯卡的像素著色器輸出第一3D骨骼動畫模型的三角形面與第二 3D骨骼動畫模型的三角形面相交的像素點,查詢顯卡的像素著色器有像素點 輸出則確定第一3D骨骼動畫模型與第二3D骨骼動畫模型發生碰撞。
實施例三
本實施例提供又一種顯卡中實現3D骨骼動畫模型的碰撞檢測方法,是在 顯卡中採用檢測一個3D骨骼動畫模型的邊與另 一個3D骨骼動畫模型的三角形 是否相交,來檢測兩個3D骨骼動畫模型是否發生碰撞,該方法如圖3所示,具 體包括下述步驟
步驟31:顯卡生成第一3D骨骼動畫模型的邊頂點紋理時,將確定的邊頂 點的信息傳遞給顯卡的像素著色器作為輸出邊紋理的像素點的信息;
步驟32:顯卡生成第二3D骨骼動畫;^莫型的三角形面頂點紋理時,將確定 的三角形面頂點的信息傳遞給顯卡的像素著色器作為輸出三角形面紋理的像 素點的信息;
步驟33:顯卡的像素著色器輸出第一3D骨骼動畫模型的邊與第二!3D骨骼 動畫模型的三角形面相交的像素點,查詢顯卡的像素著色器有像素點輸出則 確定第一3D骨骼動畫模型與第二3D骨骼動畫模型發生碰撞。
實施例四
本實施例提供的顯卡中實現3D骨骼動畫模型的碰撞;險測方法,是在顯卡 中採用檢測一個3D骨骼動畫模型的邊與另 一個3D骨骼動畫模型的邊是否相交 ,來檢測兩個3D骨骼動畫模型是否發生碰撞,該方法如圖4所示,具體包括下 述步驟
步-腺41:顯卡生成第一3D骨骼動畫才莫型的邊頂點紋理時,將確定的三角 形面頂點的信息傳遞給顯卡的像素著色器作為輸出第一 3D骨骼動畫模型的邊 紋理的像素點的信息;步驟42:顯卡生成第二3D骨骼動畫模型的邊頂點紋理時,將確定的邊頂 點的信息傳遞給顯卡的像素著色器作為輸出邊紋理的像素點的信息;
步驟43:顯卡的像素著色器輸出第一3D骨骼動畫模型的邊與第二3D骨骼 動畫模型的邊相交的像素點,查詢顯卡的像素著色器有像素點輸出則確定第 一3D骨骼動畫模型與第二3D骨骼動畫模型發生碰撞。
實施例五
本實施例提供一種實現上述實施例 一 中的3D骨骼動畫模型的碰撞檢測方 法的顯卡,如圖5所示,該顯卡具體包括
中央處理單元501、頂點信息獲取單元502,像素著色器503和查詢檢測單 元504;
其中,中央處理單元501與頂點信息獲取單元502連接,用於對構建3D骨 骼動畫模型的數據進行處理生成3D骨骼動畫模型;
頂點信息獲取單元502分別與中央處理單元501和像素著色器503連接,用 於獲取所述中央處理單元生成3D骨骼動畫模型的三角形面頂點紋理時確定的 三角形面頂點的信息,或生成3D骨骼動畫模型的邊頂點紋理時確定的邊頂點 的信息,並將獲取的三角形面頂點的信息或邊頂點的信息向像素著色器傳送 ;如對兩個3D骨骼動畫模型進行碰撞檢測時,可以分別對第一3D骨骼動畫 模型和第二3D骨骼動畫模型的信息進行獲取,並傳送至像素著色器;
像素著色器503分別與頂點信息獲取單元502和查詢檢測單元504連接,用 於接收所述頂點信息獲取單元傳送的第一3D骨骼動畫模型的三角形面頂點的 信息,作為確定第一3D骨骼動畫模型的三角形面紋理的像素點的信息,或接 收所述頂點信息獲取單元傳送的第一3D骨骼動畫模型的邊頂點的信息,作為 確定第一3D骨骼動畫模型的邊紋理的像素點的信息;並接收所述頂點信息獲 取單元傳送的第二3D骨骼動畫模型的邊頂點的信息,作為確定第二3D骨骼動 畫模型的邊紋理的像素點的信息,或接收所述頂點信息獲取單元傳送的第二 3D骨骼動畫模型的三角形面頂點的信息,作為確定第二3D骨骼動畫模型的三角形面紋理的像素點的信息;並輸出第一3D骨骼動畫模型的三角形面或邊與 第二 3D骨骼動畫模型的邊或三角形面相交的像素點;
查詢檢測單元504與像素著色器503連接,用於查詢顯卡的像素著色器是 否有像素點輸出,若有像素點輸出則確定第一3D骨骼動畫模型與第二3D骨骼 動畫模型發生碰撞。
上述顯卡的中央處理單元501中還包括頂點著色器5011與常量寄存器 5012,頂點著色器與常量寄存器連接,用於以三角形索引方式繪製第一3D骨 骼動畫模型的三角形面頂點,對所述常量寄存器輸入的3D骨骼動畫模型的骨 骼信息進行頂點位置變換後,得到當前頂點的實際位置,結合頂點所在三角 形的編號確定頂點的具體位置,將確定的頂點的具體位置及頂點在所在三角 形中的索引值作為三角形面頂點的信息;或用於以線段索引方式繪製3D骨骼 動畫模型的邊頂點時,根據所述常量寄存器輸入的3D骨骼動畫模型的骨骼信 息進行頂點位置變換後,得到當前頂點的實際位置,結合頂點所在邊的編號 確定頂點的具體位置,將確定的頂點的具體位置及頂點在所在邊中的索引值 作為邊頂點的信息。
實施例六
本實施例提供一種在顯卡中實現3D骨骼動畫模型的碰撞檢測方法的系統 ,是一種計算機系統,如圖6所示,具體包括
計算機主機601與顯示裝置602,計算機主機601與顯示裝置602連接; 該計算機主機601中設有處理裝置604和上述實施例二中所述的顯卡603, 顯卡603與處理裝置604連接,顯卡603用於對處理裝置604中運行3D遊戲程序 的3D骨膝動畫模型的數據進行處理,並將顯示畫面輸出至顯示裝置,並對該 顯卡中生成的不同3D骨骼動畫模型之間的碰撞進行檢測;實際中,計算機主 機可以採用與現有計算機主機結構相同的主機,主要是顯卡採用本發明實施 例二中給出的顯卡即可,以通過該顯卡實現在顯卡中直接完成對顯卡生成的 3D骨骼動畫i^莫型的碰撞;險測;顯示裝置602與計算機主才幾601連接,用於顯示計算機主機601的顯卡603 輸出的3D遊戲程序的畫面;實際中,顯示裝置602可以釆用CRT顯示器、或 液晶顯示器等。
上述實施例二、三是基於本發明實施例一 中的顯卡中實現顯卡中實現3D 骨骼動畫的碰撞的檢測方法的顯卡和計算機系統,但並不局限於此,本領域 技術人員根據本發明實施例中提供的指導思想,可以預見的實現3D骨骼動畫 的碰撞檢測方法的顯卡和計算機系統的各種結構形式,均應涵蓋在本發明的 範圍內。
綜上所述,本發明實施例中將顯卡生成骨骼動畫的碰撞檢測都由顯卡完 成,避免了傳統方法將骨骼動畫的轉換在計算機的顯卡的GPU中進行之後無 法回傳到計算機的CPU中,在進行碰撞檢測的時候,仍要在CPU中進行骨骼 動畫的轉換,消耗CPU資源,使CPU佔用率高,對配置較低的計算機運行3D 遊戲時,影響運行效率的問題。本發明實施例的方法將顯卡生成骨骼動畫的 碰撞直接由顯卡進行檢測,節省了 CPU資源,降低了 CPU佔用率。
以上所述,僅為本發明較佳的具體實施方式
,但本發明的保護範圍並不 局限於此,任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可 輕易想到的變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明 的保護範圍應該以權利要求的保護範圍為準。
權利要求
1、一種顯卡中實現3D骨骼動畫模型的碰撞檢測方法,其特徵在於,包括生成第一3D骨骼動畫模型的三角形面頂點紋理或邊頂點紋理時,將確定的三角形面頂點的信息傳遞給顯卡的像素著色器作為輸出三角形面紋理的像素點的信息,或將確定的邊頂點的信息傳遞給顯卡的像素著色器作為邊紋理的像素點的信息;生成第二3D骨骼動畫模型的邊頂點紋理或三角形面頂點紋理時,將確定的邊頂點的信息傳遞給顯卡的像素著色器作為輸出邊紋理的像素點的信息,或將確定的三角形面頂點的信息傳遞給顯卡的像素著色器作為三角形面紋理的像素點的信息;顯卡的像素著色器輸出第一3D骨骼動畫模型的三角形面或邊與第二3D骨骼動畫模型的邊或三角形面相交的像素點,查詢顯卡的像素著色器有像素點輸出則確定第一3D骨骼動畫模型與第二3D骨骼動畫模型發生碰撞。
2、 根據權利要求l所述的碰撞檢測方法,其特徵在於,所述生成第一3D骨骼動畫^t型的三角形面頂點紋理或邊頂點紋理時,將確定的三角形面頂點的信息傳遞給顯卡的像素著色器作為輸出三角形面紋理的像素點的信息,或將確定的邊頂點的信息傳遞給顯卡的像素著色器作為邊紋理的像素點的信息具體包括顯卡以三角形索引方式繪製第一3D骨骼動畫模型的三角形面頂點,顯卡的頂點著色器根據顯卡的常量寄存器輸入的第一3D骨骼動畫模型的骨骼信息進行頂點位置變換後,得到當前頂點的實際位置,結合頂點所在三角形的編號確定頂點的具體位置,將確定的頂點的具體位置及頂點在所在三角形中的索引值作為三角形面頂點的信息傳遞給顯卡的像素著色器,所述索引值和頂點的具體位置作為輸出三角形面紋理的像素點的信息;或顯卡以線段索引方式繪製第一3D骨骼動畫模型的邊頂點,顯卡的頂點著色器根據顯卡的常量寄存器輸入的第一3D骨骼動畫模型的骨骼信息進行頂點位置變換後,得到當前頂點的實際位置,結合頂點所在邊的編號確定頂點的具體位置,將確定的頂點的具體位置及頂點在所在邊中的索引值作為邊頂點的信息傳遞給顯卡的像素著色器,所述索引值和頂點的具體位置作為輸出邊紋理像素點的信息。
3、 根據權利要求2所述的碰撞檢測方法,其特徵在於,所述索引值和頂點的具體位置作為輸出三角形面紋理的像素點的信息具體為所述索引值用於作為顯卡的像素著色器確定將所述像素點輸出至對應三角形面紋理的信息,所述頂點的具體位置作為輸出像素點的位置信息。
4、 根據權利要求2所述的碰撞檢測方法,其特徵在於,所述索引值和頂點的具體位置作為輸出邊紋理像素點的信息具體為所述索引值用於作為顯卡的像素著色器確定將所述像素點輸出至對應邊紋理的信息,所述頂點的具體位置作為輸出像素點的位置信息。
5、 根據權利要求l所述的碰撞檢測方法,其特徵在於,所述生成第二3D骨骼動畫模型的邊頂點紋理或三角形面頂點紋理時,將確定的邊頂點的信息傳遞給顯卡的像素著色器作為輸出邊紋理的像素點的信息,或將確定的三角形面頂點的信息傳遞給顯卡的像素著色器作為三角形面紋理的像素點的信息具體包括顯卡以線段索引方式繪製第二3D骨骼動畫模型的邊頂點,顯卡的頂點著色器根據顯卡的常量寄存器輸入的第二3D骨骼動畫模型的骨骼信息進行頂點位置變換後,得到當前頂點的實際位置,結合頂點所在邊的編號確定頂點的具體位置,將確定的頂點的具體位置及頂點在所在邊中的索引值作為邊頂點的信息傳遞給顯卡的像素著色器,所述索引值和頂點的具體位置作為輸出邊紋理的^f象素點的信息;或顯卡以三角形索引方式繪製第二3D骨骼動畫模型的三角形面頂點,顯卡的頂點著色器根據顯卡的常量寄存器輸入的第二 3D骨骼動畫模型的骨骼信息進行頂點位置變換後,得到當前頂點的實際位置,結合頂點所在三角形的編號確定頂點的具體位置,將確定的頂點的具體位置及頂點在所在三角形中的索引值作為三角形面頂點的信息傳遞給顯卡的像素著色器,所述索引值和頂點的具體位置作為輸出三角形面紋理的像素點的信息。
6、 根據權利要求5所述的碰撞;險測方法,其特徵在於,所述索引值和頂點的具體位置作為輸出邊紋理的像素點的信息具體為所述索引值用於作為顯卡的像素著色器確定將所述像素點輸出至對應邊紋理的信息,所述頂點的具體位置作為輸出像素點的位置信息。
7、 根據權利要求5所述的碰撞的檢測方法,其特徵在於,所述索引值和頂點的具體位置作為輸出邊紋理像素點的信息具體為所述索引值用於作為顯卡的像素著色器確定將所述像素點輸出至對應邊紋理的信息,所述頂點的具體位置作為輸出像素點的位置信息。
8、 根據權利要求l所述的碰撞檢測方法,其特徵在於,所述顯卡的像素著色器輸出第一3D骨骼動畫模型的三角形面或邊與第二3D骨骼動畫模型的邊或三角形面相交的像素點具體包括顯卡的像素著色器遍歷構成第二3D骨骼動畫模型邊紋理的每個像素點或三角形面紋理的每個像素點,若存在任一像素點與構成第一3D骨骼動畫模型的三角形面紋理的任一像素點或邊紋理的任一像素點重合,則確定第一3D骨骼動畫模型三角形面或與第二3D骨骼動畫模型邊或三角形面相交並輸出重合的像素點。
9、 一種實現權利要求1-8中任一項所述的3D骨骼動畫模型的碰撞檢測方法的顯卡,其特徵在於,包括中央處理單元、頂點信息獲取單元,像素著色器和查詢檢測單元;所述中央處理單元,與所述頂點信息獲取單元連接,用於對構建3D骨骼動畫模型的數據進行處理生成3D骨骼動畫模型;所述頂點信息獲取單元,分別與所述中央處理單元和像素著色器連接,用於獲取所述中央處理單元生成3D骨骼動畫模型的三角形面頂點紋理時確定的三角形面頂點的信息,或生成3D骨骼動畫模型的邊頂點紋理時確定的邊頂點的信息,並將獲取的三角形面頂點的信息或邊頂點的信息向像素著色器傳送;所述像素著色器,分別與所述頂點信息獲取單元和查詢檢測單元連接,用於接收所述頂點信息獲取單元傳送的第一3D骨骼動畫模型的三角形面頂點的信息,作為確定第一3D骨骼動畫模型的三角形面紋理的像素點的信息,或接收所述頂點信息獲取單元傳送的第一3D骨骼動畫模型的邊頂點的信息,作為確定第一3D骨骼動畫模型的邊紋理的像素點的信息;並接收所述頂點信息獲取單元傳送的第二3D骨骼動畫模型的邊頂點的信息,作為確定第二3D骨骼動畫模型的邊紋理的像素點的信息,或接收所述頂點信息獲取單元傳送的第二3D骨骼動畫模型的三角形面頂點的信息,作為確定第二3D骨骼動畫模型的三角形面紋理的像素點的信息;並輸出第一3D骨骼動畫模型的三角形面或邊與第二 3D骨骼動畫模型的邊或三角形面相交的像素點;所述查詢檢測單元,與所述像素著色器連接,用於查詢顯卡的像素著色器是否有像素點輸出,若有像素點輸出則確定第一3D骨骼動畫模型與第二3D骨骼動畫模型發生碰撞。
10、根據權利要求9所述的顯卡,其特徵在於,所述中央處理單元中還包括頂點著色器與常量寄存器,頂點著色器與所述常量寄存器連接,用於以三角形索引方式繪製第一3D骨骼動畫模型的三角形面頂點,對所述常量寄存器輸入的3D骨骼動畫模型的骨骼信息進行頂點位置變換後,得到當前頂點的實際位置,結合頂點所在三角形的編號確定頂點的具體位置,將確定的頂點的具體位置及頂點在所在三角形中的索引值作為三角形面頂點的信息;或用於以線段索引方式繪製3D骨骼動畫模型的邊頂點時,根據所述常量寄存器輸入的3D骨骼動畫模型的骨骼信息進行頂點位置變換後,得到當前頂點的實際位置,結合頂點所在邊的編號確定頂點的具體位置,將確定的頂點的具體位置及頂點在所在邊中的索引值作為邊頂點的信息。
11、 一種在顯卡中實現3D骨骼動畫才莫型的碰撞;險測方法的系統,其特徵在於,包括計算機主機與顯示裝置,計算機主機與顯示裝置連接;所述計算機主機中設有處理裝置和上述權利要求9 - IO中任一項所述的顯卡,顯卡與處理裝置連接,用於對處理裝置中運行3D遊戲程序的3D骨骼動畫模型的數據進行處理,並將顯示畫面輸出至顯示裝置,並對該顯卡中生成的不同3D骨骼動畫模型之間的碰撞進行檢測;所述顯示裝置,與所述計算機主機連接,用於顯示所述計算機主機的顯卡輸出的3D遊戲程序的畫面。
全文摘要
本發明實施例提供一種顯卡中實現3D骨骼動畫的碰撞檢測方法及顯卡、系統。屬計算機繪圖領域。方法包括生成第一3D骨骼動畫模型的三角形面頂點紋理或邊頂點紋理時,將確定的三角形面頂點的信息或邊頂點的信息傳遞給顯卡的像素著色器;生成第二3D骨骼動畫模型的邊頂點紋理或三角形面頂點紋理時,將確定的邊頂點的信息或三角形面頂點的信息傳遞給顯卡的像素著色器;顯卡的像素著色器輸出第一3D骨骼動畫模型的三角形面或邊與第二3D骨骼動畫模型的邊或三角形面相交的像素點,查詢顯卡的像素著色器有像素點輸出則確定第一3D骨骼動畫模型與第二3D骨骼動畫模型發生碰撞。該方法由顯卡完成生成的3D骨骼動畫模型的碰撞檢測,節省CPU資源、減少CPU佔用率。
文檔編號G06T15/70GK101458825SQ20091007605
公開日2009年6月17日 申請日期2009年1月4日 優先權日2009年1月4日
發明者皓 劉 申請人:騰訊科技(深圳)有限公司