国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

動態(tài)海面模擬關(guān)鍵技術(shù)研究

2020-11-10 07:51劉淑婉鄭凱東
關(guān)鍵詞:凹凸切線紋理

劉淑婉, 鄭凱東

(西安石油大學(xué) 計(jì)算機(jī)學(xué)院, 西安710065)

0 引 言

動態(tài)自然景觀類場景的模擬一直是計(jì)算機(jī)圖形學(xué)的一個研究熱點(diǎn),其中就包括關(guān)于流體的研究,目前研究模擬比較多的流體場景主要有:煙、云和水等。 地球表面約70%的區(qū)域被海洋所覆蓋,與其他自然場景模擬相比,海洋模擬在軍事、科研方面的應(yīng)用顯得更為重要。 海洋場景作為水面場景之一,其運(yùn)動極其復(fù)雜,海面的波動主要是由風(fēng)與海面之間相互作用,波浪內(nèi)部渦動、破碎等形成,這使得動態(tài)海面成為高度隨機(jī)、無規(guī)則的自然現(xiàn)象,模擬起來較為困難。

對于動態(tài)海面的繪制,國內(nèi)外研究存在著各種各樣的建模方法。 Mihalef 將這些模擬方法歸結(jié)為兩大類:基于物理模型的方法和基于構(gòu)造的方法[1]。 本次研究選取使用最為普遍的方法進(jìn)行分析研究,主要包括:(1)基于凹凸紋理映射的建模方法;(2)基于Gerstner 模型的建模方法。

1 凹凸紋理映射技術(shù)

要表現(xiàn)出真實(shí)海水外觀,除了對場景進(jìn)行建模,還需要對所建模型進(jìn)行紋理貼圖。 而凹凸紋理映射是紋理貼圖的一種應(yīng)用,實(shí)質(zhì)是混合映射,通常用于一些表面粗糙復(fù)雜的模型。 相較于紋理映射,它并不是通過普通的顏色紋理貼圖,將高清外觀圖紋按照頂點(diǎn)匹配的映射方式粘貼到模型表面,而是改變或是擾動其法線的方向,光線模型中由于法線方向的改變,物體模型表面光照的明暗效果也會受到影響[2]。 實(shí)際凹凸紋理映射并沒有改變模型頂點(diǎn)位置,真正實(shí)現(xiàn)模型的動態(tài)模擬,而是在視覺效果上讓用戶認(rèn)為是由于物理運(yùn)動造成模型表面凹凸不平的。 凹凸紋理映射實(shí)現(xiàn)的方法主要有三種:法線貼圖映射(Normal Mapping)、視差貼圖映射(Parallax Mapping)、浮雕貼圖映射(Relief Mapping),本文主要利用法線貼圖映射技術(shù)。

1.1 切線空間

大多數(shù)凹凸貼圖映射方法在實(shí)現(xiàn)過程中都是讓法線貼圖存儲在切線空間下的坐標(biāo)系中。 對于模型上的任意一點(diǎn),切線空間就是以這一點(diǎn)為原點(diǎn)構(gòu)建一個自身坐標(biāo)系,已知它的法線方向, 并讓這個法線作為坐標(biāo)系中的Z 軸,再選擇兩條過該點(diǎn)的切線作為X、Y 軸,其中一條為切線(Tangent),另一條為副切線(Bit-Tangent)。 過點(diǎn)的切線有很多,要選取正確的切線和副切線為軸,可以通過模型三角網(wǎng)格上的紋理坐標(biāo)(u,v)。 切線空間的切線向量實(shí)際上是模型空間坐標(biāo)相對于u 的變化率,副切線向量則是相對于v 的變化率[3]。 假設(shè)現(xiàn)有一個三角形網(wǎng)格,表面法線向量為N →, 計(jì)算出三角形網(wǎng)格中的任意兩邊,記作,式(1)。

1.2 法線貼圖映射技術(shù)

在法線貼圖映射方法中,需要提供兩張紋理,原始材質(zhì)貼圖和法線紋理貼圖。 法線紋理貼圖作用就是保存要模擬的高度細(xì)節(jié)模型的法線信息,將這張法線紋理貼在低細(xì)節(jié)模型上,使低細(xì)節(jié)模型表現(xiàn)出高細(xì)節(jié)模型的表面特征,但實(shí)際內(nèi)部并沒有變化。通常法線紋理貼圖呈偏藍(lán)紫色,如圖1 所示。

圖1 原始材質(zhì)貼圖與法線紋理貼圖Fig. 1 Original Texture And Normal Texture

