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