国产精品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>

      一種用于河流模擬的方法和系統(tǒng)的制作方法

      文檔序號:6608773閱讀:252來源:國知局
      專利名稱:一種用于河流模擬的方法和系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及3D圖形繪制技術(shù)領(lǐng)域,特別是涉及一種用于河流模擬的方法和系統(tǒng)。
      背景技術(shù)
      隨著電腦繪圖技術(shù)的不斷演進,3D繪圖硬件效能的增強以及寬帶網(wǎng)絡(luò)的普及,3D技術(shù)的應(yīng)用也有了新的風(fēng)貌。目前3D技術(shù)的使用非常廣泛,它已經(jīng)成為各界研究、應(yīng)用的主題,3D應(yīng)用發(fā)展縱然也就成為了時勢所趨最熱門的研究話題,也是各行業(yè)努力的方向,它的發(fā)展主題跨及了制造設(shè)計、電子商務(wù)、動畫制作、多媒體教學(xué)、虛擬現(xiàn)實以及游戲行業(yè)等。
      但是應(yīng)用3D技術(shù)對場景中的物體進行真實度很高的模擬是一件工作量很大的事情,例如,現(xiàn)有技術(shù)中對河流的模擬就需要以下步驟先由美術(shù)在3D Max或者Maya等建模工具制作好河流的模型,然后通過導(dǎo)出工具將這些模型導(dǎo)出成渲染引擎特定格式的數(shù)據(jù)文件,最后在場景編輯器中將這個數(shù)據(jù)文件導(dǎo)入將放在場景中相應(yīng)的位置。而在場景制作的過程中,如果河流相關(guān)的場景進行了調(diào)整而導(dǎo)致河流的模型需要調(diào)整時,那么上述的過程就需要重新執(zhí)行一次,浪費系統(tǒng)計算資源。上述方法復(fù)雜而繁鎖,不能進行所見即所得的進行河流的編輯。
      因此,迫切需要本領(lǐng)域技術(shù)人員發(fā)明出一種簡單易行的河流模擬方法。

      發(fā)明內(nèi)容
      本發(fā)明所要解決的技術(shù)問題是提供一種河流模擬方法和系統(tǒng),能夠方便和簡化河流的模擬過程。
      為了解決上述問題,本發(fā)明的實施例公開了一種河流模擬方法,包括以下步驟繪制與所模擬的河流相應(yīng)的曲線鏈,并針對該曲線鏈中各個曲線段相應(yīng)的末尾寬度和末尾旋轉(zhuǎn)角度;通過所述繪制過程確定各個曲線段的控制信息;根據(jù)該曲線鏈中各個曲線段的參數(shù),確定所模擬河流的各頂點坐標(biāo),所述參數(shù)包括曲線段的控制信息、曲線段的末尾寬度和旋轉(zhuǎn)角度;連接頂點坐標(biāo),得到由多個三角形組成的條帶網(wǎng)絡(luò);采用預(yù)置規(guī)則,針對各頂點設(shè)置對應(yīng)的紋理坐標(biāo);依據(jù)頂點坐標(biāo)和紋理坐標(biāo)進行渲染,得到河流。
      優(yōu)選的,所述方法還可以包括在所述紋理坐標(biāo)中增加一隨時間變化的變量,以實現(xiàn)動態(tài)紋理。
      進一步,所述曲線鏈中的第一個曲線段的參數(shù)還包括起始寬度和起始旋轉(zhuǎn)角度。
      優(yōu)選的,當(dāng)所述曲線鏈為矢量鏈時,通過以下步驟針對一矢量確定相應(yīng)的頂點坐標(biāo)將該矢量劃分為預(yù)定段數(shù);由該矢量的長度和方向,得到各個段的長度和方向;由該矢量起始寬度和末尾寬度線性插值得到各個段的寬度;由該矢量起始旋轉(zhuǎn)角度和末尾旋轉(zhuǎn)角度線性插值得到各個段以該矢量為中心、圍繞該矢量的旋轉(zhuǎn)角度;按照各個段的長度、方向、寬度以及旋轉(zhuǎn)角度,在該矢量兩側(cè)確定頂點分布。
      優(yōu)選的,當(dāng)所述曲線鏈為貝塞爾曲線鏈時,通過以下步驟針對一貝塞爾曲線段確定相應(yīng)的頂點坐標(biāo)將該曲線段劃分為預(yù)定段數(shù);由該曲線段的參數(shù)方程,得到各個小段的位置點U,以及法平面;由該曲線段的起始旋轉(zhuǎn)角度和末尾旋轉(zhuǎn)角度線性插值得到各個小段位置點U的旋轉(zhuǎn)角度;根據(jù)各小段的旋轉(zhuǎn)角度和法平面確定各小段位置點U的法線;由該曲線段的起始寬度和末尾寬度線性插值得到各個小段位置點U的寬度;根據(jù)各小段位置點U的寬度和法線,確定頂點分布。
      優(yōu)選的,所述曲線鏈的繪制步驟在場景編輯器中完成。
      根據(jù)本發(fā)明的實施例,還公開了一種河流模擬系統(tǒng),包括曲線鏈繪制單元,用于繪制與所模擬的河流相應(yīng)的曲線鏈,以及針對該曲線鏈中各個曲線段相應(yīng)的末尾寬度和末尾旋轉(zhuǎn)角度;通過所述繪制過程確定各個曲線段的控制信息;頂點確定單元,用于根據(jù)該曲線鏈中各個曲線段的參數(shù),確定所模擬河流的各頂點坐標(biāo),所述參數(shù)包括曲線段的控制信息、曲線段的末尾寬度和旋轉(zhuǎn)角度;條帶網(wǎng)絡(luò)生成單元,用于連接各頂點坐標(biāo),得到由多個三角形組成的條帶網(wǎng)絡(luò);
      紋理坐標(biāo)確定單元,用于采用預(yù)置規(guī)則,針對各頂點設(shè)置對應(yīng)的紋理坐標(biāo);渲染單元,用于依據(jù)頂點坐標(biāo)和紋理坐標(biāo)進行渲染,得到河流。
      優(yōu)選的,所述紋理坐標(biāo)中還包括一隨時間變化的變量,以實現(xiàn)動態(tài)紋理。
      優(yōu)選的,所述曲線鏈中的第一個曲線段的參數(shù)還包括起始寬度和起始旋轉(zhuǎn)角度。
      優(yōu)選的,當(dāng)所述曲線鏈為矢量鏈時,所述頂點確定單元進一步包括用于將該矢量劃分為預(yù)定段數(shù)的子單元;用于由該矢量的長度和方向,得到各個段的長度和方向的子單元;用于由該矢量起始寬度和末尾寬度線性插值得到各個段的寬度的子單元;用于由該矢量起始旋轉(zhuǎn)角度和末尾旋轉(zhuǎn)角度線性插值得到各個段以該矢量為中心、圍繞該矢量的旋轉(zhuǎn)角度的子單元;用于按照各個段的長度、方向、寬度以及旋轉(zhuǎn)角度,在該矢量兩側(cè)確定頂點分布的子單元。
      優(yōu)選的,當(dāng)所述曲線鏈為貝塞爾曲線鏈時,所述頂點確定單元進一步包括用于將該曲線段劃分為預(yù)定段數(shù)的子單元;用于由該曲線段的參數(shù)方程,得到各個小段的位置點U,以及法平面的子單元;用于由該曲線段的起始旋轉(zhuǎn)角度和末尾旋轉(zhuǎn)角度線性插值得到各個小段位置點U的旋轉(zhuǎn)角度的子單元;用于根據(jù)各小段的旋轉(zhuǎn)角度和法平面確定各小段位置點U的法線的子單元;用于由該曲線段的起始寬度和末尾寬度線性插值得到各個小段位置點U的寬度的子單元;用于根據(jù)各小段位置點U的寬度和法線,確定頂點分布的子單元。
      與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點本發(fā)明通過對河流采用特殊的數(shù)據(jù)結(jié)構(gòu),由程序自動生成河流的模型,以及紋理坐標(biāo),在場景編輯器中可以所見即所得的進行河流編輯,極大的方便和簡化了對河流的模擬。


      圖1是本發(fā)明一種河流模擬方法實施例的步驟流程圖;圖2是本發(fā)明另一河流模擬方法(以矢量鏈實現(xiàn))實施例的步驟流程圖;圖3是矢量鏈的示意圖;圖4是由矢量鏈生成的條帶網(wǎng)絡(luò)的示意圖;圖5是所生成的紋理坐標(biāo)示意圖;圖6是一種確定頂點坐標(biāo)(以矢量鏈實現(xiàn))的方法實施例的步驟流程圖;
      圖7是另一種條帶網(wǎng)絡(luò)中某矢量的示意圖;圖8是另一確定頂點坐標(biāo)(以凡塞爾曲線實現(xiàn))的方法實施例的步驟流程圖;圖9是繪制凡塞爾曲線段的示意圖;圖10是連接兩個凡塞爾曲線段的示意圖;圖11是以凡塞爾曲線實現(xiàn)時確定頂點坐標(biāo)的示意圖;圖12是法平面、法線以及旋轉(zhuǎn)角度之間的關(guān)系示意圖;圖13是法平面、法線、旋轉(zhuǎn)角度、寬度以及頂點坐標(biāo)之間的關(guān)系示意圖;圖14是一種河流模擬的系統(tǒng)實施例的結(jié)構(gòu)框圖;圖15是另一河流模擬的系統(tǒng)實施例的結(jié)構(gòu)框圖。
      具體實施例方式
      為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式
      對本發(fā)明作進一步詳細(xì)的說明。
      本發(fā)明的核心思想在于本發(fā)明將多個帶有方向的條帶相連起來進行河流的模擬。每個條帶由一個曲線段、曲線段末尾的寬度和曲線段末尾沿矢量中心的旋轉(zhuǎn)來進行描述,這樣一個一個條帶首尾相連形成一個帶寬度和旋轉(zhuǎn)數(shù)據(jù)的曲線鏈,然后根據(jù)每個曲線段的位置方向、長度、末尾的寬度和旋轉(zhuǎn)自動生成一個三角形帶來組成河流頂點數(shù)據(jù),在這些頂點數(shù)據(jù)中賦予一個沿曲線鏈方向連續(xù)的紋理坐標(biāo),最后應(yīng)用河流的紋理。運行時,將頂點的紋理坐標(biāo)沿曲線鏈進行平滑移動,模擬河流的流動效果。
      參照圖1,示出了一種河流模擬的方法,主要用于在3D場景中對河流進行模擬和渲染,具體可以包括步驟101、繪制與所模擬的河流相應(yīng)的曲線鏈,并針對該曲線鏈中各個曲線段相應(yīng)的末尾寬度和末尾旋轉(zhuǎn)角度;通過所述繪制過程確定各個曲線段的控制信息;步驟102、根據(jù)該曲線鏈中各個曲線段的參數(shù),確定所模擬河流的各頂點坐標(biāo),所述參數(shù)包括曲線段的控制信息、曲線段的末尾寬度和旋轉(zhuǎn)角度;步驟103、連接頂點坐標(biāo),得到由多個三角形組成的條帶網(wǎng)絡(luò);
      步驟104、采用預(yù)置規(guī)則,針對各頂點設(shè)置對應(yīng)的紋理坐標(biāo);步驟105、依據(jù)頂點坐標(biāo)和紋理坐標(biāo)進行渲染,得到河流。
      步驟101中所述的曲線鏈可以為矢量鏈、貝塞爾曲線或者B樣條曲線等等,本發(fā)明在此并不需要對曲線的樣式加以限定,只要在曲線兩側(cè)能夠均勻確定相應(yīng)的頂點坐標(biāo)即可。
      步驟101中所述曲線段的控制信息主要用于確定該曲線段,例如,對于矢量鏈,則控制信息包括該矢量的位置和方向信息;對于貝塞爾曲線,則控制信息包括該曲線段的起點、終點以及控制點的信息。
      步驟101中所述繪制可以由美工人員直接繪制的方式(類似畫圖),也可以采用設(shè)定參數(shù)然后生成繪制結(jié)果的方式。
      參照圖2,示出了一種河流模擬的方法實施例,該實施例采用了矢量鏈的方式來實現(xiàn),具體可以包括以下步驟步驟201、繪制矢量鏈,并針對該矢量鏈中各個矢量設(shè)置相應(yīng)的末尾寬度和末尾旋轉(zhuǎn)角度。
      矢量鏈,顧名思義就是由多個矢量首尾相連形成鏈條狀。矢量鏈由技術(shù)人員(例如,美術(shù))在場景中通過點擊,確定點的位置來指定每一條矢量的方向和長度,就如同在Word中繪制多邊形一樣,點擊某個位置后,就會有一條線始終連接鼠標(biāo)和剛才所確定的位置,然后點擊另一個位置來確定第一條矢量,矢量的方向就是從第一個點到第二個點的方向,長度就是二點之間的距離。如此,第三個點用來確定第二條矢量。
      確定好矢量鏈的位置后,還可以對每一個矢量的起點和終點進行調(diào)整,并且設(shè)置好每一個矢量末尾的寬度和旋轉(zhuǎn)角度,對于第一個矢量,還需要對其起點的寬度和旋轉(zhuǎn)角度進行設(shè)置。
      參照圖3,其中,方箭頭301為起點,帶線的箭頭302、303各為一條矢量,箭頭302、303的寬度即為末尾的寬度,箭頭302、303的旋轉(zhuǎn)即為末尾的旋轉(zhuǎn)。調(diào)整矢量鏈的時候美術(shù)人員可以看到由多個箭頭鏈接而成的矢量鏈,直觀的看到每一個矢量的起止點,末點的寬度、旋轉(zhuǎn),以及矢量鏈起始時的寬度和旋轉(zhuǎn)。
      所述矢量鏈的繪制步驟201在場景編輯器中完成即可,即技術(shù)人員繪制完成矢量鏈之后,由程序自動完成后續(xù)步驟的數(shù)據(jù)處理過程,從而可以實現(xiàn)在場景編輯器中的所見即所得的編輯方式,極大的方便和簡化了對河流的模擬過程。當(dāng)場景發(fā)生調(diào)整或者所模擬的河流不合適時,技術(shù)人員只需要在場景編輯器中調(diào)整該矢量鏈的相關(guān)參數(shù)即可。
      步驟202、根據(jù)該矢量鏈的參數(shù),確定所模擬河流的各頂點坐標(biāo),所述矢量鏈參數(shù)包括矢量長度、矢量方向、矢量末尾寬度和旋轉(zhuǎn)角度。
      步驟203、連接頂點坐標(biāo),得到由多個三角形組成的條帶網(wǎng)絡(luò)。
      參見圖4,是由矢量鏈生成的由多個三角形組成的條帶網(wǎng)絡(luò)的示意圖。其中,每一條矢量生成的三角形數(shù)目可以由美術(shù)指定段數(shù)來調(diào)整,三角形的數(shù)目即為段數(shù)的兩倍,因為一個段由兩個三角形拼合而成。圖4中一段對應(yīng)四個頂點,因此,可以按照段數(shù)均勻的將頂點分布在矢量的兩側(cè)即可,其中,前一段的后兩個頂點和后一段的前兩個頂點場合。
      步驟204、采用預(yù)置規(guī)則,針對各頂點設(shè)置對應(yīng)的紋理坐標(biāo)。
      紋理一般是指3D圖形中的2D貼圖(位圖),能應(yīng)用到三角形(或一定數(shù)目的三角形)上,用來增加真實感。紋理坐標(biāo)的作用是在紋理上指定一個點,因為紋理是2D的,所以我們僅需要兩個值U和V。U是橫軸的值,而V是縱軸的值,U和V的取值應(yīng)該在0和1之間(取其它值用于生成特效),左上角是(0,0)右下角是(1,1)。其中,對于紋理上的某個位置(X1,Y1),(U1,V1)=(X1/紋理寬度,Y1/紋理高度),因此U=1,即X=紋理寬度,V=1,即Y=紋理高度。當(dāng)UV小于0時,或大于1時紋理會按照所指定的地址模式映射到XY,如采用Wrap地址模式,則進行循環(huán)映射(如同平鋪,本發(fā)明中采用此地址模式);而采用Mirror地址模式,則進行鏡象映射。
      對于本發(fā)明,可以采用各種方式確定紋理坐標(biāo),例如,參照圖5,按照矢量的方向,依次給每一小段的每一個頂點指定紋理坐標(biāo)就可以了。比如,第一、二小段頂點的紋理坐標(biāo)為(0,0)、(0,1)、(1,0)、(1,1)、(2,0)、(2,1)。即只需要為第n小段的U坐標(biāo)設(shè)置為n就可以了,V坐標(biāo)即分別為0和1。當(dāng)然,也可以給紋理坐標(biāo)在U、V兩個坐標(biāo)進行一些縮放來達到縮放整個河流紋理映射的效果。例如,設(shè)置第一、二小段頂點的紋理坐標(biāo)為(0,0)、(0,1)、(0.5,0)、(0.5,1)、(1,0)、(1,1);或者,(0,0)、(0,1)、(2,0)、(2,1)、(4,0)、(4,1)等等。
      其他本領(lǐng)域技術(shù)人員熟知的確定紋理坐標(biāo)的方式也都是可行的,例如,根據(jù)頂點坐標(biāo)按照一定的規(guī)則計算得出相應(yīng)的紋理坐標(biāo)等等。
      進一步,一個紋理坐標(biāo)是可以對應(yīng)多個紋理的,如果給某個物體應(yīng)用了多個紋理,則同時也需要指定這些紋理中如何進行混合,實現(xiàn)起來雖然麻煩,但是在某些場景下可以獲得更真實的視覺感受。由于該部分技術(shù)屬于本領(lǐng)域技術(shù)人員所熟知的,因此,不再贅述。
      步驟205、依據(jù)頂點坐標(biāo)和紋理坐標(biāo)進行渲染,得到河流。
      渲染技術(shù)是游戲編程世界中的熱點技術(shù),同時它在其他領(lǐng)域中也有著非常重要的作用。如GIS系統(tǒng),飛行模擬系統(tǒng),VR系統(tǒng)以及數(shù)字地球技術(shù)等都離不開室外場景的實時渲染技術(shù)。一個優(yōu)秀的室外場景實時渲染技術(shù)在保證實時性以外還能創(chuàng)造出非常逼真的、有說服力的虛擬自然環(huán)境。3D場景的渲染離不開3D API。目前流行的3D API有兩種,SGI公司的OpenGL和微軟公司的Direct3D。
      由于通過前述步驟,已經(jīng)獲得了頂點坐標(biāo)和相應(yīng)的紋理坐標(biāo),再應(yīng)用一張河流的紋理,就可以渲染出河流來;例如,只需要將上述數(shù)據(jù)通過調(diào)用D3D的API傳入到顯卡就可以實現(xiàn)渲染了。但這時的河流是不會動的,因為紋理的坐標(biāo)沒有運行。河流的模擬中需要按照時間作為參數(shù)來更改頂點的紋理坐標(biāo),以產(chǎn)生流動的視覺效果。比如頂點1在T1時刻的紋理坐標(biāo)為(1,0),在T2時刻的紋理坐標(biāo)為(2,0),在Tn時刻的紋理坐標(biāo)為(n,0),這時就可以看出紋理在頂點上流動的效果。即只要在所有頂點紋理的U坐標(biāo)上都加一個隨時間變化的量就可以讓河流流動起來。
      上述實施例是采用靜態(tài)圖片循環(huán)顯示的方式實現(xiàn)動態(tài)紋理的,當(dāng)然,本領(lǐng)域技術(shù)人員也可以采用其他可行的實現(xiàn)方式,例如,金山公司申請的中國公開號為CN1936964A的專利公開文獻中提出的利用視頻文件實現(xiàn)3D場景中的動畫紋理的方法。
      參照圖6,示出了一種針對一矢量確定相應(yīng)的頂點坐標(biāo)的方法實施例,具體包括以下步驟步驟601、將該矢量劃分為預(yù)定段數(shù);所述預(yù)定的段數(shù)可以由美術(shù)人員等根據(jù)實際需要指定即可,或者也可以設(shè)定段數(shù)-需求的對應(yīng)表,自動從中查詢獲得。
      步驟602、由該矢量的長度和方向,得到各個段的長度和方向;步驟603、由該矢量起始寬度和末尾寬度線性插值得到各個段的寬度;步驟604、由該矢量起始旋轉(zhuǎn)角度和末尾旋轉(zhuǎn)角度線性插值得到各個段以該矢量為中心、圍繞該矢量的旋轉(zhuǎn)角度;步驟605、按照各個段的長度、方向、寬度以及旋轉(zhuǎn)角度,在該矢量兩側(cè)確定頂點分布。
      需要說明的是,以上步驟之間并沒有固定的順序關(guān)系,有些步驟還可以合為一個步驟完成,例如,步驟601和602等。另外,得到各個段相應(yīng)寬度和旋轉(zhuǎn)角度的線性插值計算方法僅僅是本實施例的一個優(yōu)選方案,本領(lǐng)域技術(shù)人員當(dāng)然也可以根據(jù)實際需要應(yīng)用其他任何可行的數(shù)學(xué)模型計算得到各個段的相應(yīng)寬度和旋轉(zhuǎn)角度,只要得到這些數(shù)據(jù),就可以由該矢量鏈得到河流的立體架構(gòu);只不過這些參數(shù)的優(yōu)劣會影響到所模擬河流的形狀而已。
      由于計算機圖形學(xué)中所有的物體都是由最簡單的三角形組成的,所以在本實施例中,優(yōu)選的,連接頂點坐標(biāo)所得到的條帶網(wǎng)絡(luò)是由多個三角形構(gòu)成的。每一條矢量生成的三角形數(shù)目可以由所預(yù)定的段數(shù)來決定,三角形的數(shù)目即為段數(shù)的兩倍,因為一個段由兩個三角形拼合而成。然后程序按照段數(shù)均勻的將頂點分布在矢量的兩側(cè),由每個段的長度、寬度和方向確定了三角形的二維圖形,又根據(jù)旋轉(zhuǎn)角度將多個三角形連接起來,從而形成三維結(jié)構(gòu)。
      每個段的寬度由矢量起始時的寬度和末尾的寬度線性插值產(chǎn)生,每個段都以矢量為中心,圍繞矢量旋轉(zhuǎn)的角度也由矢量起始時的旋轉(zhuǎn)角度一末尾時的旋轉(zhuǎn)角度線性插值產(chǎn)生。對于線性插值,即可以理解為對起、止兩個數(shù)按照參數(shù)求出中間數(shù)的方法。具體公式可以寫為P=P1+t(P2-P1),P1為起始值,P2為終止值,t為參數(shù)(0≤t≤1),當(dāng)t=0時P=P1,當(dāng)t=1時P=P2。如七點的氣溫為15度,十二點的氣溫為25度,按照線性插值,十點的氣溫為15+(10-7)/(12-7)*(25-15)=21度。
      在兩個矢量首尾相接的地方,因為上一矢量的末段和下一矢量的首段寬度和旋轉(zhuǎn)都相同,因此下一矢量的首段可以采用上一矢量的末段的頂點,縫合在一起,最終形成一條連續(xù)的條帶。對于兩個矢量連接處的圓滑問題,可以通過增加該矢量的段數(shù)或者增加相鄰多個矢量的段數(shù)等方式達到較佳的效果。
      步驟601-605僅僅是用于實現(xiàn)圖4所示的條帶網(wǎng)絡(luò)的一種方案,如果所需的條帶網(wǎng)絡(luò)的結(jié)構(gòu)更加復(fù)雜,例如,參見圖7,矢量的一段由4個或者更多的三角形組成,則針對每個段所設(shè)置的頂點數(shù)據(jù)會增多,相應(yīng)的計算步驟也會更加復(fù)雜,比如,對該段寬度進一步進行劃分等等。
      前面所詳述的實施例是采用矢量鏈來表示河流的位置和方向,生成頂點,最終產(chǎn)成條帶。采用矢量鏈的優(yōu)點是簡單,但因為矢量鏈?zhǔn)怯墒噶渴孜蚕嘟有纬傻逆湕l,因此,每一條矢量都是直的,要想形成圓滑的矢量鏈就不得不增加矢量的條數(shù),并縮短每條矢量的長度,這樣會給河流制作人員帶來較大的工作量。
      一種改進的方案是,采用曲線來替換矢量鏈,作為河流的位置和方向的表示,并由此曲線來生成頂點,雖然在生成頂點時還是要對曲線按小段進行采樣,但因為小段的數(shù)目較多,且小段的距離較短,這樣生成的條帶相比將會是一條比較圓滑的條帶,而不像之前那樣由矢量鏈中的矢量生成的同一方向的小段那般是直的。
      下面以三次貝塞爾曲線為例闡述如何確定曲線,以及如何生成頂點。其中與前述矢量鏈的實現(xiàn)方式中的相似之處就不再詳述,參見前述相關(guān)部分即可。
      參照圖8,示出了一種針對一貝塞爾曲線段確定相應(yīng)的頂點坐標(biāo)的方法實施例,具體包括以下步驟步驟801、將該曲線段劃分為預(yù)定段數(shù);對于貝塞爾曲線而言,一條貝塞爾曲線由一個起點,一個終點,和兩個控制點來確定。參見圖9,P0,P3為曲線的起止點,P1,P2為控制點。P0到P1的矢量為P0的切線,P3到P2的矢量為P3的切線。
      貝塞爾曲線的參數(shù)方程如下Q(u)=P0(1-u)3+P13u(1-u)2+P23u2(1-u)+P3u3其中,u為參數(shù),(0≤u≤1)。
      兩個貝塞爾曲線段相接連時,需要把前一個貝塞爾曲線段的終點和后一個貝塞爾曲線段的起點重合,而且前一個貝塞爾曲線段的終點的切線和后一個貝塞爾曲線段的起點的切線應(yīng)在同一直線上,以保證兩條貝塞爾曲線段的連續(xù)性。參照圖10,Q1的終點P3和Q2的起點S0重合,且P3的切線和S0的切線在同一條直線上。
      步驟802、由該曲線段的參數(shù)方程,得到各個小段的位置點U,以及法平面;假設(shè),我們將曲線分為10段,則每小段的參數(shù)u分別為0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0。將各小段的參數(shù)代入?yún)?shù)方程即可求得各個小段的位置點U,以及法平面;具體的求值過程屬于該領(lǐng)域數(shù)學(xué)計算的一般知識,在此不進行詳述了。參見圖11,示出了參數(shù)u分別為0.2和0.7時的法平面F1、F2;位置點U1、U2;以及最終確定的頂點a、b、c、d。
      步驟803、由該曲線段的起始旋轉(zhuǎn)角度和末尾旋轉(zhuǎn)角度線性插值得到各個小段位置點U的旋轉(zhuǎn)角度;步驟804、根據(jù)各小段的旋轉(zhuǎn)角度和法平面確定各小段位置點U的法線;參照圖12,示出了法平面F1、法線L和旋轉(zhuǎn)角度β之間的關(guān)系,位置點為U1。
      步驟805、由該曲線段的起始寬度和末尾寬度線性插值得到各個小段位置點U的寬度;步驟806、根據(jù)各小段位置點U的寬度和法線,確定頂點分布。
      參照圖13,示出了根據(jù)圖12所示的參數(shù)確定頂點b的結(jié)果,其中點U1和點b之間的距離等于步驟805所得的寬度,法平面F1、法線L和旋轉(zhuǎn)角度β之間的關(guān)系也如圖所示。
      由于具體的計算過程由貝塞爾曲線的數(shù)學(xué)屬性決定,并且對于采用貝塞爾曲線的實現(xiàn)方式而言,其條帶生成步驟、紋理坐標(biāo)生成以及渲染步驟都與前述的實施例相似,因此,本實施例只需簡單介紹獨特之處即可。
      參照圖14,示出了一種用于河流模擬的系統(tǒng)實施例,具體可以包括
      曲線鏈繪制單元1401,用于繪制與所模擬的河流相應(yīng)的曲線鏈,以及針對該曲線鏈中各個曲線段相應(yīng)的末尾寬度和末尾旋轉(zhuǎn)角度;通過所述繪制過程確定各個曲線段的控制信息;頂點確定單元1402,用于根據(jù)該曲線鏈中各個曲線段的參數(shù),確定所模擬河流的各頂點坐標(biāo),所述參數(shù)包括曲線段的控制信息、曲線段的末尾寬度和旋轉(zhuǎn)角度;條帶網(wǎng)絡(luò)生成單元1403,用于連接各頂點坐標(biāo),得到由多個三角形組成的條帶網(wǎng)絡(luò);紋理坐標(biāo)確定單元1404,用于采用預(yù)置規(guī)則,針對各頂點設(shè)置對應(yīng)的紋理坐標(biāo);渲染單元1405,用于依據(jù)頂點坐標(biāo)和紋理坐標(biāo)進行渲染,得到河流。
      優(yōu)選的,所述紋理坐標(biāo)中還包括一隨時間變化的變量,以實現(xiàn)動態(tài)紋理。所述曲線鏈中的第一個曲線段的參數(shù)還包括,起始寬度和起始旋轉(zhuǎn)角度。
      對于所述頂點確定單元的實現(xiàn)方式之一,以貝塞爾曲線為例,其進一步可以包括用于將該曲線段劃分為預(yù)定段數(shù)的子單元;用于由該曲線段的參數(shù)方程,得到各個小段的位置點U,以及法平面的子單元;用于由該曲線段的起始旋轉(zhuǎn)角度和末尾旋轉(zhuǎn)角度線性插值得到各個小段位置點U的旋轉(zhuǎn)角度的子單元;用于根據(jù)各小段的旋轉(zhuǎn)角度和法平面確定各小段位置點U的法線的子單元;用于由該曲線段的起始寬度和末尾寬度線性插值得到各個小段位置點U的寬度的子單元;用于根據(jù)各小段位置點U的寬度和法線,確定頂點分布的子單元。
      參見圖15,示出了一種用于河流模擬的系統(tǒng)實施例,具體可以包括矢量鏈繪制單元1501,用于繪制矢量鏈,以及針對該矢量鏈中各個矢量設(shè)置相應(yīng)的末尾寬度和末尾旋轉(zhuǎn)角度;頂點確定單元1502,用于根據(jù)該矢量鏈的參數(shù),確定所模擬河流的各頂點坐標(biāo),所述矢量鏈參數(shù)包括矢量長度、矢量方向、矢量末尾寬度和旋轉(zhuǎn)角度;條帶網(wǎng)絡(luò)生成單元1503,用于連接各頂點坐標(biāo),得到由多個三角形組成的條帶網(wǎng)絡(luò);紋理坐標(biāo)確定單元1504,用于采用預(yù)置規(guī)則,針對各頂點設(shè)置對應(yīng)的紋理坐標(biāo);渲染單元1505,用于依據(jù)頂點坐標(biāo)和紋理坐標(biāo)進行渲染,得到河流。渲染單元一般需要和圖形API(例如,D3D,Opengl等)進行數(shù)據(jù)交互,完成時間的渲染。
      優(yōu)選的,所述紋理坐標(biāo)中還包括一隨時間變化的變量,以實現(xiàn)動態(tài)紋理。所述矢量鏈中的第一個矢量的參數(shù)還包括,起始寬度和起始旋轉(zhuǎn)角度。
      對于所述頂點確定單元的實現(xiàn)方式之一,其進一步包括用于將該矢量劃分為預(yù)定段數(shù)的子單元;用于由該矢量的長度和方向,得到各個段的長度和方向的子單元;用于由該矢量起始寬度和末尾寬度線性插值得到各個段的寬度的子單元;用于由該矢量起始旋轉(zhuǎn)角度和末尾旋轉(zhuǎn)角度線性插值得到各個段以該矢量為中心、圍繞該矢量的旋轉(zhuǎn)角度的子單元;用于按照各個段的長度、方向、寬度以及旋轉(zhuǎn)角度,在該矢量兩側(cè)確定頂點分布的子單元。
      優(yōu)選的,所述矢量鏈繪制單元、頂點確定單元、條帶網(wǎng)絡(luò)生成單元和紋理坐標(biāo)確定單元位于場景編輯器中,即通過改進現(xiàn)有的場景編輯器,增加相應(yīng)的功能而實現(xiàn)本發(fā)明。當(dāng)然,也可以直接編制一個獨立的軟件,包括圖7所示的各個單元,也可以實現(xiàn)本發(fā)明。
      對于系統(tǒng)實施例而言,由于其基本相應(yīng)于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
      以上對本發(fā)明所提供的一種用于河流模擬的方法和系統(tǒng),進行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
      及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
      權(quán)利要求
      1.一種河流模擬方法,其特征在于,包括繪制與所模擬的河流相應(yīng)的曲線鏈,并針對該曲線鏈中各個曲線段相應(yīng)的末尾寬度和末尾旋轉(zhuǎn)角度;通過所述繪制過程確定各個曲線段的控制信息;根據(jù)該曲線鏈中各個曲線段的參數(shù),確定所模擬河流的各頂點坐標(biāo),所述參數(shù)包括曲線段的控制信息、曲線段的末尾寬度和旋轉(zhuǎn)角度;連接頂點坐標(biāo),得到由多個三角形組成的條帶網(wǎng)絡(luò);采用預(yù)置規(guī)則,針對各頂點設(shè)置對應(yīng)的紋理坐標(biāo);依據(jù)頂點坐標(biāo)和紋理坐標(biāo)進行渲染,得到河流。
      2.如權(quán)利要求1所述的方法,其特征在于,還包括在所述紋理坐標(biāo)中增加一隨時間變化的變量,以實現(xiàn)動態(tài)紋理。
      3.如權(quán)利要求1所述的方法,其特征在于,所述曲線鏈中的第一個曲線段的參數(shù)還包括起始寬度和起始旋轉(zhuǎn)角度。
      4.如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述曲線鏈為矢量鏈時,通過以下步驟針對一矢量確定相應(yīng)的頂點坐標(biāo)將該矢量劃分為預(yù)定段數(shù);由該矢量的長度和方向,得到各個段的長度和方向;由該矢量起始寬度和末尾寬度線性插值得到各個段的寬度;由該矢量起始旋轉(zhuǎn)角度和末尾旋轉(zhuǎn)角度線性插值得到各個段以該矢量為中心、圍繞該矢量的旋轉(zhuǎn)角度;按照各個段的長度、方向、寬度以及旋轉(zhuǎn)角度,在該矢量兩側(cè)確定頂點分布。
      5.如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述曲線鏈為貝塞爾曲線鏈時,通過以下步驟針對一貝塞爾曲線段確定相應(yīng)的頂點坐標(biāo)將該曲線段劃分為預(yù)定段數(shù);由該曲線段的參數(shù)方程,得到各個小段的位置點U,以及法平面;由該曲線段的起始旋轉(zhuǎn)角度和末尾旋轉(zhuǎn)角度線性插值得到各個小段位置點U的旋轉(zhuǎn)角度;根據(jù)各小段的旋轉(zhuǎn)角度和法平面確定各小段位置點U的法線;由該曲線段的起始寬度和末尾寬度線性插值得到各個小段位置點U的寬度;根據(jù)各小段位置點U的寬度和法線,確定頂點分布。
      6.如權(quán)利要求1所述的方法,其特征在于,所述曲線鏈的繪制步驟在場景編輯器中完成。
      7.一種河流模擬系統(tǒng),其特征在于,包括曲線鏈繪制單元,用于繪制與所模擬的河流相應(yīng)的曲線鏈,以及針對該曲線鏈中各個曲線段相應(yīng)的末尾寬度和末尾旋轉(zhuǎn)角度;通過所述繪制過程確定各個曲線段的控制信息;頂點確定單元,用于根據(jù)該曲線鏈中各個曲線段的參數(shù),確定所模擬河流的各頂點坐標(biāo),所述參數(shù)包括曲線段的控制信息、曲線段的末尾寬度和旋轉(zhuǎn)角度;條帶網(wǎng)絡(luò)生成單元,用于連接各頂點坐標(biāo),得到由多個三角形組成的條帶網(wǎng)絡(luò);紋理坐標(biāo)確定單元,用于采用預(yù)置規(guī)則,針對各頂點設(shè)置對應(yīng)的紋理坐標(biāo);渲染單元,用于依據(jù)頂點坐標(biāo)和紋理坐標(biāo)進行渲染,得到河流。
      8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述紋理坐標(biāo)中還包括一隨時間變化的變量,以實現(xiàn)動態(tài)紋理。
      9.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述曲線鏈中的第一個曲線段的參數(shù)還包括起始寬度和起始旋轉(zhuǎn)角度。
      10.如權(quán)利要求7所述的系統(tǒng),其特征在于,當(dāng)所述曲線鏈為矢量鏈時,所述頂點確定單元進一步包括用于將該矢量劃分為預(yù)定段數(shù)的子單元;用于由該矢量的長度和方向,得到各個段的長度和方向的子單元;用于由該矢量起始寬度和末尾寬度線性插值得到各個段的寬度的子單元;用于由該矢量起始旋轉(zhuǎn)角度和末尾旋轉(zhuǎn)角度線性插值得到各個段以該矢量為中心、圍繞該矢量的旋轉(zhuǎn)角度的子單元;用于按照各個段的長度、方向、寬度以及旋轉(zhuǎn)角度,在該矢量兩側(cè)確定頂點分布的子單元。
      11.如權(quán)利要求7所述的系統(tǒng),其特征在于,當(dāng)所述曲線鏈為貝塞爾曲線鏈時,所述頂點確定單元進一步包括用于將該曲線段劃分為預(yù)定段數(shù)的子單元;用于由該曲線段的參數(shù)方程,得到各個小段的位置點U,以及法平面的子單元;用于由該曲線段的起始旋轉(zhuǎn)角度和末尾旋轉(zhuǎn)角度線性插值得到各個小段位置點U的旋轉(zhuǎn)角度的子單元;用于根據(jù)各小段的旋轉(zhuǎn)角度和法平面確定各小段位置點U的法線的子單元;用于由該曲線段的起始寬度和末尾寬度線性插值得到各個小段位置點U的寬度的子單元;用于根據(jù)各小段位置點U的寬度和法線,確定頂點分布的子單元。
      全文摘要
      本發(fā)明提供了一種河流模擬方法和系統(tǒng),該方法可以包括繪制與所模擬的河流相應(yīng)的曲線鏈,并針對該曲線鏈中各個曲線段相應(yīng)的末尾寬度和末尾旋轉(zhuǎn)角度;通過所述繪制過程確定各個曲線段的控制信息;根據(jù)該曲線鏈中各個曲線段的參數(shù),確定所模擬河流的各頂點坐標(biāo),所述參數(shù)包括曲線段的控制信息、曲線段的末尾寬度和旋轉(zhuǎn)角度;連接頂點坐標(biāo),得到由多個三角形組成的條帶網(wǎng)絡(luò);采用預(yù)置規(guī)則,針對各頂點設(shè)置對應(yīng)的紋理坐標(biāo);依據(jù)頂點坐標(biāo)和紋理坐標(biāo)進行渲染,得到河流。本發(fā)明通過對河流采用特殊的數(shù)據(jù)結(jié)構(gòu),由程序自動生成河流的模型,以及紋理坐標(biāo),在場景編輯器中可以所見即所得的進行河流編輯,極大的方便和簡化了對河流的模擬。
      文檔編號G06T15/10GK101051390SQ200710099168
      公開日2007年10月10日 申請日期2007年5月15日 優(yōu)先權(quán)日2007年5月15日
      發(fā)明者劉思維 申請人:北京金山軟件有限公司, 北京金山數(shù)字娛樂科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1