法線貼圖映射的原理就是改變模型上的點(diǎn)在切線空間存儲的法線信息,通過用原始材質(zhì)貼圖存儲的紋理及顏色信息和法線紋理貼圖存儲的法線信息來做光照的相關(guān)計(jì)算,進(jìn)行渲染[4]。 實(shí)際編碼的過程中,最重要的一個環(huán)節(jié)就是將視線、法線、光線統(tǒng)一到同一個空間下,同一空間既可以是實(shí)際的模型空間又可以是切線空間。 大多數(shù)情況都采用將切線空間下的法線轉(zhuǎn)換成實(shí)際模型空間下的法線,在當(dāng)下空間中直接進(jìn)行光照計(jì)算。

1.3 uv 偏移的法線貼圖映射技術(shù)

法線貼圖技術(shù)模擬海面代碼最為簡單,渲染速度快,但仍存在一些不足之處。 假設(shè),圖2 中紅線代表存儲海面上的凹凸信息,黑線代表模型上的三角網(wǎng)格平面。 如果采用法線貼圖映射方法,當(dāng)人眼看向點(diǎn)B 時,法線貼圖技術(shù)是根據(jù)B 點(diǎn)的紋理坐標(biāo)來對應(yīng)法線信息,最終人眼看到的是由B 點(diǎn)對應(yīng)到的C 點(diǎn)處的效果。 然而此時,人眼看到的應(yīng)該是視線與凹凸表面交匯處A 點(diǎn)處的效果,而不是C 點(diǎn)的,這就產(chǎn)生了視覺差異。 當(dāng)人眼與平面恰好垂直時,即C 點(diǎn)與A 點(diǎn)重合,此時使用法線貼圖會比較理想,不會產(chǎn)生視差。 對于其他角度的視線情況,法線貼圖生成的效果就不太符合真實(shí)的視覺感受,為了讓人眼看出A 點(diǎn)的效果,這種情況下就不能使用B點(diǎn)處紋理坐標(biāo)對應(yīng)的法線信息,而是應(yīng)該使用D 點(diǎn)處的紋理坐標(biāo),才能獲取對應(yīng)A 點(diǎn)的法線信息,此時可以通過對B 點(diǎn)處的紋理坐標(biāo)(u,v) 偏移來形成視覺上的高低視差,給人以真實(shí)的感覺。

圖2 傾斜視角觀測凹凸表面視線原理圖Fig. 2 Line of sight of concave and convex surface observed from oblique angle

B 點(diǎn)到D 點(diǎn)的紋理坐標(biāo)偏移應(yīng)該是朝著視野在切線空間下的方向。 其偏移公式(5)為:

2 Gerstner 模型

通常對于平靜海面的模擬,可以直接選擇正弦函數(shù)或者余弦函數(shù)進(jìn)行模擬。 但對于具有明顯波峰的海面,這兩個函數(shù)就不是很合適了。 經(jīng)典的Gerstner 模型是國外應(yīng)用于海水模擬最廣泛的一種幾何模型。 從動力學(xué)的角度來看,Gerstner 模型模擬的是海面上各個質(zhì)點(diǎn)的運(yùn)動,各個質(zhì)點(diǎn)會隨著水波的運(yùn)動產(chǎn)生周期性運(yùn)動。 與余弦函數(shù)圖像相比,Gerstner 模型通過將點(diǎn)向波峰處擠壓,使頂點(diǎn)處變得比較尖銳,避免了生成的波峰很平滑的缺點(diǎn),如圖3 所示。 其次Gerstner 模型還有一個特點(diǎn),用它可以對基元波的Gerstner 波法向量進(jìn)行較為簡單的求解,對仿真系統(tǒng)中光照模型的引入提供了便利[5]。

圖3 余弦波與Gerstner 波的波形比較Fig. 3 Comparison of Cosine wave and Gerstner wave

Gerstner 波函數(shù)為公式(6):

在Unity 中是三維坐標(biāo),針對于式(6) 的參數(shù)x,y 軸其實(shí)就相當(dāng)于Unity 中的x,z 軸,把式(6)的y 替換成z,得到在Unity 實(shí)現(xiàn)時用到的函數(shù),公式(7)。

其中,A 表示振幅,D 表示波的方向,ω 控制波長的參數(shù),φ 波的初相, Qi用來控制波的陡度也就是波峰的尖銳程度,它的取值范圍必須要控制在[0,1]區(qū)間內(nèi)。 當(dāng)其值為0 時,呈現(xiàn)的是普通正弦波疊加后的波形圖像;在(0,1)區(qū)間內(nèi),則會形成波峰不斷尖銳的波形效果;而Qi最大只能取到1,此時是波峰尖銳程度的臨界值,如果大于1 的,則在波峰處會形成環(huán)狀[6]。

