999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Unity3D的水面波浪模擬

2020-04-24 14:50:40歐陽勁夫龔捷
電腦知識與技術 2020年5期

歐陽勁夫 龔捷

摘要:在游戲,電影以及其他應用領域中,對自然界的模擬成為研究熱點。而水作為自然界中重要的元素,其研究價值不言而喻。在一個以水為背景的項目中,如海洋鉆井模擬訓練系統,戰艦世界游戲等等,水的真實感將會成為項目好壞的評判標準之一。為了更好地模擬具有真實感的水面,該文使用了Unity3D引擎,C#語言編寫,應用引擎自帶的組件模擬光的反射折射,利用法線貼圖代替公式計算,利用可視化編程制作水體著色器,從而達到低性能損耗,模擬效果較好的目的。

關鍵詞:Unity3D;柏林噪聲;uv紋理貼圖坐標;著色器;C#

中圖分類號:TP37 文獻標識碼:A

文章編號:1009-3044(2020)05-0219-02

開放科學(資源服務)標識碼(OSID):

水在自然界中的存在十分普遍,對于水的模擬在許多應用領域都很有必要,例如水面的運動分析,物理校正流動模擬分析。對水的模擬加上一點特效,可以增強真實感,這在游戲和電影產業中非常盛行。然而,這種自然界獨特的流體所具有的隨機性,導致模擬計算水流需要復雜的算法和大量的計算性能。在這種情況下使用傳統模擬3D流體的方法將意味著極其巨大的網格,以及海量的運算,使用這種方法在普通的計算機上是幾乎不可能模擬出來的。然而Jerry Tessendorf 2004年提出的基于高度場的水面模擬,為普通計算機模擬水體提供了可能,甚至在現代大規模GPU計算下也能進行實時模擬。Unity是一款由Unity Technologies研發的跨平臺2D/3D游戲引擎,可用于開發Windows、MacOS及Linux平臺的游戲。Unity帶有的Mesh Renderer組件可方便繪制模型的三角形網格,并對其編程,獲取頂點高度數據,用來定義水面網格非常合適。而Shad-er -直是Unity開發者的一個難關,因為涉及數學,圖形學,Shader語法等多個難題,而最新版本的Unity則推出了ShaderGraph,通過可視化界面編程,可以輕松實現著色器的創建和編輯。這為我們制作貼圖流動,菲涅爾反射效應,光的反射折射,進而實現更為逼真的水體效果提供了便利。

1 實現過程

1.1 創建水面網格

首先新建Unity項目,然后在左側菜單欄中創建一個空對象(Create Empty)并改名為Waves,用于容納Waves腳本。然后創建Waves腳本。

private int[] GenerateTries0

{var tries= new int[Mesh.vertices.Length*6);

for(int x=0;x

{ for(int z=0;z

( tries[index(x,z)8 6+0]=index(x,z);

tries[index(x,z)*6+l]=index(x+1,z+1);

tries[index(x,Z)*6+2]=index(x+1,z);

tries[index(x,z)*6+3]=index(x,Z);

tries[index(x,Z)*6+4]=index(x,z+1);

tries[index(x,z)*6+5]=index(x+1,z+1);

]]

return tries;)

以上代碼的作用為根據坐標生成三角形網格。然后在In-spector視窗中創建Mesh Renderer組件(Component),選用默認材質(Default Material),即可根據腳本生成所需的網格,在Wire-Frame模式中可預覽效果。

1.2 柏林噪聲

柏林噪聲是一種自然噪聲生成算法,由Ken Perlin提出,指在一維或二維空間中,對一個隨機的點指定一個值和梯度。在噪聲圖像中,坐標軸不是整數,而是由梯度雙線性內插法計算得來的值。柏林噪聲和Navier-Stokes方程是生成水體隨機高度數據非常有效的辦法,但Navier-Stokes方程非常復雜且難以實現,所以在這個項目中使用法線貼圖代替。

i{ (Octaves[o].alternate)

{var perl= Mathf.PerlinNoise《x*Octaves[o].scale.x)/Dimen-sion,(z*

Octaves[o].scale.y)/Dimension)*Mathf.PI*2f.

y+= Mathf. Cos(perl+Octaves[o]. speed. magnitude*Time.time)4

Octaves[o].height;}

else

*Octaves[o].speed.x),Dimension,(z*Octaves[o].scale.y+

Time.time*Octaves[o].speed.y)/Dimension) - 0.5f;

y+= perl*Octaves[o].height;]

以上操作完成后,應該得到了一個卷曲,運動的表面,但進入Unity陰影模式(Shaded Mode),表面并沒有陰影或者高光,這是因為還沒有計算頂點法線和生成UV動畫。

1.3 生成uv動畫

UV動面是一種常用的渲染技巧,經常用來描述水的流動、霓虹燈的閃爍等。實現的原理為動態修改貼圖的UV坐標,使物體表面產生變化。用一張水波的貼圖,處理其UV值,這樣就用靜態紋理和UV動畫模擬出了動態水流動的效果。在這個項目中還可以讓UV偏移與柏林噪聲相關,實現較普通UV動畫更為真實的水面模擬效果。

private Vector2[] GenerateUVs()

