web端開發增強現實應用

在前端開發中,工程師常常這樣調侃“一入前端深似海”。確實,前端的應用面十分廣,知識點比較零碎,學習範圍也比較大,當然,實現的功能也更加全面。所以對於當下十分火熱的AR,運用前端技術也可以輕鬆的實現。web 平臺在AR,SLAM或跟蹤的技術應用上將會越來越普及。

web端開發增強現實應用

今天我們來講解如何運用JSARToolKit庫與WebRTC 的getUserMedia API,開發web 端的AR 應用。

ps:

1.部分整理翻譯於:https://www.html5rocks.com/zh/tutorials/webgl/jsartoolkit_webrtc/

2.大家也可以參考下之前的Web AR 開發指南:教程鏈接

預覽效果:

web端開發增強現實應用

所需識別圖:

實現思路:

1.設置JSARToolKit

2.使用getUserMedia訪問網絡攝像頭

3.檢測標記

4.矩陣映射

關於JSARToolKit

JSARToolkit是一個從FLARToolkit(Flash)轉換的JavaScript庫,結合Html5 與 canvas 來實現網頁端的AR 效果。

web端開發增強現實應用

項目地址:https://github.com/kig/JSARToolKit

對於JSARToolKit,比較重要的是navigator.getUserMedia() 方法,它用於訪問攝像頭,傳遞一個可以使用html5 <video>標籤顯示的視頻流.但是JSARToolKit需要單個幀來檢測標記。所以首先在畫布上逐幀繪製視頻幀,並使得ToolKitcanvas.changed = true。JSARToolKit通過使用光柵化來查找每個幀並搜索標記然後計算標記位置。得到的矩陣位置然後繪製模型即可(JSARToolKit是對canvas元素進行操作,當你將畫布傳遞給JSARToolKit進行分析時,JSARToolKit將返回在圖像中找到的AR標記列表和相應的轉換矩陣。要在標記之上繪製一個3D對象,需要將位置信息傳遞給任何的一個3D引擎即可進行繪製操作)。

web端開發增強現實應用

我們對JSARToolKit進行設置,第一步是創建canvas對象,攝像機參數對象和檢測對象。

varraster=newNyARRgbRaster_Canvas2D(canvas);

//設置攝像機參數

var param=newFLARParam(320,240);

//FLARMultiIdMarkerDetector是用於標記檢測的實際引擎

var detector=newFLARMultiIdMarkerDetector(param,120);

//在持續模式下,可以跟蹤多個幀的標記。

detector.setContinueMode(true);

param.copyCameraMatrix(display.camera.perspectiveMatrix,10,10000);

使用getUserMedia訪問網絡攝像頭

接下來,創建一個通過WebRTC API獲取網絡攝像頭視頻的視頻元素。對於預錄製的視頻,只需將視頻的源屬性設置為視頻URL。

|

web端開發增強現實應用

檢測標記

一旦我們檢測器運行ok,我們就可以開始給它進行圖像檢測AR矩陣。首先將圖像繪製到畫布上,然後運行檢測器。檢測器將返回在圖像中找到的標記數。

//將準備好的視頻繪製到canvas上,縮放到320x240。

canvas.getContext(&apos;2d&apos;).drawImage(video,0,0,320,240);

//底層canvas已更改。

canvas.changed=true;

varmarkerCount=detector.detectMarkerLite(raster,threshold);

最後一步是迭代檢測到的標記並獲得它們的轉換矩陣。

web端開發增強現實應用

矩陣映射

將JSARToolKit矩陣複製到glMatrix矩陣.(PS:要將庫與另一個庫(如Three.js)一起使用,還需要編寫一個將ARToolKit矩陣轉換為庫的矩陣格式的函數。還需要引入FLARParam.copyCameraMatrix方法。copyCameraMatrix方法將FLARParam透視矩陣寫入glMatrix樣式矩陣。)

web端開發增強現實應用

如若使用X3DMO也可以這樣來操作,大同小異。首先創建X3DOM上下文將一個3DOM標籤添加到index.html中,創建一個場景,並添加一個帶有id的空的。然後在要顯示的模型中添加一個節點。

web端開發增強現實應用

然後在JSARToolKit初始化中進行一些小的更改以便獲得權限。修改X3DOM viewfrustum中指定的剪切平面和當前的透視矩陣。X3DOM運行時API提供代理對象讀取和修改運行時參數。運行時連接到每個X3D元素,比如如下的矩陣示例:

web端開發增強現實應用

然後 處理矩陣:

web端開發增強現實應用

最後,我們就可以繪製模型了,將其放在矩陣中,並將其設置為MatrixTransform節點的屬性值。

web端開發增強現實應用

然後你就會實現類似這樣的效果:

web端開發增強現實應用

以上兩種方法大同小異,大家可以比較著使用,接下來給大家分享一些web AR 的開發資源:

1.JS-ARUCO(ARUCO是基於OpenCV的增強現實應用程序的輕便庫,現在已被移植到純JavaScript):http://code.google.com/p/js-aruco/

2.HTML5-AR:https://github.com/dontcallmedom/html5-augmented-reality

該演示結合了地理位置,攝像機訪問,提供一個擴展現實的Web應用程序,覆蓋了實時視頻流上的幾個興趣點。

3.WebRTC Head Tracking:https://dev.opera.com/articles/head-tracking-with-webrtc/

使用WebRTC,Media Capture和Streams在JavaScript中創建頭部跟蹤。

4.HTML5 Face Detection:http://wesbos.com/html5-video-face-detection-canvas-javascript/

使用HTML5,Canvas和Javascript在你的臉上放置“Groucho Marx”風格的眼鏡,鼻子和鬍子。

AR醬原創,轉載務必註明

微信號AR醬(ARchan_TT)

AR醬官網:www.arjiang.com

相關推薦

推薦中...