https://www.bilibili.com/video/BV1onUdY2Ei3/?spm_id_from=333.337.search-card.all.click&vd_source=707ec8983cc32e6e065d5496a7f79ee6
一、安裝PCG
- 插件里選擇以下進行安裝
- 移動目錄后,可以使用 Update Redirector References,更新下(否則會刪除不干凈或存在殘留文件)
- 調出Filters刷選器,更方便操作
二、創建PCG圖表
- 將PCG拖入場景中,通過Scale設置PCG的大小
三、地形布置隨機點
-
通過PCG方塊接觸到地形,使用Get Landscape Data節點來獲取地形數據
-
拉線出來,選擇Surface Sampler,表面采樣器。并選擇此節點,按D(Debug),看到采樣情況
-
按A,查看點位信息
-
密度為1是白色,密度為0是黑色
-
修改點數、松散度和隨機性;unbounded設置是否為全局,通過Point Extents設置點的大小
四、設置樹木
- 可以通過選擇 Show all projects,把不支持5.4的內容添加到5.4中間
- 選擇樹木模型,右鍵,勾選Nanite
- 在 Surface Sampler拖出 Static Mesh Spawner 靜態網格生成器
- 設置Mesh Selector的模型
- 生成樹木
- 增加數組,加入3個模型,并可以設置weight,權重
- 查看效果
五、設置點的旋轉與縮放
- 先把靜態網格節點按E (enable) 取消使用
- 從surface sampler節點,拉出Transform points 進行調試 D
- 設置transform points的隨機屬性
- 樹木看起來更加自然
- 當地形有坡度時,勾選 Absolute Rotation,防止樹木長歪
六、巖石
- 移除重疊節點
- 從大到小,保留大的節點
- 邊界修改器,改動節點的邊界大小;調整邊界是為了模型與隨機點的方塊大小基本匹配
七、巖石與樹不要重疊
-
使用Difference節點,去除樹和巖石的重疊,保留樹
-
Density Function一定要設置成,Binary
-
調整下樹的點位邊界為0.6,在Bounds Modifler中
-
連接節點,完成去除
-
先去除與樹重的點,再去除巖石重疊的點,效果更好
八、植被
- 加入Sufrace Sampler,并設置默認大小
- 加入Static Mesh Spawner,設置植被,并去掉碰撞
- 改變點的大小 Transform Points
- 用Difference把巖石重疊部分排除
九、使用參數,設置植被的縮放
- 點擊Surface Sampler節點,并點擊Graph Settings
- 添加變量Parameters
- 與植被的點做乘法操作
- scale X 一個數,賦值給scale
- 打開場景的PCG_Land_Base組件,并選擇其中的PCGComponent
- 來設置縮放的大小
十、使用參數,設置對象的網格模型
- 通過Graph Settings,設置參數為網格數組
十一、使用參數,更改網格模型的權重
- 創建一個結構體
- 在Parameters里,建立一個結構體的數組
- 建立Match And Set Attributes,來輸出模型
匹配并設置屬性是weight
靜態網格生成器里屬性名稱是Mesh
這樣做后,哪怕把模型的碰撞關掉,人物跑動起來,有不自然現象。
十二、表面采樣器 Suface Sampler,點的數量用參數代替
- 設疑個新的參數,FoliagePoints
- 打開表面采用器,使用參數
其他參數都可以做出參數
十三、保存為實例
- 保存實例后,程序視圖就不見了
- 并過去切換Graph到實例,來實現這個功能
十四、創建樣條線
- 新建一個actor藍圖,命名為BP_PathSpline
- Add一個Spline
- 設置tag名為PathSpline
- 把藍圖拖入場景,并拉長樣條線,經過PCG場景
十五、在PCG中獲取樣條線
- Get Spline Data節點
- 通過Tag確定樣條線
十六、建立一條路
-
藍圖節點
-
樣條線在一個端點上,按住alt鍵,可以拖動產生一個新的端點;
-
Spline Sampler的Mode使用Distance
-
通過 邊界修改器 bounds modifier,修改樣條線的大小
-
通過 Projection 投影節點,把樣條線與地形貼合
-
此時已經有了貼合地形的一段路,把輸出都連接到上面的Difference節點中,把其他模型都排除掉
-
最終效果
十七、建立一另一條樣條線
-
拷貝出來2條樣條線
-
在 Get Spline Data里,設置
-
這樣2條樣條線都正常工作了
-
樣條線與其他點之間的間距
-
調整Spline Sampler 樣條采樣器里的steepness值,1間隙最小
十七、制作一個PCG物體
ctrl+e:可以快捷打開圖標
- 新建一個PCG Graph
- 制作PCG節點如下:
- Get Actor Data (獲取Actor數據)設置為,過濾器為自身、模式為單點
- Static Mesh Spawner(靜態網格生成器),拖入一個模型,比如一顆枯樹干
- Bounds Modifier (邊界修改器)設置邊界大小;可開啟D,調式模式,把白色矩形剛好蓋住模型
- Transform(變換點)設置旋轉0-360,縮放1-3
這樣,當拖動PCG藍圖的時候,樹干就會隨機變化(0-360度與1-3倍縮放間)
- 把絕對縮放勾上,物體縮放大小不會受PCG體積影響
十八、在樹干上長蘑菇
- 網格體采樣器
設置樹干為采樣網格,此時采樣的點會在原點
- 復制點
復制之前樹干作為目標,把采樣的點的位置同步在樹干上
- 排除不朝上的點
法線轉成密度,z軸朝上為1,朝下為0
用密度過濾器,篩選密度范圍
*選擇點,并變化點
按比率選擇點,減少點的密度,并變化點,讓點更隨機,并按z軸偏移,讓蘑菇種在樹里
- 靜態網格生成器,讓多種蘑菇隨機排布,并設置無碰撞
十九、把樹干放入地圖中
- 表面采樣器,在表面采樣,可以設置松動,設置樹干多少
- 之前做的PCG_Obj因為沒有設置Input與Out,需要來設置這個參數
新建一個PCG_Obj_Input藍圖
輸入是為了在大地圖里,連接采樣器使用
輸出是為了模型一些排斥等使用,所以輸出只要樹干部分就可以,蘑菇不用理會了
二十、樹干模型重疊問題解決
- 在PCG_Obj_Input藍圖,加入Difference節點,拖入模型,會排除重疊的樹干
排斥的邏輯,路(排斥)所有4種;樹(排斥)巖石;樹干(排斥)樹、巖石
此課程非常不錯,需要記錄的先到此,有興趣的朋友可以繼續學習,祝福學習愉快