{ var uvs= new Vector2[Mesh.vertices.Length]

for (int x=0;x<=Dimension; x++)

{ for (int z=0;z<=Dimension; z++)

(var vec= new Vector2《x,UVScale)%2,(z/UVScale)%2);

uvs[index(x,z)]_new Vector2(vec.x<=1 7 vec.x:2 -

vec.x,vec.y<=1 7 vec.y:2- vec.y);}

return uvs;1

2 制作著色器(Shader)

接下來就是制作水面著色器(Shader),雖然Unity有白帶的標準著色器,但效果一般,所以使用Unity的渲染管線(RenderPipeline)重新制作著色器。首先進入Unity界面,選擇Window選項卡,選擇Package Manager,安裝Lightweight Render Pipeline(LWRP)。然后空白處右鍵創建著色器(Shader),選擇PBRGraph,再創建一個材質(Material),使用剛創建好的PBR Graph。然后雙擊材質球即可進入Unity Shader Graph界面。圖1著色器采樣

4 總結

本文研究了使用Unity3D引擎模擬自然界水體的過程,其中包括使用網格組件構成了基本的水面,為下一步的渲染做準備;從網上下載了水面紋理的貼圖,并處理其UV值,以較低的系統性能損耗模擬出了動態水流;運用Unity全新的Shader Graph可視化編程技術,方便快捷的制作了水體著色器,使模擬的真實感更強。

參考文獻:

[1]平桉,程乃偉.基于Unity3D粒子系統的消防水槍流體噴射仿真研究[J].科技創新與應用,2017(9):42.

[2]趙忠琛,程乃偉.基于Unity3D的水波漣漪仿真模擬[J].山東工業技術,2017(8):293.

[3]胡能發.基于Unity3d游戲開發中地面及水下效果的渲染設計[J].電子世界,2015(22):161-162.

[4]余凡.基于Unity3d的福建省海洋立體實時觀測網交互展示系統[J].數字技術與應用,2016(12):58-59.

[5]譚同德,趙碩,趙紅領.應用折射反射紋理的實時水面仿真技術[J].鄭州大學學報:工學版,201 1,32(2):88-92.

【通聯編輯:唐一東】 收稿日期:2019 -11-15

作者簡介:歐陽勁夫(1994-),男,碩士,主要研究方向為虛擬現實與計算機模擬;龔捷,男,副教授,主要研究方向為計算機模擬,計算機網絡。

主站蜘蛛池模板: 久久精品国产免费观看频道| 97国产精品视频人人做人人爱| 手机永久AV在线播放| 国产青榴视频| 久久综合激情网| 婷婷综合色| 日本少妇又色又爽又高潮| 日日摸夜夜爽无码| 国产麻豆另类AV| 亚洲中文字幕久久无码精品A| 日日碰狠狠添天天爽| 99久久人妻精品免费二区| 欧美一区国产| 欧美国产日韩一区二区三区精品影视| 91精品久久久无码中文字幕vr| 人妻免费无码不卡视频| 最新午夜男女福利片视频| 精品福利网| 丝袜高跟美脚国产1区| 午夜色综合| 欧美97色| 欧美色丁香| AV无码国产在线看岛国岛| 亚洲v日韩v欧美在线观看| 国产视频自拍一区| 91午夜福利在线观看| 妇女自拍偷自拍亚洲精品| 精品国产毛片| 免费人成网站在线观看欧美| 第一区免费在线观看| 国产精品无码AⅤ在线观看播放| 99热免费在线| 91精品啪在线观看国产| 国产美女在线观看| 午夜欧美理论2019理论| 视频二区亚洲精品| 欧美伦理一区| 亚洲九九视频| 九色视频线上播放| 国产91高清视频| 国产极品美女在线观看| 在线看AV天堂| 欧美精品亚洲日韩a| 国产精品一区二区不卡的视频| 国产一区二区三区日韩精品 | 亚洲黄色高清| 伊人久久精品无码麻豆精品| 日本精品影院| 54pao国产成人免费视频| 日本精品中文字幕在线不卡| 亚洲精品动漫| 亚洲国产天堂久久九九九| 伊人久久综在合线亚洲2019| 日韩AV无码免费一二三区| 精品国产免费观看一区| 亚洲av无码成人专区| 亚洲国产精品VA在线看黑人| 免费一级全黄少妇性色生活片| 国产人成乱码视频免费观看| 欧美亚洲一区二区三区导航| 一级黄色网站在线免费看| 国产在线自在拍91精品黑人| 黄色网站不卡无码| 久久久久亚洲AV成人网站软件| 国产视频 第一页| 国产精品99r8在线观看| 亚洲视频在线观看免费视频| 亚洲视频无码| 特级aaaaaaaaa毛片免费视频| 在线亚洲精品自拍| 国产H片无码不卡在线视频 | 国产91丝袜在线播放动漫 | 欧美乱妇高清无乱码免费| 亚洲毛片一级带毛片基地| 国产精品亚洲日韩AⅤ在线观看| 中文字幕在线日韩91| 香蕉在线视频网站| 精品国产自在现线看久久| 国产女人18毛片水真多1| 国产嫖妓91东北老熟女久久一| 玖玖精品视频在线观看| 在线日韩一区二区|