如何使用JavaScript開發AR(擴增實境)移動應用 (一)
本文封面配圖是去年Jerry看的一部電影《異形:契約》的劇照。
所謂AR(Augmented Reality), 即擴增實境,是一種將透過計算機渲染出的虛擬影像與真實世界巧妙融合的手段,背後廣泛運用了多媒體、三維建模、實時跟蹤、智慧互動、感測等多種計算機技術,將程式程式碼生成的文字、影像、三維模型、音樂、影片等虛擬資訊模擬模擬後,顯示在終端使用者透過移動裝置的攝像頭觀察到的真實世界中,虛擬和真實的兩種世界互為補充,從而讓終端使用者感受到真實世界被“增強”的體驗。
前端開發者的一個福音,就是如今我們可以僅僅憑藉JavaScript技能,就能開發一個支援增強實現的移動應用了。使用的工具是React-Native + ViroReact.
下面這個影片是Jerry的同事,SAP成都研究院數字創新空間的開發工程師Leo Wang用React-Native加上ViroReact的組合做的一個小例子:
React-Native在國內早已不是一個新技術了。區分於另一種透過JavaScript語言開發移動應用的Cordova開源專案,React Native產出的並不是執行在移動裝置作業系統的WebView控制元件裡這種混合應用,而是一個真正的原生移動應用,所使用的基礎UI元件和原生應用完全一致。從使用者體驗上來說,React-Native打包而成的原生應用給終端使用者的使用感受同用Objective-C或Java編寫的原生應用相比幾乎無法區分。
ViroReact, 是基於React-Native的一個開發庫,給React-Native的開發人員提供了一種透過JavaScript語言開發跨平臺的支援AR的原生移動應用的手段。
官網:
儘管在React-Native專案裡引入ViroReact的依賴只需要一行程式碼,但這只是冰山一角:
我們開啟一個宣告瞭如上依賴的React-Native應用,npm install安裝依賴後,在node_modules資料夾下面能看見ViroReact的實現。
ViroReact官網裡聲稱的“一次編寫,到處執行“的特性也體現在這:ViroReact提供了一個跨iOS和Android平臺的高效能3D渲染引擎,分別基於iOS的ARKit和Android的ARCore.
因為Jerry平時使用的是Android手機並且是一個Android粉,所以本文著重介紹ARCore.
在ViroReact庫資料夾下的android子資料夾內,我們看到了名為arcore的資料夾。那麼要使用ViroReact,我們得先了解ARCore是個什麼東西。
ARCore是Google為Android提供的開發AR原生應用的一個平臺, 以SDK的方式,為開發者提供了AR應用必需的三大功能:
- Motion Tracking - 運動跟蹤
- Environmental understanding - 環境識別
- Light estimation - 光源估算
Motion Tracking
當我們移動Android手機時,ARCore使用一個稱為COM(Concurrent Odometry & Mapping,並行測距對映)的程式,結合手機硬體感測器,來確定手機在真實世界的準確位置和姿勢。當真實世界的景物出現在手機攝像頭裡併發生位移變化後,ARCore使用一系列演算法標註出影像上的特徵點,並基於這些特徵點來計算位置的變化。
大家看前文Leo影片中在攝像頭裡顯示的特斯拉汽車,能發現隨著手機位置的變化,汽車在攝像頭裡顯示的3D形象也隨之變化,彷彿是一個存在於真實世界中的物體一樣。這種效果就是ARCore的功勞:手機攝像頭捕捉到的視覺資訊,結合手機裝置中慣性測量單元(Inertial Measurement Unit,簡稱IMU,由三個單軸的加速度計和三個單軸的陀螺儀組成)測量出的慣性測量值進行綜合計算,就能渲染出攝像頭內的虛擬物體,並確保隨著時間推移和手機的位移變化,在現實世界中位置和朝向也能跟著變化的效果。
Environmental understanding - 環境識別
一系列出現在攝像頭中的真實世界裡水平面或者垂直面(比如桌子表面或者牆壁)上的特徵點,都是ARCore試圖識別環境的輸入。ARCore以這些特徵點為輸入,識別出真實世界的平面和邊界資訊之後,就能允許開發者透過程式設計的方式,在這些識別出的平臺上放置一些虛擬物體。
Light estimation - 光源估算
我們在攝像頭裡觀察到的真實世界的所有物體,無不被各種強弱各異的光線所籠罩,從而形成灰度不一的陰影效果。如果透過程式碼投射到真實世界裡的虛擬物體,不支援這種被光源照射的陰影效果,則虛擬物體的逼真程度會大打折扣。
好訊息是,ARCore具有探測真實環境下的光照資訊,開發者可以透過ARCore捕獲到出現在攝像頭裡的真實世界的平均光照強度,從而將這些光照資訊投射給虛擬物體,進一步增加其真實感。
一個SDK就支援這麼多強大的功能,谷歌不愧是谷歌啊!
支援ARCore的Android手機型號列表,可以從Google官網獲得:
https://developers.google.com/ar/discover/supported-devices
在三星應用商店或者騰訊應用包裡搜尋ARCore並下載:
安裝之後,我們就可以開始用ViroReact進行應用開發了。請關注Jerry後續的文章來獲得技術細節。感謝閱讀。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2659433/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 JavaScript 開發AR(擴增實境)移動應用的預備知識和環境搭建JavaScript
- ar擴增實境應用有哪些 ar擴增實境軟體推薦
- AR擴增實境應用領域大盤點
- AR擴增實境可應用的場景
- ar擴增實境遊戲有什麼 ar擴增實境遊戲推薦遊戲
- ar擴增實境是什麼意思 ar擴增實境技術介紹說明
- AR擴增實境的發展趨勢分析
- AR擴增實境在數字化展廳中的應用形式
- 蘋果將發展擴增實境AR!下了一步大棋蘋果
- AR擴增實境技術在多媒體展廳中的應用
- 助力移動AR應用發展,阿里巴巴推出AR開放平臺阿里
- ar擴增實境智慧耳塞here one上市時間
- 使用Xamarin實現跨平臺移動應用開發
- VR(虛擬現實)和AR(擴增實境)會是下一個大產業???VR產業
- 微軟押寶擴增實境 AR幫助使用者遠端辦公微軟
- 如何使用Flask開發一個增刪改查的應用Flask
- HMS Core攜手廈門大學打造AR擴增實境技術
- 銀彈谷:中國擴增實境(AR)行業研究報告行業
- 蘋果為什麼沒做VR:更看重AR擴增實境?蘋果VR
- 150行JavaScript程式碼實現擴增實境JavaScript
- 9 款極佳的 JavaScript 移動應用程式開發框架JavaScript框架
- 《iOS應用開發指南——使用HTML5、CSS3和JavaScript》——1.3 移動應用程式≠桌面應用程式iOSHTMLCSSS3JavaScript
- AR擴增實境技術在展廳中所存在的價值
- 使用JSARToolKit5 開發AR應用 (2) MarkerJS
- 使用 ViroReact 開發增強實現應用的一個具體例子React
- 《iOS應用開發指南——使用HTML5、CSS3和JavaScript》——1.3節移動應用程式≠桌面應用程式iOSHTMLCSSS3JavaScript
- 如何用JavaScript判斷前端應用執行環境(移動平臺還是桌面環境)JavaScript前端
- MobiDev:2022年擴增實境開發指南IDEdev
- 移動應用營銷分析:消費者如何發現和使用應用
- 出版行業可以利用AR擴增實境技術大作文章行業
- 移動應用程式開發簡介!
- 使用JSARToolKit5 開發AR應用 (1) 簡介JS
- 虛擬現實(VR)和擴增實境(AR)背後的核心技術是什麼?VR
- 《Vue.js 3移動應用開發實戰》簡介Vue.js
- YonBuilder移動開發-移動原生外掛開發環境配置教程UI移動開發開發環境
- AR未來擴增實境手錶 顯示地圖立體方向箭頭指引地圖
- Cordova - 使用Cordova開發iOS應用實戰1(配置、開發第一個應用)iOS
- JavaScript實現專案列表的增刪移動JavaScript