Settings
概述
物理設置可以在與場景關聯的Map資產的Quantum Map Data腳本中,以及在Quantum Runner腳本中鏈接的Simulation Config資產中進行編輯。
Map中的設置特定於某個場景,而Simulation Config可以在多個場景之間共享。
地圖數據
場景的可玩區域相關設置可以在場景的QuantumMapData腳本或資產字段中插入的Q Asset Map中找到。
除了World Size(世界大小),只有當物理模擬成為遊戲的瓶頸時,才需要考慮調整這些設置。
| 設置 | 描述 |
|---|---|
| 世界大小 | 桶排序軸上的物理場景大小。廣義階段由所有物理實體的邊界框限制在 -WorldSize/2 到 WorldSize/2 之間。因此,確保世界足夠大以容納所有實體至關重要。如果一個實體在世界之外,它會消耗性能,因為它會被添加到第一個或最後一個桶中。從物理引擎的角度來看,邊界框之外的所有東西都被視為在世界邊緣,這將導致錯誤的碰撞候選對象。
在非桶排序軸上,物理世界僅受 FP.UsableMin 到 FP.UsableMax 的值範圍限制。 |
| 桶數量 | 廣義階段中使用的桶數量,這些桶會并行解析。根據物理實體(碰撞體)的數量使用合理的數量。桶太多,處理開銷會增加,且不會有性能提升,因為每個桶中只有很少的實體;桶太少,每個桶中的實體數量會過多,從而降低廣義階段的性能。 |
| 桶細分 | 常規查詢(重疊和射線檢測)使用一種穿刺方法來檢查桶細分中盡可能少的實體。根據預期的實體數量和執行的常規查詢數量來調整該數字。細分太多會增加開銷而沒有性能提升,而細分太少會導致查詢解析時間更長,因為它們將不得不檢查太多實體。 |
|
關於桶數量和桶細分的注意事項
默認的桶數量和桶細分值(16 個桶,8 個細分)通常適用於多達 1~2K 個實體。因此,除非物理是遊戲的瓶頸,否則您不必擔心調整它們。在這種情況下,使用任務分析器評估性能,並根據結果分別調整廣義階段和常規查詢解析的值。 |
|
| 桶排序軸 | 物理實體根據它們在桶排序軸上的位置被放入桶中。 |
| 排序軸 | 桶中的查詢根據它們在排序軸上的位置進行排序。 |
|
關於桶排序軸和排序軸的注意事項
Y 軸代表物理模擬的垂直軸。在 2D 中,這等於 Y 軸,而在 3D 中,Y 軸映射到 Z 軸,因為 3D 空間劃分在 XZ 平面上執行。 C根據實體在世界中的分佈方式選擇這些桶排序軸和排序軸。為桶排序和排序選擇不同的軸(例如 X-Y 或 Y-X)有利於實體在該平面上均勻分佈。如果實體集中在一個軸上,考慮對桶排序和排序使用相同的軸。 |
|
| 三角形網格單元大小 | 定義 3D 三角形集合被劃分為的單元大小。該數字應根據網格三角形的密度進行調整,以獲得每個單元合理的三角形數量。
為了更好地可視化,在 QuantumEditorSettings 資產的碰撞體 gizmos 部分啟用相關字段。
這將影響廣義階段和常規查詢的性能。使用任務分析器分析性能,找到最適合遊戲的數字。 |
模擬配置
SimulationConfig數據資產包含物理引擎的大量設置:
圖層 和相應的 圖層碰撞矩陣 可以從 Unity 的圖層和碰撞矩陣導入。導入後,可以直接在設置中編輯 碰撞矩陣。
優化技巧
在本節中,我們將介紹一些在優化物理設置以提高性能時需要考慮的一般事項:
- 碰撞矩陣,確保只啟用實際需要相互檢查碰撞的圖層之間的碰撞;
- 角速度 (物理控制的旋轉),禁用 此選項可使物理模擬更快、更穩定;
- 運動學實體,只要可能,就使用運動學實體而不是動態實體。運動學實體之間不會檢查碰撞,除非其中一個是觸發器運動學實體。
- 射線檢測,為射線使用合理的距離,以防止它們成為瓶頸。
- 物理體,在設置中啟用 靜止物體(resting bodies) 選項,可使靜止的實體排除在碰撞檢查之外,並減少碰撞檢測系統的負載。靜止的物體可以被另一個移動的物體或通過代碼重新喚醒。
- 線程數,調整 此選項可以增加運行時 Quantum 模擬可用的線程數量。
- 分析器,在性能調整之前和期間運行代碼系統上的分析器。瓶頸通常與自定義代碼有關,而不是物理引擎。此外,分析器有助於確定在特定遊戲負載下哪些設置最有效。有關更多信息,請參閱分析文檔。