国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種實現(xiàn)三維模型矩陣變換的方法

      文檔序號:6366609閱讀:301來源:國知局
      專利名稱:一種實現(xiàn)三維模型矩陣變換的方法
      技術(shù)領域
      本發(fā)明涉及信息技術(shù)行業(yè)計算機虛擬現(xiàn)實領域,尤其涉及一種在三維渲染引擎系統(tǒng)底層實現(xiàn)三維模型矩陣變換的方法。
      背景技術(shù)
      隨著計算機硬件、三維圖形技木、虛擬現(xiàn)實技術(shù)的發(fā)展,逼真的三維視覺世界正在逐步走入人們的生活,它給人們呈現(xiàn)的夢幻般的境界,正在引起人們的廣泛關(guān)注,建立三維視圖體系并進行推廣和發(fā)展已經(jīng)成為當前技術(shù)的熱門領域。在虛擬現(xiàn)實領域,三維渲染引擎?zhèn)戎赜诮换ズ腿S動畫的實時性,在三維場景中需要對三維模型進行實時的旋轉(zhuǎn)、平移和縮放的矩陣變換,實時矩陣變換需要占用大量的內(nèi)存資源,尤其對于場景中有大批三維模型需要進行實時變換時,對于硬件的資源需求將非常巨大,因此,在三維引擎系統(tǒng)底層對 于三維模型批量矩陣變換提出好的解決方案就更加重要。在三維渲染引擎系統(tǒng)中,當對三維場景中的三維模型進行矩陣變換如平移、縮放、旋轉(zhuǎn)時,場景中的三維模型需要實時計算并更新變換后的坐標值,此時引擎底層需要實時進行大量的數(shù)學運算。對于簡單的三維模型如長方體、圓球之類,實時變換的運算量相對較小,而對于復雜度較高的三維模型比如人物角色,或者對于批量人物角色同時進行矩陣變換,如果三維引擎底層仍然逐點進行實時運算,則對于硬件資源的占用將非常大,甚至可能使系統(tǒng)崩潰。

      發(fā)明內(nèi)容
      (一 )要解決的技術(shù)問題為解決上述的一個或多個問題,本發(fā)明提供了一種在三維渲染引擎系統(tǒng)底層實現(xiàn)三維模型矩陣變換的方法,以使用戶能夠方便使用,滿足用戶的功能需求,同時盡量降低軟件開發(fā)對硬件資源的占用率。( ニ )技術(shù)方案根據(jù)本發(fā)明的ー個方面,提供了ー種實現(xiàn)三維模型矩陣變換的方法。該方法包括步驟A,設置ー個對應于該三維場景的場景根節(jié)點,多個分別對應于三維場景中多個三維模型的三維模型節(jié)點,該多個三維模型節(jié)點全部繼承自場景根節(jié)點,屬于場景根節(jié)點的子節(jié)點;步驟B,將用戶選中要編輯的三維模型對應的三維模型節(jié)點添加入矩陣變換節(jié)點,將矩陣變換節(jié)點作為場景根節(jié)點的一個子節(jié)點,將該三維模型節(jié)點作為矩陣變換節(jié)點的子節(jié)點,矩陣變換節(jié)點的坐標中心與三維模型節(jié)點的坐標中心重合;步驟C,將用戶對三維模型的矩陣變換操作映射于該三維模型對應矩陣變換節(jié)點的矩陣變換操作,獲得該矩陣變換節(jié)點對應的矩陣向量;步驟D,將選定被編輯三維模型上所有坐標點的坐標值與該矩陣向量進行矩陣運算,獲得矩陣變換后所述三維模型上所有坐標點的坐標值,從而實現(xiàn)三維模型的矩陣變換。(三)有益效果
      從上述技術(shù)方案可以看出,本發(fā)明三維渲染引擎系統(tǒng)具有下列有益效果(I)本發(fā)明中,通過矩陣變換節(jié)點進行三維模型的矩陣變換簡化了三維場景實時計算的運算量,節(jié)省硬件資源的占用率;(2)本發(fā)明中,只對矩陣變換節(jié)點進行記錄操作,使三維渲染引擎底層對于命令操作的記錄更加簡化。


      圖I為本發(fā)明實施例實現(xiàn)三維模型矩陣變換方法中初始狀態(tài)下場景根節(jié)點和三維模型節(jié)點關(guān)系的示意圖;圖2為本發(fā)明實施例實現(xiàn)三維模型矩陣變換方法中操作狀態(tài)下場景根節(jié)點和三維模型節(jié)點關(guān)系的示意圖; 圖3為本發(fā)明實施例實現(xiàn)多個同級三維模型矩陣變換方法中操作狀態(tài)下場景根節(jié)點和三維模型節(jié)點關(guān)系的示意圖;圖4為本發(fā)明實施例實現(xiàn)不同級三維模型矩陣變換方法中操作狀態(tài)下場景根節(jié)點和三維模型節(jié)點關(guān)系的示意圖;圖5為在實際場景下,本發(fā)明實施例實現(xiàn)不同級三維模型矩陣變換方法中操作狀態(tài)下場景根節(jié)點和三維模型節(jié)點關(guān)系的示意具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,以下結(jié)合具體實施例,并參照附圖,對本發(fā)明進一歩詳細說明。雖然本文可提供包含特定值的參數(shù)的示范,但應了解,參數(shù)無需確切等于相應的值,而是可在可接受的誤差容限或設計約束內(nèi)近似于相應的值。在本發(fā)明的一個示例性實施例中,提出了一種在三維渲染引擎系統(tǒng)底層實現(xiàn)矩陣變換的方法。在三維場景中具有一個或多個三維模型,用戶需要對該三維場景中的其中一個三維模型進行矩陣變換,則本實施例包括步驟S102,設置ー個對應于該三維場景的場景根節(jié)點,多個分別對應于三維場景中多個三維模型的三維模型節(jié)點,該多個三維模型節(jié)點全部繼承自場景根節(jié)點,屬于場景根節(jié)點的子節(jié)點;圖I為本發(fā)明實施例實現(xiàn)三維模型矩陣變換方法中初始狀態(tài)下場景根節(jié)點和三維模型子節(jié)點關(guān)系的示意圖。如圖I所示,此刻的矩陣變換節(jié)點則為虛擬存在的,即不會引入場景根節(jié)點。步驟S104,將用戶選中要編輯的三維模型對應的三維模型節(jié)點添加入矩陣變換節(jié)點,矩陣變換節(jié)點成為場景根節(jié)點的一個子節(jié)點,同時該三維模型節(jié)點作為矩陣變換節(jié)點的子節(jié)點,矩陣變換節(jié)點的坐標中心與三維模型節(jié)點的坐標中心重合,如圖2所示。步驟S106,將用戶對三維模型的矩陣變換操作,映射于該三維模型對應矩陣變換節(jié)點的矩陣變換操作,獲得該矩陣變換節(jié)點對應的矩陣向量;換句話說,用戶在操作界面上對選中三維模型的矩陣變換操作,并不是直接對該三維模型對應三維模型節(jié)點進行矩陣變換操作,而是映射于與該三維模型節(jié)點同坐標中心的矩陣變換節(jié)點之上。
      以用戶對三維模型做平移操作為例說明,當用戶希望三維場景中的三維模型從三維世界坐標系(1,2,3)平移到(2,5,8)的位置,三維模型的起初坐標中心即在世界坐標系的(1,2,3)位置,同樣添加的矩陣變換節(jié)點的坐標中心也在世界坐標系的(1,2,3)位置。當用戶平移三維模型至位置(2,5,8)時,三維模型的坐標中心需要經(jīng)過(2-1,5-2,8-3)即三維矢量(1,3,5)的數(shù)學變換,即在X軸方向沿正方向移動1,Y軸方向沿正方向移動3,Z軸方向沿正方向移動5。三維渲染引擎底層所進行的操作是首先對矩陣變換節(jié)點經(jīng)過三維矢量(1,3,5)的數(shù)學變換,即在X軸方向沿正方向移動1,Y軸方向沿正方向移動3,Z軸方向沿正方向移動5。所進行的變換矩陣向量即為三維矢量(1,3,5)。步驟S108,將選定被編輯三維模型上所有坐標點的坐標值與該矩陣向量相乗,獲得矩陣變換后所述三維模型上所有坐標點的坐標值,從而實現(xiàn)三維模型的矩陣變換。承接步驟S106的例子,本步驟包括SlOSa:三維模型底層實現(xiàn)和記錄了矩陣變換節(jié)點實現(xiàn)平移操作所進行的變換矩陣向量(1,3,5);SlOSb :選中的三維模型實現(xiàn)上述變換矩陣向量(1,3,5)的坐標變換。要編輯的三維模型中心坐標為(1,2,3),需要經(jīng)過變換矩陣向量(1,3,5)的數(shù)學變換,即在X軸方向沿正方向移動1,Y軸方向沿正方向移動3,Z軸方向沿正方向移動5 ;SlOSc:三維模型本身會包含很多曲線曲面等,每個曲線曲面在三維場景中都會有對應的坐標值,所有的這些曲線曲面同樣需要經(jīng)過變換矩陣向量(1,3,5)的數(shù)學變換。此時即需要對三維模型的所有曲線曲面的所有坐標點全部進行三維矢量(1,3,5)的數(shù)學變 換。通過此運算即完成了對ー個三維模型的一次平移操作。而借助于底層矩陣變換節(jié)點的存在,僅需要記錄和保存變換矩陣向量(1,3,5),而不需要記錄和保存三維模型所有曲線曲面所進行的變換矩陣向量(1,3,5)的運算。步驟S110,當用戶對選中三維模型編輯結(jié)束后,矩陣變換節(jié)點撤銷。撤銷后的矩陣變換接點成為虛擬節(jié)點,恢復步驟S102中三維場景中的拓撲結(jié)構(gòu)。經(jīng)過本步驟的操作,不會增大場景的節(jié)點數(shù),同時也不改變?nèi)S場景中相應的三維拓撲結(jié)構(gòu)。本實施例中,只對矩陣變換節(jié)點進行矩陣變換操作,從而節(jié)省了被編輯節(jié)點上大量坐標點的中間過程的大量變換運算,不僅使用戶能夠方便使用,滿足用戶的功能需求,同時降低了軟件開發(fā)對硬件資源的占用率。通過上述實施例,對于場景中的一個三維模型可以很方便的完成矩陣變換操作,如果用戶需要對場景中的多個三維模型節(jié)點同時進行相同的矩陣變換操作,即批處理運算時,選中的多個三維模型節(jié)點仍然共用一個矩陣變換節(jié)點,成為矩陣變換節(jié)點的子節(jié)點,而不需要為每ー個變換節(jié)點添加一個矩陣變換節(jié)點。在該場景下上述步驟S104包括將用戶選中要編輯的多個三維模型對應的三維模型節(jié)點添加入一個矩陣變換節(jié)點,該矩陣變換節(jié)點成為場景根節(jié)點的一個子節(jié)點,同時該多個三維模型節(jié)點作為矩陣變換節(jié)點的子節(jié)點,矩陣變換節(jié)點的坐標中心與該多個三維模型節(jié)點的相對坐標中心重合,如圖3所示。當然,該多個三維模型可以為同級的三維模型,也可以為不同級的三維模型,如圖4所示。對于該步驟,具體實現(xiàn)的過程如下S104a/ :接收三維場景中用戶選中的要編輯的多個三維模型節(jié)點;
      S104V :對選中的多個三維模型節(jié)點添加一個矩陣變換節(jié)點,此時矩陣變換節(jié)點的坐標中心不與該多個三維模型節(jié)點中一個三維模型節(jié)點的坐標中心重合,而是根據(jù)所選三維模型的具體坐標位置,做平均計算,得出一個相對中心坐標值作為該矩陣變換節(jié)點的坐標中心。例如選中四個三維模型的坐標中心有(1,1,1), (2,2,2), (-1, -I, -I),(-2,-2,_2),則通過計算各坐標中心在每個三維軸上的平均點,得到相對中心位置(0,0,O)。上述步驟S108包括將選定被編輯多個三維模型上所有坐標點的坐標值與該矩陣向量進行矩陣運算,獲得矩陣變換后所述多個三維模型上所有坐標點的坐標值,從而實現(xiàn)多個三維模型的矩陣變換。下面以ー個具體場景為例進行表述,實施例圖示如圖5。三維場景中的三維模型以節(jié)點的模式組織起來,三維場景根節(jié)點為場景中所有節(jié)點的父節(jié)點,場景中有ー個人物角色、ー頭牛、一座房子、ー個球,則每個三維模型都是場景根節(jié)點的子節(jié)點,這些子節(jié)點都是平行關(guān)系。有的復雜的三維模型本身又有子節(jié)點,比如人物角色,其頭、軀干、手、腳又是人 體節(jié)點的子節(jié)點。此時,人體的各個子節(jié)點就屬于場景根節(jié)點的更下ー層子節(jié)點。如果對場景中的ー個人物整體或者ー頭牛做矩陣變換,則采取圖2的方法。如果同時對ー個人物整體和ー頭牛做矩陣變換,則采取圖3的方法。如果對ー個人物的頭和ー頭牛做矩陣變換,則可以采取圖4的方法。對于矩陣變換節(jié)點的坐標中心設置以及整個場景的子節(jié)點層級關(guān)系如下述步驟實施,整體實施例示意圖見圖5。在該場景的三維模型的矩陣變換操作包括步驟S104a":用戶用鼠標點擊選中要編輯的三維模型節(jié)點,包括ー頭牛和人物角色的頭;步驟S104b":三維渲染引擎底層會為三維模型添加一個矩陣變換節(jié)點。矩陣變換節(jié)點的中心坐標節(jié)點可參照S104b'進行計算得到。此時場景的節(jié)點層次關(guān)系會有所改變。在執(zhí)行這個編輯操作的過程中,人物角色的頭和牛會成為矩陣變換節(jié)點的子節(jié)點,如圖5所示;步驟S106,將用戶對人物角色的頭和牛的矩陣變換操作,映射于該矩陣變換節(jié)點的矩陣變換操作,獲得該矩陣變換節(jié)點對應的矩陣向量;步驟S108 :將選定被編輯的人物角色的頭和牛上所有坐標點的坐標值與該矩陣向量相乗,獲得矩陣變換后人物角色的頭和牛上所有坐標點的坐標值;步驟S110,當這些操作結(jié)束后,矩陣變換節(jié)點撤銷,人物角色的頭重新成為人物角色的子節(jié)點。通過本實施例,實現(xiàn)了處于同級或不同級的多個三維模型的矩陣變換操作,避免了對多個三維模型分別進行矩陣變換,方便了用戶使用,進ー步降低了軟件開發(fā)對硬件資源的占用率。同時,本方法還可以實現(xiàn)操作撤銷。在實現(xiàn)操作撤銷時在步驟S106之后還包括記錄矩陣變換節(jié)點所對應的矩陣向量,即只記錄ー個(1,3,5)的矩陣變換向量;在步驟SllO之后還包括步驟S112a,矩陣變換節(jié)點進行上述矩陣向量的逆運算,即矩陣變換節(jié)點的中心坐標由三維世界坐標系的(2,5,8)變換到原始坐標(1,2,3);S112b,該矩陣變換節(jié)點對應ー個或多個三維模型的中心節(jié)點以及所有曲線曲面的坐標點都需要經(jīng)過上述矩陣變換向量的逆運算,從而實現(xiàn)了操作撤銷,即在X軸方向沿負方向移動1,Y軸方向沿負方向移動3,Z軸方向沿負方向移動5。同時,本方法還可以實現(xiàn)重復撤銷。在實現(xiàn)操作重復時在步驟S106之后還包括記錄矩陣變換節(jié)點所對應的矩陣向量,即(1,3,5);
      在步驟SllO之后還包括S114a :矩陣變換節(jié)點重新進行上述矩陣向量,即三維矢量(I,3,5),的數(shù)學變換,即在X軸方向沿正方向移動1,Y軸方向沿正方向移動3,Z軸方向沿正方向移動5 ;S114b :三維模型的中心節(jié)點以及所有曲線曲面的坐標點都進行上述矩陣變換向量(1,3,5)的運算,即在X軸方向沿正方向移動1,Y軸方向沿正方向移動3,Z軸方向沿正方向移動5。通過本實施例,對于編輯操作的撤銷重復等記錄,也只針對變換矩陣做記錄,而不需要記錄所有編輯節(jié)點的中間變換數(shù)據(jù)。上述只是以平移操作為例進行詳細說明,對于縮放和旋轉(zhuǎn)操作仍然是類似的步驟,只是進行計算的坐標變換向量會有不同而已。此外,需要說明的是,整個發(fā)明所闡述引入的矩陣變換節(jié)點主要為了簡化計算和簡化中間過程保存操作的數(shù)據(jù)量,并不會修改整個場景的原始節(jié)點層次關(guān)系。值得注意的是,圖中未繪示或描述的元件或?qū)崿F(xiàn)方式,為所屬技術(shù)領域中普通技術(shù)人員所知的形式,并沒有給出詳細、具體說明。以上所述的具體實施例,對本發(fā)明的目的、技術(shù)方案和有益效果進行了進ー步詳細說明,所應理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
      權(quán)利要求
      1.ー種實現(xiàn)三維模型矩陣變換的方法,包括 步驟A,設置ー個對應于該三維場景的場景根節(jié)點,多個分別對應于三維場景中多個三維模型的三維模型節(jié)點,該多個三維模型節(jié)點屬于場景根節(jié)點的子節(jié)點; 步驟B,將用戶選中要編輯的三維模型對應的三維模型節(jié)點添加入矩陣變換節(jié)點,將矩陣變換節(jié)點作為場景根節(jié)點的一個子節(jié)點,將該三維模型節(jié)點作為矩陣變換節(jié)點的子節(jié)點,矩陣變換節(jié)點的坐標中心與三維模型節(jié)點的坐標中心重合; 步驟C,將用戶對三維模型的矩陣變換操作映射于該三維模型對應矩陣變換節(jié)點的矩陣變換操作,獲得該矩陣變換節(jié)點對應的矩陣向量; 步驟D,將選定被編輯三維模型上所有坐標點的坐標值與該矩陣向量進行矩陣運算,獲得矩陣變換后所述三維模型上所有坐標點的坐標值,從而實現(xiàn)三維模型的矩陣變換。
      2.根據(jù)權(quán)利要求I所述的實現(xiàn)三維模型矩陣變換的方法,其中,所述用戶選中要編輯的三維模型為多個,所述步驟B包括 將用戶選中要編輯的多個三維模型對應的三維模型節(jié)點添加入一個矩陣變換節(jié)點,將該ー個矩陣變換節(jié)點作為場景根節(jié)點的一個子節(jié)點,同時將該多個三維模型節(jié)點作為矩陣變換節(jié)點的子節(jié)點,矩陣變換節(jié)點的坐標中心與多個三維模型節(jié)點的相對坐標中心重合。
      3.根據(jù)權(quán)利要求2所述的實現(xiàn)三維模型矩陣變換的方法,其中,所述用戶選中要編輯的三維模型為同級或不同級的三維模型。
      4.根據(jù)權(quán)利要求I所述的實現(xiàn)三維模型矩陣變換的方法,其中, 所述步驟C之后還包括記錄矩陣變換節(jié)點所對應的矩陣向量; 所述步驟D之后還包括矩陣變換節(jié)點進行上述矩陣向量的逆運算;該矩陣變換節(jié)點對應三維模型的中心節(jié)點以及所有曲線曲面的坐標點都經(jīng)過上述矩陣變換向量的逆運算,從而實現(xiàn)了三維模型矩陣變換的撤銷。
      5.根據(jù)權(quán)利要求I所述的實現(xiàn)三維模型矩陣變換的方法,其中, 在步驟C之后還包括記錄矩陣變換節(jié)點所對應的矩陣向量; 在步驟D之后還包括矩陣變換節(jié)點重新進行上述矩陣向量的運算;三維模型的中心節(jié)點以及所有曲線曲面的坐標點都進行上述矩陣變換向量運算。
      6.根據(jù)權(quán)利要求I至5中任ー項所述的實現(xiàn)三維模型矩陣變換的方法,其中,所述步驟D之后還包括 當用戶對選中三維模型編輯結(jié)束后,撤銷矩陣變換節(jié)點,撤銷后的矩陣變換接點成為虛擬節(jié)點,恢復場景根節(jié)點和三維模型節(jié)點的拓撲結(jié)構(gòu)。
      7.根據(jù)權(quán)利要求I至5中任ー項所述的實現(xiàn)三維模型矩陣變換的方法,其中,所述步驟C中,用戶對三維模型的矩陣變換操作包括以下操作中的ー種或多種平移、縮放和旋轉(zhuǎn)。
      全文摘要
      本發(fā)明公開了一種實現(xiàn)三維模型矩陣變換的方法。該方法包括設置一個對應于該三維場景的場景根節(jié)點,多個分別對應于三維場景中多個三維模型的三維模型節(jié)點;將用戶選中要編輯的三維模型對應的三維模型節(jié)點添加入矩陣變換節(jié)點,將矩陣變換節(jié)點作為場景根節(jié)點的一個子節(jié)點,將該三維模型節(jié)點作為矩陣變換節(jié)點的子節(jié)點;將用戶對三維模型的矩陣變換操作映射于該三維模型對應矩陣變換節(jié)點的矩陣變換操作,獲得該矩陣變換節(jié)點對應的矩陣向量;將選定被編輯三維模型上所有坐標點的坐標值與該矩陣向量進行矩陣運算,獲得矩陣變換后所述三維模型上所有坐標點的坐標值,從而實現(xiàn)三維模型的矩陣變換。本發(fā)明簡化了三維場景實時計算的運算量,節(jié)省硬件資源的占用率。
      文檔編號G06T19/00GK102663829SQ20121007411
      公開日2012年9月12日 申請日期2012年3月20日 優(yōu)先權(quán)日2012年3月20日
      發(fā)明者任雁鵬, 曹瑋, 梁利平 申請人:中國科學院微電子研究所
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1