2016年6月10日 星期五

針對物理碰撞的除錯功能

作者:MORTEN SKAANING 原文連結

我們希望能幫開發者快速檢視場景中的碰撞體並確認碰撞行為應不應該發生,當網格和碰撞體不同步時常會發生問題。因此,我們正在幫幾何物理碰撞製作一個除錯模式,未來能幫你快速找出問題。

這個功能同時也能讓開發者快速選擇碰撞體所屬的物件,用來進一步檢查或更改物件。它也能模擬剛體來調整效能問題。

你可以試試這個測試版,檢查你的場景並反饋給我們。這個版本基於Unity 5.3.4p4,所以對大部份使用者來說都算穩定。目前還不確定何時會整合到正式版,一旦完成之後,我們應該也會整合到比較舊的Unity版本。



Inspector介面


和場景疊在一起看

這個模式可以看成是PhysX的可視化除錯PVD(PhysX Visual Debugger)並能直接選擇Unity的物件和資源的簡單版本。簡單易用是我們主要的目標。 PVD用起來複雜,因為它是完全不同的程式與不同的介面。有些版本的 PVD針對大型地形也有些導航效能的問題。

這裡是一些我們想要加入工具的內容:

  • 選擇獨立的碰撞體元件。
  • 可以自訂每一層的顏色。
  • 會顯示接觸點
  • 會顯示像是射線(Raycasts)/交疊(Overlap) 測試(Tests)/掃描(Sweeps)
  • 會顯示各種訊息,例如進入一個碰撞體時會顯示圖層更多資料。
  • 強化viewpoint的光影資料,比如Maya。
  • 時間軸記錄和抹除。
  • 支援網絡。
  • 更多的腳本渲染控制。
  • 顯示哪個碰撞體被觸發碰撞。
  • 顯示哪些碰撞體 觸發/碰撞 接收或送出訊息。
C#API:
下面的API只能在編輯模式使用,不能在執行檔用。
“PhysicsVisualizationSettings”類別名稱會修改為“Physics.Debug可視化”。


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class PhysicsVisualizationSettings
{
  public static void Reset ();
 
  // properties
  public static bool showCollisionGeometry;
  public static bool enableMouseSelect;
  public static bool useSceneCam;
  public static float viewDistance;
  public static int terrainTilesMax;
  public static bool forceOverdraw;
  public static bool showStaticColliders;
  public static bool showTriggers;
  public static bool showRigidbodies;
  public static Color staticColor;
  public static Color rigidbodyColor;
  public static Color kinematicColor;
  public static float baseAlpha; // (1 - transparency)
  public static bool devOptions;
  public static int dirtyCount;
 
  public static bool GetShowCollisionLayer (int layer);
  public static void SetShowCollisionLayer (int layer, bool show);
 
  public static void UpdateMouseHighlight (Vector2 pos);
  public static void ClearMouseHighlight ();
  public static bool HasMouseHighlight ();
}


一些限制:

Cloth,Joint和WheelColliders還不支持。
不停的開關TerrainCollider上的Toggle會導致射線有機會失效。
當有許多場景視窗時,只有最後一個場景視窗會有效果。
地形上樹木的Tree Colliders效果不明顯。
Drag-rectangle-to-select功能不支援。

沒有留言:

張貼留言

著作人