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