來源:映維網(wǎng) 作者 顏昳華
Unity MARS的Simulation(模擬)系統(tǒng)減少了AR應用程序開發(fā)的測試時間,因為它能夠直接通過Unity Editor的Play Mode和Edit Mode提供諸如平面和圖像標記檢測等世界理解能力。
在這篇博文中,Unity的Amy DiGiovanni將向我們介紹Simulation系統(tǒng),以及開發(fā)者可以如何利用這個工具來快速迭代情景可適應的AR體驗。下面是映維網(wǎng)的具體整理:

你可以通過Unity MARS輕松創(chuàng)建能夠智能地適應現(xiàn)實世界的復雜AR體驗。我們設計這個創(chuàng)作工具是為了解決最常見的三個AR開發(fā)者痛點:為巨大的潛在數(shù)據(jù)空間進行創(chuàng)作;針對真實場景進行迭代和測試;以及提供能夠響應環(huán)境的應用程序。
通過在Unity Editor中啟用預覽AR設備如何應對物理環(huán)境的測試,Simulation能夠解決迭代時間問題。Simulation有助于針對模擬真實世界或直接是真實世界的各種環(huán)境進行測試。這能夠幫助你更容易創(chuàng)建自適應和可訪問的應用和體驗。結合Unity MARS的代理和條件匹配系統(tǒng),Simulation有助于創(chuàng)作者推動空間計算的發(fā)展。
作為一個系統(tǒng),Simulation可以分解成兩個概念不同,但可以彼此合作的核心功能,從而大大減少迭代時間:
在Edit Mode下單獨預覽場景的執(zhí)行。在Editor中設置一個環(huán)境場景,并基于所述環(huán)境提供AR數(shù)據(jù)。
下面我們將詳細介紹它們是如何提升AR開發(fā)過程。
1. 執(zhí)行預覽
Simulation允許你在Edit Mode中預覽場景的執(zhí)行,并提供對表示真實世界對象的靈活代理在真實世界中的行為的即時理解。在執(zhí)行預覽過程中,Simulation將活動場景中的游戲對象復制到一個稱為“Content Scene/內(nèi)容場景”的預覽場景中,并在Content Scene中的每個Monobhavior設置runInEditMode flag。關于如何編寫與Simulation場景預覽兼容的MonoBehaviours,請參見這個Unity MARS文檔。

