日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

如何使用JavaScript开发AR(增强现实)移动应用 (一)

發布時間:2023/12/19 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用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的原生移動應用的手段。
官網:https://docs.viromedia.com/docs/viro-platform-overview

盡管在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的原創文章,請關注公眾號"汪子熙":

    總結

    以上是生活随笔為你收集整理的如何使用JavaScript开发AR(增强现实)移动应用 (一)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。