亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Unity3D的水面波浪模擬

        2020-04-24 14:50:40歐陽勁夫龔捷
        電腦知識(shí)與技術(shù) 2020年5期
        關(guān)鍵詞:著色器

        歐陽勁夫 龔捷

        摘要:在游戲,電影以及其他應(yīng)用領(lǐng)域中,對(duì)自然界的模擬成為研究熱點(diǎn)。而水作為自然界中重要的元素,其研究?jī)r(jià)值不言而喻。在一個(gè)以水為背景的項(xiàng)目中,如海洋鉆井模擬訓(xùn)練系統(tǒng),戰(zhàn)艦世界游戲等等,水的真實(shí)感將會(huì)成為項(xiàng)目好壞的評(píng)判標(biāo)準(zhǔn)之一。為了更好地模擬具有真實(shí)感的水面,該文使用了Unity3D引擎,C#語言編寫,應(yīng)用引擎自帶的組件模擬光的反射折射,利用法線貼圖代替公式計(jì)算,利用可視化編程制作水體著色器,從而達(dá)到低性能損耗,模擬效果較好的目的。

        關(guān)鍵詞:Unity3D;柏林噪聲;uv紋理貼圖坐標(biāo);著色器;C#

        中圖分類號(hào):TP37 文獻(xiàn)標(biāo)識(shí)碼:A

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

        開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

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

        1 實(shí)現(xiàn)過程

        1.1 創(chuàng)建水面網(wǎng)格

        首先新建Unity項(xiàng)目,然后在左側(cè)菜單欄中創(chuàng)建一個(gè)空對(duì)象(Create Empty)并改名為Waves,用于容納Waves腳本。然后創(chuàng)建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;)

        以上代碼的作用為根據(jù)坐標(biāo)生成三角形網(wǎng)格。然后在In-spector視窗中創(chuàng)建Mesh Renderer組件(Component),選用默認(rèn)材質(zhì)(Default Material),即可根據(jù)腳本生成所需的網(wǎng)格,在Wire-Frame模式中可預(yù)覽效果。

        1.2 柏林噪聲

        柏林噪聲是一種自然噪聲生成算法,由Ken Perlin提出,指在一維或二維空間中,對(duì)一個(gè)隨機(jī)的點(diǎn)指定一個(gè)值和梯度。在噪聲圖像中,坐標(biāo)軸不是整數(shù),而是由梯度雙線性內(nèi)插法計(jì)算得來的值。柏林噪聲和Navier-Stokes方程是生成水體隨機(jī)高度數(shù)據(jù)非常有效的辦法,但Navier-Stokes方程非常復(fù)雜且難以實(shí)現(xiàn),所以在這個(gè)項(xiàng)目中使用法線貼圖代替。

        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;]

        以上操作完成后,應(yīng)該得到了一個(gè)卷曲,運(yùn)動(dòng)的表面,但進(jìn)入U(xiǎn)nity陰影模式(Shaded Mode),表面并沒有陰影或者高光,這是因?yàn)檫€沒有計(jì)算頂點(diǎn)法線和生成UV動(dòng)畫。

        1.3 生成uv動(dòng)畫

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

        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有白帶的標(biāo)準(zhǔn)著色器,但效果一般,所以使用Unity的渲染管線(RenderPipeline)重新制作著色器。首先進(jìn)入U(xiǎn)nity界面,選擇Window選項(xiàng)卡,選擇Package Manager,安裝Lightweight Render Pipeline(LWRP)。然后空白處右鍵創(chuàng)建著色器(Shader),選擇PBRGraph,再創(chuàng)建一個(gè)材質(zhì)(Material),使用剛創(chuàng)建好的PBR Graph。然后雙擊材質(zhì)球即可進(jìn)入U(xiǎn)nity Shader Graph界面。圖1著色器采樣

        4 總結(jié)

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

        參考文獻(xiàn):

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

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

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

        [4]余凡.基于Unity3d的福建省海洋立體實(shí)時(shí)觀測(cè)網(wǎng)交互展示系統(tǒng)[J].數(shù)字技術(shù)與應(yīng)用,2016(12):58-59.

        [5]譚同德,趙碩,趙紅領(lǐng).應(yīng)用折射反射紋理的實(shí)時(shí)水面仿真技術(shù)[J].鄭州大學(xué)學(xué)報(bào):工學(xué)版,201 1,32(2):88-92.

        【通聯(lián)編輯:唐一東】 收稿日期:2019 -11-15

        作者簡(jiǎn)介:歐陽勁夫(1994-),男,碩士,主要研究方向?yàn)樘摂M現(xiàn)實(shí)與計(jì)算機(jī)模擬;龔捷,男,副教授,主要研究方向?yàn)橛?jì)算機(jī)模擬,計(jì)算機(jī)網(wǎng)絡(luò)。

        猜你喜歡
        著色器
        基于OpenGL著色器和雙緩存的雷達(dá)航跡高效顯示方法
        “魔戒”鑄造指南:Blender建模著色教程
        電腦報(bào)(2021年6期)2021-07-27 23:03:35
        基于UE4 實(shí)時(shí)射線追蹤技術(shù)的研究與探討
        基于Unity Shader石油泄漏現(xiàn)象模擬的研究
        基于IMx6的opengl圖形著色器開發(fā)研究
        基于可編程GPU的光照模型實(shí)驗(yàn)案例設(shè)計(jì)
        基于WebGL的在線圖像瀏覽器的設(shè)計(jì)與實(shí)現(xiàn)
        一種基于GPU的氣象站點(diǎn)填圖繪制方法
        河道流動(dòng)水體三維仿真方法研究
        DirectX 12來臨! 異步著色器讓你輕松玩游戲
        少妇被黑人嗷嗷大叫视频| 久久亚洲sm情趣捆绑调教| 欧美刺激午夜性久久久久久久| 强d漂亮少妇高潮在线观看| 综合无码综合网站| 99久久国产亚洲综合精品| 国产成人综合日韩精品无| 日本大片在线一区二区三区 | 久久精品成人一区二区三区| 男女做爰猛烈啪啪吃奶动| 日韩国产成人无码av毛片蜜柚| 久久久精品波多野结衣| 国语对白做受xxxxx在线中国| 韩国无码精品人妻一区二| 水蜜桃在线观看一区二区国产| 国产熟女白浆精品视频二| 极品一区二区在线视频| 国产午夜精品av一区二区麻豆| 少妇愉情理伦片高潮日本| 欧美性大战久久久久久久| 国产精品久久无码免费看| 偷拍视频十八岁一区二区三区| 久久久国产精品| 99久久亚洲精品日本无码| 性欧美暴力猛交69hd| 最新国产成人综合在线观看| 国产又粗又猛又黄色呦呦| 精品一区二区三区女同免费| 亚洲国产精品情侣视频| 亚洲一区精品无码| 午夜内射中出视频| 亚洲AV无码一区二区三区性色学| 天天摸天天做天天爽天天舒服| 国产熟女精品一区二区| 中文字字幕在线中文乱码解| 国产av无码专区亚洲av男同| 精品日产卡一卡二卡国色天香| 无码人妻专区免费视频| 亚洲最大的av在线观看| 一区二区三区字幕中文| 久久久久亚洲av片无码下载蜜桃 |