最近剛學習完houdini的pdg流程,很有趣。總結下如何製作這一個小場景和我自己的學習筆記~本文不涉及houdini pdg的具體教學~
關於houdini pdg具體製作地形和道路的方法,跟隨Indie-Pixel大佬的視頻即可,手把手教學:
PDG for Indie Game Dev Tutorial Series
關於pdg是什麼,這個大佬的知乎文章講的很清晰:
lingzerg:我理解的Houdini - PDG遊戲場景作業流程介紹https://zhuanlan.zhihu.com/p/61941754
我簡單的理解是pdg能管理一堆hda流程,使得每個hda的製作不至於太冗雜。譬如我的這個小場景基本就是分了3個hda的步驟,如圖,基本地形,道路融合和分層,撒點。這樣每個hda步驟管理一個部分的功能,最後在unity內也可以分別看到各個階段的效果。
2 場景的houdini製作上文已經講過,地形製作主要分為三個部分,基本地形,道路融合分層和撒點。
基本地形很簡單,就是heightfield,其中用到了heightfield terrace節點來製作梯田效果。
道路project道路融合和分層,道路融合部分跟教學視頻裡的一致。先將道路mesh製作成bgeo,然後通過heightfield project節點將道路的mesh映射到地形上,提高高度即可,如圖。
道路花草mask需要講解的有2點,一個是道路兩邊加中間的花草mask製作,就是善用heightfield maskshrink與heightfield remap節點來縮小與合併mask。中間我還加了下mask noise。不過這裡有個小問題就是如果路面太窄的話,這個mask精度可能不會太高,mask精度適合地形resolution精度成正比的。
梯田mask另外一個就是梯田mask的製作,也很簡單,就是通過copytopoint節點先製作出很多盒子,然後映射到heightfield節點上即可。然後通過簡單的vex代碼,在copytopoint的所有複製點的地方根據點的row(我是根據grid的點來複製的),來隨機給一定的位置偏移就有簡單的錯落效果了。
最終各個layer這樣到最後在根據每個層的mask重命名和copy到各個layer,方便下一個hda內部進行撒點。如圖,不同顏色代表了不同的layer。這裡需要注意有沒有多用重複的mask在上層合併,需要用blast節點剔除以下。保證每一個layer就一個節點。這樣賦值terrain layer後在unity顏色就不會出錯。
最後就是撒點啦,因為上層的layer分的清晰,所以根據各個layer來撒點即可。每一層用heighfield scatter節點,mask layer取上一層分出來的layer,這一步和hda一樣,具體可看我上篇文章~
3 Unity & PDG最後,就是把pdg流程結合unity。方式和hda類似,只不過最後是需要將top network節點的hda導入unity,然後製作pdg asset link。然後根據開放出來的top node(這裡就是我的三個主要的hda節點)可以分別cook出結果。最後就是在top network的hda內開放各個參數,這樣最後在unity內部也能更改。圖中更是我最後撒點步驟開放出來的參數。
Tips製作道路的path hda似乎不能讀取unity的transform,只能根據edit節點改變transform。
如果在unity裡,HDRP材質顯示不對,可能houdini不支持,自己加個材質節點即可。
善用vex expression,用代碼可以解決很多小問題。
最終效果~
OK~就這些啦~如有錯誤,歡迎指正~
Houdini PDG + Unity Terrain 小場景製作學習總結2這一次又嘗試做了一個小場景(哈爾的移動城堡,嘿嘿~)。總結一下學習筆記。在技術上和上次幾乎沒什麼區別,很簡單,所以就稍微總結一下。
1 Houdini PDG製作流程Houdini PDG 流程圖主要使用的還是Houdini PDG。整體流程很簡單,如上圖。就是各種基本地形和地形mask製作的hda,地形生成、道路mask、湖泊mask(包含湖泊地形凹陷)、地形layer和最後的撒點。
其中道路和湖泊的生成基本使用houdini的curve節點直接生成的hda,這樣方便在unity裡直接調整。
兩者思路都一樣,就是先各自生成各自數量的mesh,然後合併成一個整體的mesh作為下一階段hda的輸入。
然後用heightfield mask by project節點就可以將mesh映射到地形上了,然後再根據湖泊的mask下沉一段地形。
最後一步輸入的地形的mask其餘每一步其實都很簡單,顧名思義即可。主要是這一次PDG流程的優勢可以體現出來,譬如在最後一步撒點之前其實都是地形的生成和mask的準備,這樣每一個hda的功能都可以相對簡化很多。最後一步撒點直接根據已經生成好的各個mask撒點即可,在unity裡也能分段看出各個階段的結果。
其中花的撒點
也應用到了我之前一篇裡面講到過的vop節點自動生成噪聲,然後賦值到每個點上,通過其隨機顏色值生成不同的prefab。
2 渲染蒸汽貓marterio:虛幻4重現「哈爾的移動城堡」花園(附風格化草地製作分享)https://zhuanlan.zhihu.com/p/272734944
稍微講一下渲染。草地的渲染主要還是參考之前的大佬教程。主要就去法線、偽造陰影、增加色彩。
地形layer的貼圖和映射的tiling和offset值我稍微修改的就是在增加色彩的地方,根據地形的layer貼圖的scale和世界坐標,添加了地形layer的貼圖混合,這樣地形融合和遠處視角會好一些。最後加了一點頂點移動。
Tutorial: Ghibli/anime style ocean in Blender
湖泊的渲染參考教程如上,原視頻是在blender上實現的,依葫蘆畫瓢在unity的shadergraph上連線實現即可。
流程也很簡單,主要分為兩個部分,首先是兩層layer的顏色混合,如上。
然後,閃爍的高光點基本用voronoi圖作為底,然後在object空間球形映射在plane上,最後根據time來控制voronoi圖的uv來進行移動閃爍即可。基本思路都很簡單,用mask貼圖映射也行,隨便都可改。
最終效果圖和視頻。
來源知乎專欄:無聊的渲染之路