我的訂單|我的收藏|我的商城|幫助中心|返回首頁
搜維爾[www.gentlemenlisten.com]>服務>案例分享 應用研究>案例分享>軟件開發

Unity2022.1擴展機器人工具箱優化

文章來源: 作者:frank 發布時間:2022年05月13日 點擊數: 字號:

Unity2022.1版本中Unity對其機器人工具箱進行了多項優化并對諸多功能進行了改進以提升性能。這些優化包括:

使用新的逆動力學力傳感器工具模擬復雜的環境的機器人感知;

通過完全改進的Physics Debugger探索動力學;

利用插值、批處理查詢等方面的性能改進。

下面讓我們來依次了解一下此次Unity都優化了一些什么內容。

Physics Debugger優化

Physics Debugger是理解物理引擎內部工作方式以及理解項目中觀察到的特定行為的重要工具。一個好的Debugger是創作令人信服的且符合物理學原理項目的關鍵工具。因此Unity徹底改造了Physics Debugger的用戶界面,并添加了一些有趣的新功能。

為了在同一個空間中容納更多的信息,在新版本中將屬性選項添加到選項卡中,并在其中添加了許多新的選項。

以前,在Debugger中剛體和關節體組件都有可展開的“Info”選項卡,用戶可以將其展開來查看附加信息,如當前的線速度。然而,展開“Info”部分后,編輯器的整體性能就會顯著下降。此外,以前比較不同幾何體的參數很復雜,用戶需要打開兩個檢查器面板。為了解決這一問題,Unity將所有屬性移到了Physics Debugger窗口的“Info”選項卡中,窗口中顯示了每個選定對象的屬性,用戶現在可以輕松地并排比較它們。

現在,在調試器中可以在法線和分離距離交匯處旁顯示接觸點。

Physics queries:如Physics.Raycast或Physics.CastSphere通常支持自定義,如自定義角色控制器或車輛控制器。再過去的版本中它們是不可見的,因此調試起來很棘手。為了解決這個問題,Unity2022.1版本提供了Physics queries可視化功能。

逆動力學

到目前為止,Unity擁有的工具只支持正向動力學,即,給定一組物體和施加在物體上的力,以此計算物體的移動軌跡。這一功能非常實用,通過此次擴展機器人工具箱。Unity 2022.1中全新增加了對逆向動力學的支持,即,給定一個物體和軌跡,在模擬時計算導致該該物體沿軌跡移動所受的力。

具體而言,新功能包括:

獲得由驅動器施加到物體上的當前力。能明確顯示出驅動器為達到目標付出了多大力。該力的大小取決于驅動器的剛度和阻尼,以及當前的增量目標位置和增量目標速度;

獲得所需的合力來抵消重力,對抗力和作用在物體上的離心力

獲得 joint force需要達到期望值的加速度。

Interpolation與Extrapolation

當以相對較低的頻率進行模擬時剛體會用Interpolation與Extrapolation的形式來給人一種平滑運動的印象。這是通過計算每次更新的變換姿態來實現的。在Interpolation的情況下,最后兩個模擬姿態會被用于計算該幀新的變換姿態。在Extrapolation的情況下,將會使用最后模擬的姿態和速度。但是,Unity并沒有把這些姿態反饋給物理引擎。姿態僅為系統提供圖形和動畫。因此,Raycast不會檢測到Interpolation姿態的物體。

為了避免在轉換模式過程中出現物理學問題,整個機制必須完全遵循物理學原理。在內部法則調用后,SyncTransforms會在姿態寫入之前調用每個更新權限,以清除所有變換更新。這就導致了兩類問題:

如果場景中至少有一個Interpolation物體,所有物理組件的所有變換變化在每次更新時都會與物理引擎同步(即使它們在每次更新時都需要同步一次);

如果對具有帶Interpolation的剛體組件的變換進行了更改,則該對象的Interpolation會中斷,因為用戶進行的變換更改會傳播到physics engine,并更改最后一個模擬的姿態(姿態不會單獨存儲,只是物理引擎當前使用的姿態)。

為了解決這些問題,Unity更新了Interpolation的代碼,這樣就不需要同步每幀的所有變換。該優化進一步提高了性能;新的Interpolation代碼比以前運行更快(取決于場景的復雜性)。

處理論壇上的反饋

論壇致力于討論physics tech的各種實驗預覽,在Unity 2022.1版本中將實現的一些優化:

在許多項目中,尤其是大型項目,經常使用許多GameObject layers,因此描述層組合和產生物理接觸對的矩陣也會變得相當大。在Unity 2022.1版本中,突出顯示了當前選定的行和列,這讓使用更加方便。

Joint用于連接兩個剛體,并定義它們相對運動的約束。從Unity 2020.2開始,Joint也可以用于將剛體鏈接到關節體。為了實現這一點,每Joint類都擁有了一個附加屬性,這在檢查器中能夠看到。同時鏈接到剛體和關節體是不可能的,所以當一個選項已經被設置時,同時顯示這兩個選項會占用垂直空間。在新版本中將會只顯示已設置的屬性從而節省空間。

運動學剛體是一種特殊類型的物體,它可以影響其他物體,但不會讓其他物體影響自己,除非其被頻繁移動。因此,它類似于一個static collider。運動學剛體的典型的用例是角色控制器、物理動畫驅動以及對于手腕運動的虛擬現實模擬等。這是通過設置一個運動目標來控制的,物體將在一個模擬幀中達到該運動學目標。這里與static collider的主要區別在于,運動學目標不是通過瞬間瞬移(改變姿態)達到目的,而是通過計算一幀內達到目標所需的線速度和角速度,并在事后將數據傳遞給求解器。通過這種方式,可以有助于正確地實現約束雅可比矩陣,因此任何附加的jointchain都將正確地做出反應(沒有故障)。在Unity2022.1版本中,Unity公開了一個新方法可以實現在一次操作中設置運動學目標的位置和旋轉。

Unity 2021.2中引入的Contact modification功能可以在Contact Point details被用于為求解器創建contact constraints之前更改由narrow phase生成的Contact?Point details。在Unity 2022.1版本中,開發團隊為接觸對中的物體速度添加了新的getters。

PhysX版本目前已經更新到了4.1.2,這是迄今為止4.x系列中的全新版本。但這是一個小版本,只能解決關鍵的錯誤和崩潰。

當一個動態物體與一個collider重疊時,求解器的目標是找到corrective impulse,在滿足所有約束的同時將它們分開。在內部,此impulse是針對一對接觸點中的每個接觸點單獨計算的,但是之前版本的Unity只有一個返回所有點總和的總值。隨著新版本的發布,Unity將公開接觸點的一個新屬性,允許檢索每個接觸點的impulses的結構。

Physics批處理查詢功能,可直接用于支持某些用例,但目前功能不多。此功能還在繼續發展,新版本的Physics批處理查詢功能支持更多的用例,比如具有更復雜的線程模式的用例,查詢的類型也更加多樣化。Unity2022.1版本添加了一個新的批處理查詢類型(Physics.ClosestPointCommand),并支持在任何物理場景中運行批處理查詢。

電話:010-50951355 傳真:010-50951352  郵箱:sales@www.gentlemenlisten.com ;點擊查看區域負責人電話
手機:13811546370 / 13720091697 / 13720096040 / 13811548270 / 13811981522 / 18600440988 /13810279720 /13581546145

  • 暫無資料
  • 暫無資料
  • 暫無資料
  • 暫無資料
  • 暫無資料
www.av精品