[程式] UE4 Navigation Mesh 心得

看板GameDesign (遊戲設計)作者 (yekdniw)時間4年前 (2020/11/19 20:16), 編輯推噓2(200)
留言2則, 2人參與, 4年前最新討論串1/1
網頁版 https://yekdniwue.blogspot.com/2020/11/NavMeshExperience.html UE4的Navigation Mesh 如果照著網路上的教學做,大概都可以建的出來。 A.I.角色也都能夠在上面正常行走。 不過應用稍微有點變化的時候就會碰上一些問題,在這邊先介紹過去遇過的項目 名詞與縮寫說明 NavMesh: Navigation Mesh NBV: Navigation Bounds Volume,用來定義navigation mesh的範圍。 P-Level: Persistent Level。 主地圖。 Sublevel: 放置於主地圖下的子地圖。 如何調整NavMesh的大小 雖然一般都會調整NBV的scale,不過並不建議這麼做。 Volume類型的個人都建議調整Brush內的大小,不要改Actor的scale。 NavMesh到底存在哪邊? NavMesh實際上存在於有NBV的場景的umap內。 不是場景的BuiltData,也不一定是主地圖。 舉例來說 主地圖 (1個NBV) sublevel1 (0個NBV) sublevel2 (0個NBV) sublevel3 (2個NBV) 當Build完NavMesh之後,主地圖與sublevel3都需要存檔。 我可以在Build的時候排除sublevel嗎? 可以,在Build之前把sublevel設隱藏的話,就可以排除掉,如下圖所示 sublevel隱藏的時候Build Path,就不會排除方塊(圖1.)。 sublevel顯示的時候Build Path,會排除方塊(圖2.)。 [圖] 圖1. 隱藏Sublevel build path [圖] 圖2. Sublevel1內的方塊被考慮進去並視為不可行走。 有Nav Mesh刪不掉 有的時候會看到場景裡面有不該存在的Nav Mesh,而且不管怎麼重Build都刪不掉。 我找到了重現步驟如下: 1. 開啟一個新的Level File->NewLevel->Default 2. 放置Nav Mesh Bounds Volume (NBV) 於場景內,並與地板有交疊。 [圖] 3. Build->Build Paths (或是引擎自己會auto build navigation) 4. 確認Nav Mesh有出現 5. 直接刪除步驟2的NBV 6. Build->Build Paths (或是引擎自己會auto build navigation) 7. Bug發生,Nav Mesh不會因為NBV刪掉而消失 解決上面的問題的步驟 1. 放置Nav Mesh Bounds Volume (NBV) 於場景內,並與地板無交疊。 [圖] 2. Build->Build Paths (或是引擎自己會auto build navigation) 3. 確認Nav Mesh消失 4. 刪除步驟1的NBV 5. 完成 這個問題看起來只要確認,在刪地圖內最後一個NBV之前, 有確保NavMesh有清除,再刪掉NBV就好。 但是實際上有很多問題 如果有很多sublevel,這個確認就會變得非常浪費時間。 總共要做下面幾件事: 對所有sublevel 如果sublevel沒有NBV 放置NBV於不會產生NavMesh的地方 Build Paths sublevel存檔 NavMesh能不能存放在streaming的sublevel 非Always loaded的sublevel,例如Blueprint可控制的sublevel, 或是World Composition模式的sublevel。 都必須遵照以下的步驟設定,中間步驟有少或是出錯都會有問題。 後果有以下幾種現象,我都遇過 NavMesh直接消失 Editor看的到,執行Play in Editor看不到NavMesh 關掉Editor重開後就看不到NavMesh 每次執行NavMesh都不一樣,有時位置錯,有時有些區域沒出來。 正確設定Streaming sublevel的NavMesh 1. 放置一個NBV在P-Level中,可以不需要跟任何東西交集。 之後都不可刪掉此NBV。 2. 選擇P-Level內自動產生的RecastNavMesh Actor。 3. Runtime Generation 設為Static。 4. Fixed Tile Pool size設為true。 5. Tile Pool size有可能需要隨著地形大小調大。 6. 在子地圖放置NBV。 注意事項 你也不能單獨打開子地圖,對任何子地圖Build Path後存檔。 一旦這麼做,在讀主地圖的時候就會產生兩個以上的 RecastNavMesh Actor(主地圖+子地圖) 然後就會錯亂,NavMesh就不正常了。 因為這個原因,個人極度不建議在這種使用情境打開 auto build navigation的功能, 只要有人單獨編輯子地圖,觸發Build Path並存檔, 這樣那個子地圖的NavMesh就會壞了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.16.217 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1605788202.A.573.html

11/19 23:50, 4年前 , 1F
11/19 23:50, 1F

11/20 00:35, 4年前 , 2F
11/20 00:35, 2F
文章代碼(AID): #1Vjc8gLp (GameDesign)
文章代碼(AID): #1Vjc8gLp (GameDesign)