欧美日韩精品国产,欧美aⅴ99久久黑人专区,亚洲综合久久久久,中文字幕一区二区三区精彩视频

Unity2022.1擴(kuò)展機(jī)器人工具箱優(yōu)化

文章來(lái)源: 作者:frank 發(fā)布時(shí)間:2022年05月13日 點(diǎn)擊數(shù):

Unity2022.1版本中Unity對(duì)其機(jī)器人工具箱進(jìn)行了多項(xiàng)優(yōu)化并對(duì)諸多功能進(jìn)行了改進(jìn)以提升性能。這些優(yōu)化包括:

使用新的逆動(dòng)力學(xué)力傳感器工具模擬復(fù)雜的環(huán)境的機(jī)器人感知;

通過(guò)完全改進(jìn)的Physics Debugger探索動(dòng)力學(xué);

利用插值、批處理查詢等方面的性能改進(jìn)。

下面讓我們來(lái)依次了解一下此次Unity都優(yōu)化了一些什么內(nèi)容。

Physics Debugger優(yōu)化

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

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

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

現(xiàn)在,在調(diào)試器中可以在法線和分離距離交匯處旁顯示接觸點(diǎn)。

Physics queries:如Physics.Raycast或Physics.CastSphere通常支持自定義,如自定義角色控制器或車(chē)輛控制器。再過(guò)去的版本中它們是不可見(jiàn)的,因此調(diào)試起來(lái)很棘手。為了解決這個(gè)問(wèn)題,Unity2022.1版本提供了Physics queries可視化功能。

逆動(dòng)力學(xué)

到目前為止,Unity擁有的工具只支持正向動(dòng)力學(xué),即,給定一組物體和施加在物體上的力,以此計(jì)算物體的移動(dòng)軌跡。這一功能非常實(shí)用,通過(guò)此次擴(kuò)展機(jī)器人工具箱。Unity 2022.1中全新增加了對(duì)逆向動(dòng)力學(xué)的支持,即,給定一個(gè)物體和軌跡,在模擬時(shí)計(jì)算導(dǎo)致該該物體沿軌跡移動(dòng)所受的力。

具體而言,新功能包括:

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

獲得所需的合力來(lái)抵消重力,對(duì)抗力和作用在物體上的離心力

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

Interpolation與Extrapolation

當(dāng)以相對(duì)較低的頻率進(jìn)行模擬時(shí)剛體會(huì)用Interpolation與Extrapolation的形式來(lái)給人一種平滑運(yùn)動(dòng)的印象。這是通過(guò)計(jì)算每次更新的變換姿態(tài)來(lái)實(shí)現(xiàn)的。在Interpolation的情況下,最后兩個(gè)模擬姿態(tài)會(huì)被用于計(jì)算該幀新的變換姿態(tài)。在Extrapolation的情況下,將會(huì)使用最后模擬的姿態(tài)和速度。但是,Unity并沒(méi)有把這些姿態(tài)反饋給物理引擎。姿態(tài)僅為系統(tǒng)提供圖形和動(dòng)畫(huà)。因此,Raycast不會(huì)檢測(cè)到Interpolation姿態(tài)的物體。

為了避免在轉(zhuǎn)換模式過(guò)程中出現(xiàn)物理學(xué)問(wèn)題,整個(gè)機(jī)制必須完全遵循物理學(xué)原理。在內(nèi)部法則調(diào)用后,SyncTransforms會(huì)在姿態(tài)寫(xiě)入之前調(diào)用每個(gè)更新權(quán)限,以清除所有變換更新。這就導(dǎo)致了兩類(lèi)問(wèn)題:

如果場(chǎng)景中至少有一個(gè)Interpolation物體,所有物理組件的所有變換變化在每次更新時(shí)都會(huì)與物理引擎同步(即使它們?cè)诿看胃聲r(shí)都需要同步一次);

如果對(duì)具有帶Interpolation的剛體組件的變換進(jìn)行了更改,則該對(duì)象的Interpolation會(huì)中斷,因?yàn)橛脩暨M(jìn)行的變換更改會(huì)傳播到physics engine,并更改最后一個(gè)模擬的姿態(tài)(姿態(tài)不會(huì)單獨(dú)存儲(chǔ),只是物理引擎當(dāng)前使用的姿態(tài))。

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

處理論壇上的反饋

論壇致力于討論physics tech的各種實(shí)驗(yàn)預(yù)覽,在Unity 2022.1版本中將實(shí)現(xiàn)的一些優(yōu)化:

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

Joint用于連接兩個(gè)剛體,并定義它們相對(duì)運(yùn)動(dòng)的約束。從Unity 2020.2開(kāi)始,Joint也可以用于將剛體鏈接到關(guān)節(jié)體。為了實(shí)現(xiàn)這一點(diǎn),每Joint類(lèi)都擁有了一個(gè)附加屬性,這在檢查器中能夠看到。同時(shí)鏈接到剛體和關(guān)節(jié)體是不可能的,所以當(dāng)一個(gè)選項(xiàng)已經(jīng)被設(shè)置時(shí),同時(shí)顯示這兩個(gè)選項(xiàng)會(huì)占用垂直空間。在新版本中將會(huì)只顯示已設(shè)置的屬性從而節(jié)省空間。

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

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

PhysX版本目前已經(jīng)更新到了4.1.2,這是迄今為止4.x系列中的全新版本。但這是一個(gè)小版本,只能解決關(guān)鍵的錯(cuò)誤和崩潰。

當(dāng)一個(gè)動(dòng)態(tài)物體與一個(gè)collider重疊時(shí),求解器的目標(biāo)是找到corrective impulse,在滿足所有約束的同時(shí)將它們分開(kāi)。在內(nèi)部,此impulse是針對(duì)一對(duì)接觸點(diǎn)中的每個(gè)接觸點(diǎn)單獨(dú)計(jì)算的,但是之前版本的Unity只有一個(gè)返回所有點(diǎn)總和的總值。隨著新版本的發(fā)布,Unity將公開(kāi)接觸點(diǎn)的一個(gè)新屬性,允許檢索每個(gè)接觸點(diǎn)的impulses的結(jié)構(gòu)。

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

主站蜘蛛池模板: 江都市| 东山县| 台前县| 界首市| 娄烦县| 滨海县| 武汉市| 潮安县| 玛曲县| 琼海市| 井陉县| 旬邑县| 北碚区| 游戏| 神农架林区| 吴堡县| 香河县| 永州市| 湘阴县| 江孜县| 资兴市| 北海市| 黄山市| 射阳县| 伽师县| 从江县| 壤塘县| 美姑县| 昌乐县| 饶阳县| 全州县| 海盐县| 淳化县| 阳高县| 莆田市| 南昌县| 炎陵县| 庆元县| 樟树市| 满洲里市| 乐至县|