虚幻4中的程序化生成【1】程序化生成河流。
給自己立了很多flag,由于時間原因很多系列都還在寫,算是循序漸進的總結。在程序化生成系列里,將會有如下記述:
【1】程序化生成河流
主要內容有@1?shader的自動調整(如河流的深淺,河水的波濤程度)
? ? ? ? ? ? ? ? ? @2?河流形狀的調整,我們只需要編輯一條樣條線,河流根據這條樣條線自適應形狀。
【2】程序化生成森林
主要內容有:@1用隨機種子隨機生成森林。減少美術工作量。
? ? ? ? ? ? ? ? ? ? ? @2?程序化生成藤曼,減少美術制作藤曼的痛苦。
【3】程序化地形
主要內容有:主要是上面那中方法的高級應用。
現在先來看看程序化生成河流
這個主要包含兩部分,第一部分為河流shader,第二部分為讓河流模型匹配樣條線。
shader我完全用的是虛幻的材質編輯器來制作,如果有必要,想制作caustic的話,虛幻也可以用自己的功能開啟distancefield來完成。
水的材質的程序化主要體現在shader會根據水在場景中的深淺來自己調節深度,反射度,泡沫紋理的插值強度,和水邊緣高亮強度。
虛幻材質編輯器里剛好提供了一個簡便的方法,DistanceFeild。我用了兩個distancefeid,和紅,藍,綠,黑三種顏色先制作了四個mask,然后用這個mask來制作水面不同深度的各個效果。
上圖為我把紅藍兩個mask拆開后的結果。
完成了Mask的制作之后剩下的就是調效果啦,不過這里主要把精力集中于程序化上,所以其他就不贅述了。
完成了shader部分的程序化工作之后,剩下的一步就是讓河流平面模型匹配樣條線。
首先我們需要建立一個腳本,然后在里面添一個樣條線組件slinecomponent。再聲明一個splinemeshcomponent。這里需要注意一點,splinemeshcomponent準確翻譯應該是一個樣條線段模型組件,而不是樣條線模型組件。因為實際上splinemeshcomponent只會覆蓋樣條線的一個線段而已。
邏輯都比較簡單,就一個for循環往樣條線上加SplineMeshComponent然后對這個組件設置它的切線和位置。挺簡單的,腳本就能完成都不需要動用c++。所以我這里就不帖代碼了,直接截取了腳本的一部分。
總結
以上是生活随笔為你收集整理的虚幻4中的程序化生成【1】程序化生成河流。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机excel求四分位数,如何在Exc
- 下一篇: JAVA动物园喂动物小实例