本發(fā)明屬于U3d領(lǐng)域,尤其是涉及一種基于U3d地形系統(tǒng)的3D曲面的趨近生成方法。
背景技術(shù):
unity3D動態(tài)生成地形Terrain這個技術(shù)是現(xiàn)有技術(shù),需要一個HeightMap,也就是高程圖,提供地圖的高差、高程數(shù)據(jù),給地形賦以不同的貼圖(可多個,可以控制參數(shù),如平坦的時候,用哪個貼圖,陡峭的時候用哪個貼圖,并且可以混合Blender,例如,陡峭的用多巖石的貼圖,平坦時,用綠地的貼圖),當(dāng)手動創(chuàng)建地形的時候,其高程也可以通過自帶的brush刷取實現(xiàn),即以交互的方式;當(dāng)然用程序自動生成的時候,需要提供高程圖。大多時候高程圖HeightMap,其實是一個grayScale的灰度文件,亮白的部分表示高程最高,灰暗的部分代表高程越低。
但是,unity3D自帶地形系統(tǒng)創(chuàng)建的曲面地形時,仿真效果不佳。因為,3D曲面體量非常巨大,不可能把一片地形數(shù)據(jù)以曲面的形式記錄下來,數(shù)據(jù)量巨大,而且很低效,即便記錄下來,多部分為冗余的無用數(shù)據(jù),運(yùn)用該數(shù)據(jù)進(jìn)行地形模擬重建,效率低,精度也不高。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明旨在提出一種基于U3d地形系統(tǒng)的3D曲面的趨近生成方法及系統(tǒng),以提高3D曲面的仿真效果。
為達(dá)到上述目的,本發(fā)明的一個技術(shù)方案是這樣實現(xiàn)的:
基于U3d地形系統(tǒng)的3D曲面的趨近生成方法,包括如下內(nèi)容:
對將創(chuàng)建的3D曲面的多個變形控制點(diǎn)的二維點(diǎn)坐標(biāo)(x,z)進(jìn)行3D點(diǎn)到面的趨近算法處理,得到一個多層級的B-樣條曲線趨近的Y軸高度坐標(biāo);
在利用unity3D自動生成地形模型時,將Y軸高度坐標(biāo)作為高程數(shù)據(jù)進(jìn)行調(diào)用,構(gòu)建3D曲面地形。
優(yōu)選的,所述3D點(diǎn)到面的趨近算法為齊次3階B-Spline趨近算法。
相對于現(xiàn)有技術(shù),本發(fā)明具有以下優(yōu)勢:
(1)本發(fā)明方法有效提高了3D曲面的仿真效果;
(2)本發(fā)明方法原理簡單,容易實現(xiàn)。
本發(fā)明另一個技術(shù)方案:
基于U3d地形系統(tǒng)的3D曲面的趨近生成系統(tǒng),包括如下內(nèi)容:
趨近算法模塊,用于對將創(chuàng)建的3D曲面的多個變形控制點(diǎn)的二維點(diǎn)坐標(biāo)(x,z)進(jìn)行3D點(diǎn)到面的趨近算法處理,得到一個多層級的B-樣條曲線趨近的Y軸高度坐標(biāo);
地形構(gòu)建模塊,用于在利用unity3D自動生成地形模型時,將Y軸高度坐標(biāo)作為高程數(shù)據(jù)進(jìn)行調(diào)用,構(gòu)建3D曲面地形。
此系統(tǒng)與上述方法的有益效果一致,不在贅述。
附圖說明
構(gòu)成本發(fā)明的一部分的附圖用來提供對本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1為本發(fā)明實施例曲面。
具體實施方式
需要說明的是,在不沖突的情況下,本發(fā)明中的實施例及實施例中的特征可以相互組合。
下面將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。
一種基于U3d地形系統(tǒng)的3D曲面的趨近生成方法,包括如下內(nèi)容:
對將創(chuàng)建的3D曲面的多個變形控制點(diǎn)的二維點(diǎn)坐標(biāo)(x,z)進(jìn)行3D點(diǎn)到面的趨近算法處理,得到一個多層級的B-樣條曲線趨近的Y軸高度坐標(biāo),所述3D點(diǎn)到面的趨近算法為齊次3階B-Spline趨近算法(uniform cubic B-Spline Approximation Function),此算法屬于公知常數(shù),不在詳述;
在利用unity3D自動生成地形模型時,將Y軸高度坐標(biāo)作為高程數(shù)據(jù)進(jìn)行調(diào)用,構(gòu)建3D曲面地形。
本發(fā)明不以固定的高程圖提供高程數(shù)據(jù),而是以一個3D點(diǎn)到面的一個趨近生成算法:
H(y)=F(x,z)
即趨近算法,當(dāng)構(gòu)建地形的程序請求高程數(shù)據(jù)的時候,其提供一個平面的二維點(diǎn)坐標(biāo)(x,z),算法返回一個多層級的B-樣條曲線趨近算法的一個Y軸高度坐標(biāo),n階B-樣條曲線就是一個以若干knot(結(jié)點(diǎn))分隔的由多段組成的連續(xù)曲線。Unity3D以Y軸為Up,平面的2個軸分別為X,Z軸。
原理算法的程序?qū)崿F(xiàn):
//Value of k-th B-Spline basic function at t,BSpline(B-樣條曲線)的一個定義函數(shù).k就是knot的索引值,也就是k0表示B-SPline的第一段,以此類推,t就是范圍參數(shù)(X軸的值),本例即為0-1,t也就是[0-1)的一個值,用以確定Y軸的值;
本發(fā)明方法的核心是點(diǎn)到面的趨近算法,如圖1上的幾個點(diǎn)即為幾個關(guān)鍵的曲面變形的控制點(diǎn),因為曲面不復(fù)雜,大多只有幾個變形的控制點(diǎn),其他的基本是平滑的曲面,用控制點(diǎn)進(jìn)行數(shù)據(jù)記錄和地形重建則是非常高效、理智的選擇。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。