閱讀241 返回首頁    go 阿裏雲 go 技術社區[雲棲]


AR,離我們並不遙遠

AR

20170607193304

內容來源: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的地方,它會和真實世界結合起來,把虛擬世界變為現實世界。分為空間建模、空間分析理解以及圖像和物體識別。

cdeed4becdbc6b33b1ce3a46c0cd5fbd_jpeg

空間建模:如圖可見,用戶所在空間被掃描疊加了一層建模的樣子,是通過設備傳感器所做到的。建模可以被渲染出來,它的渲染和物理部分是分開的。圖中渲染後用不同顏色表現出距離信息。建模包含了物理信息,它有一個碰撞機,能讓虛擬物品疊加上去。

空間分析理解:建模後拿到模型,經過空間分析理解可以知道哪裏是地麵、哪裏是牆、哪裏是天花板。

圖像和物體識別:圖像和物體識別可以用第三方服務做到,比如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

  上一篇:go  ECS 還是 SWAS,看完評測你就知道了?
  下一篇:go  注重網絡安全的企業最容易獲得成功