利用Simulation視圖,你可以單獨地與這個場景執(zhí)行預覽進行交互。Simulation視圖是一個自定義的場景視圖,它從第三者角度或從camera視角顯示在環(huán)境場景渲染的內(nèi)容場景。
在Unity MARS中,Simulation預覽的默認行為是以Instant Mode運行。在這種模式下,整個執(zhí)行過程發(fā)生在單個幀上,其中Unity MARS會嘗試同時根據(jù)所有數(shù)據(jù)匹配代理。盡管這種行為并不現(xiàn)實,但在定義代理及其條件時可以提供即時反饋。
你同時可以手動啟動和停止Continuous Mode預覽。這個模式比較類似于Play Mode,即內(nèi)容場景中的行為逐幀運行,直到預覽停止。應用程序在Continuous Mode中的交互和行為有限,因為諸如物理和輸入等Unity系統(tǒng)只支持Play Mode。Continuous Mode預覽有助于查看應用程序如何響應隨時間變化的數(shù)據(jù),并同時快速修改場景。
Simulation系統(tǒng)跟蹤內(nèi)容場景相對于活動場景的狀態(tài),并在你進行更改時保持最新狀態(tài)。如果對副本在內(nèi)容場景中運行的對象進行任何屬性修改,Simulation將接收所述更改并指示它不同步。這意味著在重新同步之前,最新的更改不會應用于預覽。在重新同步過程中,Simulation會銷毀內(nèi)容對象,并用活動場景中的新副本替換它們,然后開始運行新副本。
Simulation有一個自動重新同步預覽的選項,所以你可以在代理上進行迭代,并立即在模Simulation圖中看到更改。結合Unity MARS的視覺創(chuàng)作功能,這一功能尤其強大,因為它不僅適用于標準場景視圖,同時適用于Simulation視圖。你可以在環(huán)境的情景中更改代理條件,并立即看到調(diào)整條件參數(shù)如何更改結果。對于復制成本高昂的大型復雜場景,建議你禁用自動同步選項,并在必要時手動重新同步。
2. Simulation如何提供AR數(shù)據(jù)
環(huán)境構造是Simulation的基礎。環(huán)境是一組獨立于在Simulation中運行的應用內(nèi)容的對象。實際上,環(huán)境是一個具有獨立物理和照明的場景。這種分離的存在使得Editor中的測試可以盡可能地接近AR設備測試,因為環(huán)境可以在Editor中充當真實世界。
數(shù)據(jù)提供器是環(huán)境和內(nèi)容之間的關鍵環(huán)節(jié)。與其他類型的AR數(shù)據(jù)提供器一樣,Simulation提供器與應用程序內(nèi)容一起存在,但它們可以訪問環(huán)境中的信息。為了支持執(zhí)行預覽,提供器必須同時兼容Play Mode和Edit Mode。Simulation提供器可以通過多種方式來使用環(huán)境信息并提供數(shù)據(jù),但數(shù)據(jù)源主要有三類:合成、錄制和實時。
2.1 合成數(shù)據(jù)
合成數(shù)據(jù)是人為創(chuàng)建的,而不是根據(jù)真實世界事件生成的數(shù)據(jù)。這種數(shù)據(jù)來自于在環(huán)境場景中實例化的預置。Unity MARS提供了一組默認的環(huán)境預設,包括房間、建筑和室外空間。你同時可以創(chuàng)建自己的模擬環(huán)境。
我們已經(jīng)在運動追蹤、地理定位、平面定位、點云檢測、圖像標記檢測和光照估計等方面推出了具有合成AR功能的Simulation。大多數(shù)數(shù)據(jù)都是由環(huán)境預置中的合成對象即時提供。
Simulation同時可以通過模擬數(shù)據(jù)發(fā)現(xiàn)過程來為運動追蹤、點云檢測和平面查找創(chuàng)建數(shù)據(jù)。這個發(fā)現(xiàn)過程會根據(jù)環(huán)境預置的內(nèi)容(模擬的“真實世界”)和主camera(模擬的“設備”)的狀態(tài)來動態(tài)提供數(shù)據(jù)。為了在移動設備模擬數(shù)據(jù)發(fā)現(xiàn),我們只在camera移動時檢測數(shù)據(jù),并且只使用camera視錐內(nèi)的部分環(huán)境來增加我們對世界的模擬理解。
2.2 錄制數(shù)據(jù)
Simulation可以通過播放AR會話的記錄來提供數(shù)據(jù)。所述記錄可以使用即將發(fā)布的Unity MARS app或使用Simulation本身進行創(chuàng)建。Unity MARS同時提供人臉追蹤數(shù)據(jù)的樣本記錄。
錄制的會話數(shù)據(jù)存儲在Timeline asset中,其中每種類型的數(shù)據(jù)都有一個track。環(huán)境中的Playable Director播放會話錄制Timeline,而應用程序內(nèi)容中的提供器對象綁定到數(shù)據(jù)track,以便它們能夠提供實際數(shù)據(jù)。有關會話記錄對象的更多信息,請參見這個Unity MARS文檔。
因為會話記錄是用Timeline表示,所以你可以像處理其他Timeline一樣使用它們。例如,你可以修改循環(huán)行為或調(diào)整數(shù)據(jù)track的內(nèi)容。
對于Edit Mode,你可以在Timeline窗口中清除錄制內(nèi)容。但需要注意的是,代理系統(tǒng)和其他Unity MARS行為不能及時向后運行,所以Simulation系統(tǒng)會將時間清除視為需要重新同步執(zhí)行預覽的更改。當執(zhí)行重新啟動時,錄制將重新開始,而且為了趕上新的時間,執(zhí)行將以更快的時間尺度運行。有關如何編寫與時間重新同步兼容的行為,請參閱這個Unity MARS文檔。
2.3 實時數(shù)據(jù)
這種數(shù)據(jù)來自實時的、真實的事件。Simulation能夠通過網(wǎng)絡攝像頭設備提供實時攝像頭圖像。本例中的環(huán)境包括視頻播放器對象和camera image quad,而應用程序內(nèi)容中的數(shù)據(jù)提供器會提供原始紋理。注意,從所述紋理獲取人臉追蹤數(shù)據(jù)需要第三方許可。
3. 抽象層
Unity MARS可以使用AR Foundation、Simulation或自定義提供器提供的數(shù)據(jù)。所有這些數(shù)據(jù)都經(jīng)過一個抽象層,其中所述抽象層包括代理匹配系統(tǒng)使用的Unity MARS數(shù)據(jù)庫,以及一個用于一般AR功能的層。這樣,應用內(nèi)容和使用相關數(shù)據(jù)的系統(tǒng)就不需要知道數(shù)據(jù)來自于哪個設備,或者數(shù)據(jù)是否來自于Simulation。
我們知道Simulation對AR開發(fā)而言是一個強大的通用工具。我們很高興宣布,在今年晚些時候,Unity MARS用戶無需代理系統(tǒng)即可使用Simulation系統(tǒng)。通過將Simulation作為自己的XR子系統(tǒng),你將能夠利用中Edit Mode預覽的優(yōu)勢和Editor中的AR功能,從而為你的XR項目增加靈活性和模擬支持。當然,所有的Unity Mars功能(包括Simulation)將一如既往地支持AR Foundation。
原文鏈接:https://yivian.com/news/77126.html