模擬海水運(yùn)動波形后,還需要有與周圍環(huán)境的一些交互,尤其是與光照的交互,這樣模擬產(chǎn)生的效果才會更加真實(shí)。 通過凹凸紋理映射中有關(guān)光照的一些計(jì)算可知,需要法線信息,這里也是一樣。 由于Gerstner 波是一個顯式函數(shù),可直接求得水面上任一質(zhì)點(diǎn)的法線向量。 通過分別對x,y 的偏導(dǎo)即可求得副切線向量→B 以及切線向量→T,如公式(8)、(9)所示,再求二者差乘最終得到法向量→N,公式(10)。

3 實(shí)驗(yàn)結(jié)果

根據(jù)以上的方法,在Unity5.0 平臺上使用C#以及OpenGL 進(jìn)行繪制。 通過判斷視角的不同采用不同的凹凸紋理映射技術(shù),圖4 是繪制成果。

從圖4 可以看出,使用法線貼圖映射技術(shù),人眼可直觀感受到海面上是有所波動的,而且用該方法渲染速度也比較快,在一定程度上實(shí)現(xiàn)了視覺上的凹凸效果。 觀察遠(yuǎn)處海平面,可以發(fā)現(xiàn)海面波動還是處于同一平面,實(shí)際海面本身還是靜止的,不會與其他物體交互產(chǎn)生碰撞,僅僅在視覺上讓人產(chǎn)生海面的動態(tài)效果,這種方法一般使用在普通游戲的大范圍裝飾性海水場景中。

使用Gerstner 波模型進(jìn)行模擬操作,單個Gerstner 波所形成的海面具有動態(tài)性,但波形較為單一,具有重復(fù)性。 通過多個Gerstner 波疊加,使模擬出的海面更加具有隨機(jī)效果,但光影效果不是特別明顯,其渲染效果如圖5 所示。

圖4 基于法線貼圖映射技術(shù)生成的海面Fig. 4 Sea surface generated based on Normal mapping

圖5 基于Gerstner 波模型生成的海面Fig. 5 Sea surface generated based on Gerstner

不論使用凹凸紋理映射方法還是Gerstner 模型,都有各自的優(yōu)缺點(diǎn)。 現(xiàn)將這兩種方法結(jié)合在一起,既彌補(bǔ)了凹凸紋理映射不能實(shí)現(xiàn)真正的動態(tài)效果并產(chǎn)生交互行為,同時也能改善Gerstner 模型產(chǎn)生光影效果不明顯的問題。 兩者結(jié)合后的模擬效果如圖6 所示。

圖6 基于凹凸紋理映射與Gerstner 結(jié)合后生成的海面Fig. 6 Sea surface generated by combining Bump Mapping with GerstnerK

由圖6 可看出海平面真實(shí)地具有了動態(tài)效果,同時海面上海波的明暗效果也表現(xiàn)了出來。

4 結(jié)束語

本文針對兩種相對簡單的模擬海水方法進(jìn)行了相應(yīng)改進(jìn)。 對于凹凸紋理映射,通過判斷視角,在不同視角下采用不同的映射技術(shù)。 當(dāng)視線與海面垂直時,采取普通的法線貼圖映射;而當(dāng)視線傾斜時,則采取改進(jìn)后的法線凹凸映射。 利用Gerstner 波模型對海水動態(tài)模擬,通過疊加多個Gerstner 波實(shí)現(xiàn)波形復(fù)雜、凹凸不平的動態(tài)海面效果。 最后將這兩種基本方法組合在一起進(jìn)行海水模擬,既實(shí)現(xiàn)了海水動態(tài)模擬交互,又通過凹凸紋理映射技術(shù)改善了光影渲染效果。

本文提出的研究方法僅是對于大面積海水進(jìn)行的模擬,對于一個完整的海洋場景,研究工作還需要考慮到光照、浪花細(xì)節(jié)和物體交互的模擬。

猜你喜歡
凹凸切線紋理
圓錐曲線的切線方程及其推廣的結(jié)論
肺紋理增多是病嗎?
童夢
最易寫錯筆順的字
TEXTURE ON TEXTURE質(zhì)地上的紋理
過圓錐曲線上一點(diǎn)作切線的新方法
二次曲線的兩條互垂切線的若干性質(zhì)
消除凹凸紋理有妙招!
凹凸的爆笑生活
春享陌上
交口县| 茂名市| 新巴尔虎左旗| 乌兰县| 綦江县| 宝丰县| 景东| 兖州市| 清徐县| 宜州市| 广灵县| 尤溪县| 台山市| 孟州市| 遂溪县| 金平| 宁晋县| 报价| 拉孜县| 彭州市| 温宿县| 安龙县| 江陵县| 肇东市| 会宁县| 北海市| 巴彦县| 元江| 团风县| 健康| 扬中市| 永州市| 定西市| 贵溪市| 南木林县| 丰城市| 普兰县| 安塞县| 永靖县| 林周县| 广宁县|