Unity開發怎麼優化大量物體的物理碰撞而產生的FPS等引數急劇下降?

時間 2021-05-31 16:47:29

1樓:

unity用的是nvidia的physx,但只是cpu端的,沒有gpu加速,而且physx的gpu加速本身侷限也很大

其他答主提到的compute shader和physx的gpu加速差不多只能做一些相對簡單的物理粒子模擬,在題主提到的如大量石子堆疊漏口的應用場景涉及比較複雜的力傳導,可能很難模擬得比較真實。

milo大神提的前幾個方法可以先試試看,做到實時比較困難。可以考慮用另乙個執行緒用physx模擬,unity只作為乙個顯式端對模擬結果插值。然後題主的應用場景可能每幀重建static aabb tree比直接用dynamic的更高效一些,可以嘗試一下

2樓:兩個頭的女孩

在可以計算physics的3d軟體裡(比如blender)用fracturebake physics,再匯出到unity裡去。

blender自帶的乙個fracture modifier:Using the Cell Fracture Feature in Blender to Create Advanced Dynamics

然後貌似有個可以把fps保持在你想要的數字的命令:

= 300;}

3樓:brust joker

自己從頭到尾寫一套碰撞吧,極大數量的碰撞使用compute shader來做。

特定的崩塌效果可以在3dsmax或者maya裡面進行物理運算,最後匯出為頂點快取動畫來做。

4樓:Right

那樣大量的場景物件模擬進行本身就是很重的。所以有這個 APEX Destruction,所有模擬在乙個物件內部進行。但是很不幸並沒有整合到 Unity。

不過還有 Unreal:APEX。

And: [GamingBolt] Nvidia demos Real-Time Massive Destruction @ GDC 2013

大量讀寫的mysql表怎麼優化?

混血王子 和我的業務類似,但是我沒你這麼大的量。我覺得redis的部分保留,水平分表應該不錯的,另外統計部分用中間表統計。還有就是提供你乙個思路,order用mongodb來存可能好點 已登出 從你的問題描述上看可以使用分庫設計。首先單庫在1千萬時出現效能障礙。我們假設1千萬是單機單庫的效能極限。可...

unity開發工作流程

5 如果需求不怎麼變了,策劃開始划水上班打dota或者開始挖下乙個坑。美術一般也閒不了。程式開始在坑里往外爬。6 功能開發完成,開始alpha測試,經過幾輪alpha過後正規點的開始beta測試,不正規的就直接上市了。3 以我目前的經驗看,基本上都是邊寫邊改。其實遊戲開發也是軟體開發的一種,因此也遵...

unity在ios平台下記憶體的優化?

Jare Guo 一方面是避免記憶體洩漏,另一方面是減少記憶體分配。避免記憶體洩漏,需要細心的去進行黑盒白盒檢查,一般都是設計上的不合理造成的。同時可以善用 Destroy 方法,強制釋放非託管記憶體。最好弄清楚 Unity 的資源管理機制,這方面網上教程很多,我就不做搬運工了。減少記憶體分配,並不...