AR,離我們並不遙遠
內容來源:2017年5月13日,ThoughtWorks AR/VR高級研發工程師陳成在“2017技術雷達峰會|洞察構建未來的技術和趨勢”進行《AR,離我們並不遙遠》演講分享。IT大咖說作為獨家視頻合作方,經主辦方和講者審閱授權發布。
閱讀字數: 2388 用時: 4分鍾
嘉賓演講視頻和PPT地址:https://t.cn/RCZJKAI
頭腦風暴
真實的情境
AR項目的頭腦風暴一定要在真實情境中去做,因為AR應用是基於現實基於情境的。
隻有在真實使用的情境中才能發掘信息,去進行需求收集、用戶訪談、用戶流程、創意產生等等的這一係列流程。
設備
根據場景需求,基於設備和設備所能提供的API選擇設備。
我們的應用可以是2C,供消費者自己使用;可以是2B,在商業環境中給工作人員用;也可能是2B2C,需要工作人員指導消費者在商業場裏景使用。
設備可以大致分為手機AR和頭戴式AR兩大類。
手機AR是用手機攝像頭捕捉到真實世界的景象,並在上麵疊加虛擬的物品呈現出的AR。
頭戴式AR是一個穿戴設備。比如微軟推出的HoloLens設備,他們和各行業企業合作推出了很多AR範例應用。
考慮設備能力
內容要由合適的設備來承載和展現。
渲染能力:設備是否具備我們需要的場景複雜度的需求;
續航時間:產品是短時間的應用還是長時間的應用,使用頻率是怎樣的;
網絡能力:是否需要聯網;
在室內還是室外;
場景的規模有多大……
這些都是我們需要考慮的方麵,為優化做準備。
原型
紙盒原型
我們用一些紙盒、樂高或者是真實的物品代替,在真實的3D空間、實際場景中做實驗,檢測我們的原型設計是否可用有效,用戶使用是否方便。
交互設計
設計師與程序員合作,使用幾何模型(而不是高精度模型)進行開發實驗。
這個階段還要進行交互範式探索。
最後產出故事板,借助故事板來描述3D的情景。
設定優化目標
為場景和設備設定合適的優化目標和指標,要考慮的是幀率、內存消耗、耗電量和設備溫度等等。
高保真設計
設計工具
高保真設計會用到一些設計工具,比如用3DS Max、Maya、Blender進行模型的製作和動畫,Substance用來做材質紋理,等等。
製作適合設備的素材
素材中在場景中渲染出來後看不見的麵,可以去掉,降低渲染的損耗。
控製點和麵的數量,超過限製性能會降低很多。
拆分大的素材,沒被看見的部分就不用渲染。
開發
Unity
我們的開發平台選用Unity 3D引擎。它的出身是一個遊戲引擎,在當前AR、VR飛速發展的環境下,它已經一個通用的3D開發平台,可以適配到超過30個平台做構建,在AR、VR方麵,Unity占的份額非常高。
設備API丨開源工具庫
開發是基於設備API去做的,利用開源工具庫豐富我們可以提供的其它功能。
用戶輸入輸出
輸入一般會用到注視和手勢。在手機VR上的視角中心有一個點,這個點會跟隨用戶頭部的移動而移動。從AR技術實現上,我們會在用戶的視角中間打一個光束,和它交叉的點就是光標所在的位置。利用那個點去跟所選取到的虛擬物品進行交互,交互的方法就是用手勢,如果是基於手機上的AR app,我們會用屏幕點擊來進行。
輸出方麵物體的渲染交給Unity去做,構建虛擬場景,然後把虛擬的物品渲染出來。除了視覺上的物體渲染,還需要有聽覺上的感受。空間聲音就是很重要的一方麵。空間聲音就是聲音具有空間感,使用戶體驗感受更加真實。
環境空間感知
這是AR區別於VR的地方,它會和真實世界結合起來,把虛擬世界變為現實世界。分為空間建模、空間分析理解以及圖像和物體識別。
空間建模:如圖可見,用戶所在空間被掃描疊加了一層建模的樣子,是通過設備傳感器所做到的。建模可以被渲染出來,它的渲染和物理部分是分開的。圖中渲染後用不同顏色表現出距離信息。建模包含了物理信息,它有一個碰撞機,能讓虛擬物品疊加上去。
空間分析理解:建模後拿到模型,經過空間分析理解可以知道哪裏是地麵、哪裏是牆、哪裏是天花板。
圖像和物體識別:圖像和物體識別可以用第三方服務做到,比如Vuforia,開源的ARToolkit,等等。識別出來後再進行疊加處理。
AI:AI服務完全可以融入AR應用中,為AR增添色彩。例如微軟、穀歌、IBM的服務,都可以通過接口的方式把數據傳輸給它們處理,再拿回來進行使用。這樣AR的服務就可以做到語音識別和對話,UI不再是一個對話列表,而是可以真的有一個虛擬人在和用戶進行交流。
共享協作:根據場景需求,與相同或不同設備協同合作。可以與其它設備做到同步的交互,也可以頭戴設備與平板結合做演示,遠程控製用戶的體驗。
代碼管理與協作開發:Git是我們常用的。Github for Unity是直接放在Unity裏的一個插件,進行圖形化的管理。Unity也推出了服務Collaborate。
Unity和代碼優化:首先要做Unity player settings和quality settings,不同設備需要不同的設置。根據應用內容設置攝像機的clipping plane,避免過多渲染。設置stabilization plane,添加spatial anchor,增加穩定性。放置物體在合適的位置,觀看舒適度更高。把spatial mapping的精度降低到Low。寫著色器,或者使用HoloToolKit之中的著色器。使用draw call batching和instancing,一次性渲染多個對象。使用純GPU繪製大量的物體。
測試
Unity Test Runner
Unity Test Runner是Unity集成的工具。Edit mode用於做unit test,play mde可做integration test。要注意Undo或在新場景中測試。
Unity 中預覽
可以在Unity中直接進行預覽。在editor中有一些預設的空間模型可以預覽,也可以遠程連到你的設備。
監視數據
幀率一定要保證在60幀或者以上,如果低於60幀可能會產生抖動或者不穩定,用戶會感到暈眩。
HoloLens上內存如果超過900兆會被直接關掉,也是我們需要關注的問題。
耗電量取決於應用的強度和幀率。
設備溫度要關注的是環境處於室內還是室外,還有使用時間等因素都和溫度有著密不可分的關係。這對用戶的舒適度會有很大影響,尤其是頭戴式AR設備,如果設備溫度過高,用戶體驗會很差。
本地構建
部署到模擬器,再部署到設備上進行使用。
CI/CD
用Jenkins啟動Unity命令行工具,可直接使用Unity的接口。可以用Unity的Unity Cloud Build服務,構建手機應用。
迭代循環
迭代循環的流程是頭腦風暴-原型設計-高保真設計-開發-測試-部署,最重要的是優化。
我今天的演講就到這裏,謝謝大家。
推薦文章
基於容器和微服務加快迭代速度實踐
Web與人工智能時代
近期活動
內含贈票福利 | 你可能正在錯過一場下半年最火的互聯網大會
編者:IT大咖說,歡迎關注“itdakashuo”,@IT大咖說 ,轉載請標明版權和出處
最後更新:2017-09-11 16:03:11