2021年12月14日 星期二

Web AR.js

本篇文章紀錄我根據TechBridge 技術共筆部落格製作webAR的過程與碰到的難處。

AR.js成果展示
webAR成果

AR.js介紹

AR.js是一款融合了 artoolkit、three.js、WebGL 和 WebRTC 等技術的工具。

先說優點:

AR.js 使用了 A-Frame (基於 Three.js) 以及 JSARTookit5,而這兩個技術主要皆是利用 WebGL 為主,因此大多現行的瀏覽器都能直接支援,不需要特殊的 API。這大概也是為何 AR.js 能在 GitHub 上擁有一萬多顆星星,遠勝過上列其他套件的原因。

TechBridge 技術共筆部落格

缺點:

AR.js雖然快速好用,但也不是萬能的目前只能支援以Marker定位的方式運行webAR,即是需要在鏡頭內放置一個設定好的 Marker圖片讓其辨識。如果想要以偵測平面或其他非Mark的方式運行webAR就必須研究WebXR Device API

應用AR.js

首先,AR.js有提供了一個專門製作Marker的工具AR.js Marker Training,在這個網頁可以製作自己想要的Marker圖片,製作完成後點選Download Marker會給你一個副檔名為patt的Marker。

接下來準備想要呈現的3D模型,可以到 Poly 或是 sketchfab 下載 gltf 格式的 3D 模型。

最後,進入AR.js的程式部分,Coding部分很簡單,只有幾行的html:

最先的兩段先匯入Libraries:

<script src="https://aframe.io/releases/0.9.2/aframe.min.js"></script>
<script src="https://cdn.rawgit.com/jeromeetienne/AR.js/1.7.5/aframe/build/aframe-ar.js"></script>

在 <a-scene /> 中,我們指定一個 attribute arjs,並且設定 sourceType 為 webcam,相關 attribute 設定其實來自 artoolkit system,有需要可以到 GitHub 的列表查看。

接著我們透過 <a-marker /> 放入我們製作的 marker,副檔名為 .patt,這邊的 type attribute,如果你是單純用 barcode 的話,可以設為 type=barcode,但若是客製化的 marker,就要設為 type=pattern

最後在 <a-entity /> 上頭設定我們想要呈現的 AR 3D Model,gltf-model attribute 設定模型的路徑,再透過 position 與 rotation 來調整你的模型出現在鏡頭的位置。


資料來源:https://z0935323866.medium.com/%E5%88%A9%E7%94%A8ar-js%E8%A3%BD%E4%BD%9Cwebar-3479abb5f62b 


Example

https://sharebyboss.github.io/test_arjs/


沒有留言: