認(rèn)識VR開發(fā)流程,訂定SOP
高煥堂 (臺灣VR產(chǎn)業(yè)聯(lián)盟主席、廈門VR/AR協(xié)會榮譽(yù)會長兼顧問)
本文引用地址:http://butianyuan.cn/article/201907/402121.htm摘要:由于VR與各行各業(yè)都有密切關(guān)聯(lián),各行各業(yè)的專業(yè)知識(如水力發(fā)電)與VR技術(shù)的結(jié)合,可以發(fā)展出該行業(yè)最簡潔有效的標(biāo)準(zhǔn)開發(fā)流程(SOP)。這項(xiàng)SOP包括開發(fā)步驟、工具、素材與內(nèi)容格式標(biāo)準(zhǔn)等規(guī)范。
本文先說明VR內(nèi)容開發(fā)的基本流程,然后把這一般流程SOP對應(yīng)到醫(yī)療、物流等各行業(yè),而得出各行業(yè)專有的VR開發(fā)SOP。再基于各行業(yè)SOP展開,對應(yīng)到各行業(yè)單位和開發(fā)伙伴的參與活動。最后,制定這些活動的使用工具(如Unity、UE),和產(chǎn)出(物)的標(biāo)準(zhǔn)規(guī)格。
關(guān)鍵詞:VR;開發(fā)流程;SOP
1 SOP的任務(wù)、工具與平臺
1.1 應(yīng)用軟件(VR App)
應(yīng)用軟件是VR開發(fā)者依循SOP而產(chǎn)出的可運(yùn)行的軟件成品,通常將它上傳到應(yīng)用商店(App Store),讓使用者下載到其VR終端設(shè)備上運(yùn)行。在運(yùn)行時(Runtime),就會呈現(xiàn)VR內(nèi)容,并與使用者交互(圖1)。
例如《Tilt Brush》3D繪畫應(yīng)用,它是著名的HTCVive應(yīng)用,可以讓您在虛擬的3D 環(huán)境下的自由繪畫創(chuàng)作。很逼真、身歷其境!使用者操作一個2D控制板,按照任何角度去調(diào)整和移動整個繪畫平面,來畫出具有景深效果的各種圖形(圖2)。
1.2 SDK:VR App開發(fā)工具包
SDK就是App開發(fā)工具包(Software Development Kit)。它是針對特定平臺(如Cardboard移動VR),由廠商提供給開發(fā)者來創(chuàng)建App的開發(fā)工具包。例如,Cardboard SDK for Unity就是Google提供給開發(fā)者的工具包,開發(fā)者可以利用Unity3d的環(huán)境和資源來規(guī)劃、創(chuàng)建適合于Cardboard(運(yùn)行)平臺的VR 應(yīng)用程序(圖3)。
SDK還包括用于除錯及其他用途的軟件工具、程序代碼范例、支持性的技術(shù)注解或者其他說明文件等。
1.3 VR編輯器:SDK的核心組件
在游戲開發(fā)領(lǐng)域,Unity/UE是最流行的App編輯器,包含一個完整的游戲設(shè)計、制作環(huán)境和可復(fù)用的美術(shù)、燈光等素材資源,協(xié)助開發(fā)者順暢完成一款游戲App。例如,Google基于該Unity編輯器而附加Cardboard運(yùn)行平臺的新API、相關(guān)資源等成為一套工具包,就稱為基于Unity編輯器的“Cardboard SDK forUnity“。
以這個Cardboard SDK for Unity為例,其使用流程是:
第1步:為Unity下載Cardboard SDK。
第 2 步 : 把 它 導(dǎo) 入 到 你 的Unity編輯項(xiàng)目中。亦即,在Unity主菜單里,點(diǎn)選AssetsImportPackageCustom Package,并選擇CardboardSDKForUnity.unitypackage,然后點(diǎn)擊Import按鈕。
第3步:為了做出第一個VR游戲體驗(yàn),可在Project Browser中的CardboardPrefabs文件夾里,把CardboardMain Prefab拖到場景中,在Inspector中設(shè)定與你的游戲主角一樣的位置。這樣可以展現(xiàn)出你在看他(主角)的眼睛。
第4步:接下來,選擇主照相機(jī)(Main Camera)并且在Inspector中勾選。
第5步:最后,在Unity編輯器中試運(yùn)行,就會出現(xiàn)3D場景了。這時,你的照相機(jī)隨著頭部的運(yùn)動而進(jìn)行旋轉(zhuǎn),您可以左顧右盼了。
1.4 什么是API?
SDK通常包含有App軟件框架(Framework)和腳本 的 呼 叫 接 口(API,ApplicationInterface)定義檔。開發(fā)者可以在App(如Android的Java程序代碼)中,通過API來呼叫Cardboard平臺上的軟硬件資源。以Cardboard 的環(huán)繞音頻為例,基于Cardboard SDK和API,可以開發(fā)令人感到身臨其境的VR應(yīng)用??梢月牭絹碜运拿姘朔降穆曇?,例如天空打雷或者是飛機(jī)飛過頭頂?shù)穆曇簟?/p>
目前,Cardboard 開放了SDK和API,協(xié)助開發(fā)者的制作音頻。該SDK新的環(huán)繞音頻功能是很容易上手的。開發(fā)者可以呼叫組件來創(chuàng)建Android系統(tǒng)上的音景。Android的Native開發(fā)者可以使用一套簡單的JavaAPI來模擬虛擬的聲音和環(huán)境,讓使用者就如同在真實(shí)世界里所聽到來自周遭四面八方的聲音。
1.5 App運(yùn)行平臺(操作系統(tǒng))
通常,從App Store將App下載了就會在VR終端設(shè)備的操作系統(tǒng)(OS)上運(yùn)行,例如移動VR App常見的運(yùn)行平臺是:Android、Windows等。以Google的Cardboard 移動VR為例,這是典型的“Cardboard+手機(jī)”簡易型移動VR設(shè)備。雖然Cardboard可以搭配不同品牌的手機(jī),但是在開發(fā)時,使用的SDK會預(yù)設(shè)其App適用的運(yùn)行平臺(如Android、iOS等不同的操作系統(tǒng))。
此外,還有針對不同平臺的VR助手。VR助手就如同大家耳熟能詳?shù)腁ndroid手機(jī)助手一般用來協(xié)助管理移動或VR終端平臺上的App及相關(guān)資源,如終端軟硬件資源的管理、云端資源的搜索、下載、安裝的功能等。
1.6 素材編輯器
素材(Material)是用來組合成為VR App的材料,包括美術(shù)、聲音、燈光、課件文檔等等資源。有些素材編輯器與App編輯器是分開的;而有些是兩者整合在一起的。大多數(shù)編輯器可以導(dǎo)入外來(第三方廠商)的素材。例如,Unity3d編輯器可以導(dǎo)入3dsMAX、MAYA所匯出的.max,.mb,fbx等。此外,從網(wǎng)絡(luò)上也能下載一些.max和.mb格式的VR素材模型,包括人物、地形素材等。
一般而言,素材資源是可以跨平臺共享的。至于App常常使用到特定運(yùn)行平臺(OS)的SDK和API,是與運(yùn)行平臺息息相關(guān)的。尤其是VR產(chǎn)業(yè)中,HTC、三星、Google等都各自擁有運(yùn)行平臺和應(yīng)用商店(圖4)。
1.7 內(nèi)容的實(shí)時“動態(tài)加載”
App下載了,用戶將App運(yùn)行起來。在運(yùn)行期間,App會連結(jié)到云端的內(nèi)容分發(fā)平臺,取得實(shí)時性的內(nèi)容,從VR終端顯示出來,這項(xiàng)功能通稱為“動態(tài)加載”(DynamicLoading)。例如,“VR+教育”的教學(xué)App,在其運(yùn)行時期,可以持續(xù)從內(nèi)容分發(fā)平臺取得最新的教學(xué)課件等(圖5)。
其中的基本需求是:不要將教學(xué)課件綁入App里,而直到學(xué)生們運(yùn)行VR App時才到后端分發(fā)平臺去實(shí)時取得教學(xué)課件里的素材。那么,在實(shí)際的Daydream或HTC Vive平臺上,又如何實(shí)現(xiàn)這項(xiàng)需求呢? 如果您使用Unity編輯器,最簡單的途徑就是使用Unity的ScriptableObject技術(shù)。我們可以使用ScriptableObject 在 Project view 建立專用的 Asset來做設(shè)定,并將它存放在Resources文件夾中。當(dāng)VRApp運(yùn)行中,需要用到時才呼叫 Resources.Load()函數(shù)來取到設(shè)定值,若有任何修改的話,只要打開Project view 內(nèi)的 Resources文件夾修改一下即可。
通常,一個行業(yè)的VR素材資源是相當(dāng)多的,而且會時常更新的,這些龐大資源全部綁入App里,并不太合理。于是,就可以進(jìn)一步將ScriptableObject打包成為AssetBundle。我們的VR App可以掌管主要邏輯或線程,當(dāng)有需要某些資源(如VR素材),才從外部的 AssetBundle 加載資源,這樣我們常常只需要重新打包資源(VR素材)的部分就能完成更新,而不需要重新編譯App的程序代碼。
如果您不是使用Unity編輯器,也可采用其他技術(shù),例如運(yùn)用Android/Linux平臺上的*.SO,或者Windows平臺上的DLL來實(shí)踐動態(tài)加載功能。
2 更完整的的SOP活動
2.1 添加互動設(shè)計和軟件程序代碼
在上一節(jié)里,已經(jīng)說明了從素材設(shè)計到App開發(fā)的流程SOP(圖6)。
圖6 本開發(fā)流程 (圖片素材來自:百度圖片)
除了素材之外,在開發(fā)流程中,還需要“交互設(shè)計師”來設(shè)計出符合客戶的要求,以及設(shè)備系統(tǒng)的需求(圖7)。
圖7 添加互動設(shè)計和軟件代碼(圖片素材來自:百度圖片)
此外,還需要“編碼工程師”來撰寫代碼,并添加到素材和App里,才能實(shí)現(xiàn)動態(tài)的素材和人機(jī)互動的行為(圖7)。
2.2 VR的敘事新模式
在VR設(shè)計上,首先要把自己當(dāng)成一個引導(dǎo)者而不是一個導(dǎo)演。因?yàn)閭鹘y(tǒng)電影的導(dǎo)演給觀眾的是一個框框,而的引導(dǎo)者所給的將是一個完整的世界。VR設(shè)計師若能依循上述原則,而擺脫按照預(yù)定腳本來進(jìn)行的傳統(tǒng)影視制作模式,就能給用戶一種令人意外的方式來改變已經(jīng)構(gòu)筑好的虛擬世界,即可帶來更多深刻的臨場感。
所以,VR的情節(jié)是受觀眾自由選擇所影響的,而VR設(shè)計師(即引導(dǎo)者)則預(yù)先在其中鋪設(shè)世界觀和規(guī)則。例如,《Sequenced》是一個“VR+動漫”的應(yīng)用。提供了全新的體驗(yàn):讓觀眾可以和動畫劇情產(chǎn)生互動。只要你對動畫場景中角色、事物的關(guān)注與互動,就可能將改變角色的對話內(nèi)容和引起其他事件的發(fā)生。
《Sequenced》讓你沉浸在故事中,完全是下意識的互動,完全忘記了劇情的發(fā)展其實(shí)是受互動而影響的。 然而從體驗(yàn)中,您可以看到其敘述新模式,體會它如何來引導(dǎo)一個VR動漫的情節(jié),并領(lǐng)悟其幕后的互動設(shè)計新模式(圖8)。
圖8 《Sequenced》敘述新模式
3 后端的云服務(wù)——以法國的Allegorithmic為例
3.1 簡介Allegorithmic公司的云服務(wù)
基于Unity3d的Substance Designer、Substance Painter和Substance B2M等系列3D渲染軟件都是Allegorithmic公司的產(chǎn)品。全球超過5萬多位3D設(shè)計師都在使用這些產(chǎn)品來進(jìn)行游戲的設(shè)計與開發(fā)。
3.2 擅用新潮的Docker虛擬機(jī)技術(shù)
Allegorithmic公司的平臺使用Docker容器來提供連接服務(wù),包括license服務(wù),故障采集服務(wù),和license分析服務(wù);用于開發(fā)技術(shù)原型,比如一個網(wǎng)頁版的Substance渲染引擎。在部署方面,他們使用私有的Registry服務(wù),開發(fā)者可以將生產(chǎn)環(huán)境中將要用到的鏡像拉過去,只要鏡像構(gòu)建(Build)成功了,就能在最終環(huán)境中運(yùn)行起來(圖9)。
圖9 Docker虛擬機(jī)支持VR設(shè)計與開發(fā)
在Allegorithmic的開發(fā)環(huán)境里,還有一個預(yù)生產(chǎn)的環(huán)節(jié),這里Docker也提供了很大的幫助,大大簡化了部署過程,讓新成員能夠很快上手,也能將設(shè)計師或客戶的新想法迅速實(shí)現(xiàn)出來。
4 結(jié)語
本文的目的是讓您熟悉VR內(nèi)容的基本開發(fā)流程,做為訂定各行各業(yè)(如軍事&救災(zāi)領(lǐng)域)專用的VR開發(fā)SOP,以便提升“VR+行業(yè)應(yīng)用”的發(fā)展速度。在訂定各行業(yè)專用SOP過程中,常會考慮各行業(yè)的特性、既有的技術(shù)、想引進(jìn)的新技術(shù)等,決定添加上那些新元素。 例如,我常常會添加Docker鏡像(Docker Image)標(biāo)準(zhǔn),來包裝VR素材。一旦引進(jìn)了Docker鏡像元素,對既有的SOP就可能會有些改變,讓其更容易管理(因?yàn)榘b標(biāo)準(zhǔn)化了)。
為什么會想引進(jìn)Docker鏡像標(biāo)準(zhǔn)呢?筆者的考慮如下。
1)Docker鏡像可以讓3D數(shù)據(jù)模型(如動漫3D素材模型)搭配自己的軟件代碼Lib(如渲染或數(shù)據(jù)處理引擎),VR內(nèi)容的編輯器可以將素材的3D模型與其相關(guān)代碼Lib打包成為標(biāo)準(zhǔn)的Docker鏡像,成為VR的動態(tài)(Dynamic)素材。
2)3D數(shù)據(jù)模型就如同“信紙”,它含有許多3D數(shù)據(jù)(就是信紙所記載的內(nèi)涵);可稱之為靜態(tài)(Static)素材。
3)VR內(nèi)容制作時,可將1)數(shù)據(jù)模型;2) 相關(guān)代碼Lib;一起打包成為Docker鏡像。這Docker鏡像就如同“信封”。
4)“信封”里包裝了靜態(tài)的素材模型及其相關(guān)代碼,就變成為動態(tài)的素材模型。
5)這種符合Docker標(biāo)準(zhǔn)的“信封”,對于VR素材/應(yīng)用的云平臺(如VR素材超市)的維護(hù)管理是非常有利的。
6)靜態(tài)素材如同信紙,動態(tài)素材如同信封,素材的云平臺(如Docker鏡像Registry) 如同郵局,Docker引擎如同郵差。
7)由于信紙和內(nèi)容格式可以百花齊放(例如把語句寫在楓葉上),只要把它加上程序代碼,一并裝進(jìn)去標(biāo)準(zhǔn)信封就可以了。
8)所以VR的素材開發(fā)者可以使用不同的編輯器材編輯信紙、內(nèi)容和代碼,然后打包成為Docker標(biāo)準(zhǔn)鏡像(裝進(jìn)去標(biāo)準(zhǔn)信封)即可。
9)由此可知,我們可以利用形形色色的VR素材編輯器,并不必限制使用單一的VR內(nèi)容編輯器。
10)我們不必限制單一的標(biāo)準(zhǔn)3D數(shù)據(jù)模型,也不必限制單一的程序語言(或繪圖引擎);而只需要單一的信封標(biāo)準(zhǔn)(如Docker鏡像標(biāo)準(zhǔn))即可。
由于VR與各行各業(yè)都有密切關(guān)連,許多人都采取通用型的一般開發(fā)流程,其開發(fā)效率是不高的。如果各行業(yè)的專業(yè)知識都能與VR技術(shù)進(jìn)行更緊密的結(jié)合,訂定出該行業(yè)最簡潔有效的標(biāo)準(zhǔn)開發(fā)流程(SOP),就能更上層樓、事半功倍了。
(注:本文來源于科技期刊《電子產(chǎn)品世界》2019年第7期第17頁,歡迎您寫論文時引用,并注明出處。)
評論