摘要: 近來增強現(xiàn)實技術在數(shù)字交互技術應用中得到了足夠的重視,并且正在以各種方式進行開發(fā)應用。該文將探討如何建立起一個開發(fā)環(huán)境,用基于FLARToolKit開源類庫來開發(fā)虛擬增強技術內(nèi)容的AS3.0交互程序。
關鍵詞:增強現(xiàn)實;Flash;FLARToolKit
中圖分類號:TP37 文獻標識碼:A文章編號:1009-3044(2009)33-9253-02
Research on Augmented Reality Technique and Its Realization on Flash
CHEN Jue
(Suzhou Art Design Technology Institute, Suzhou 215014, China)
Abstract: The most recently received much attention in the augmented reality (Augmented Reality) with digital interactive content that is being developed in various ways.In this paper, the built environment to overcome the limitations of using Web-based augmented reality FLARToolkit provides an overview of how to develop AS3.0 interactive program.
Key words: augmented reality; flash; FLARToolKit
增強現(xiàn)實技術(Augmented Reality,簡稱AR)是一種將虛擬世界疊加在現(xiàn)實世界上,并融合成一體的技術,講得更透徹一些,就是一種能夠在現(xiàn)實世界里重新改寫視頻信息的技術。虛擬增強技術為您提供了一種互動的,類似實物演示的數(shù)字實體。
盡管到了2009年,AR技術看起來還是有些遙不可及,但有些應用程序已經(jīng)開始嘗試實現(xiàn)。實現(xiàn)這項技術的基本思路是:你可以使用一個攝像頭追蹤一個可識別的方形圖案并計算出坐標系偏移和旋轉(zhuǎn)角度,再把虛擬世界的三維坐標系匹配到現(xiàn)實世界中來。現(xiàn)在業(yè)界在應用該技術時主要借助ARToolKit開源庫。ARToolKit是AR應用程序掛載時用到的C語言程序庫。使用了ARToolKit后,可以將畫在紙上的圖案用攝像機讀取后簡單方便地轉(zhuǎn)換成邊框透明的3D虛擬物體。原本是屬于非常高難度的技術,但通過這個開源庫可以把實現(xiàn)該技術的最主要的技術難點都承擔下來了。
但多年來,AR技術在Flash的應用中卻沒有任何進展,直到一位日本人改進了ARToolKit算法將其重寫并改名為NyARToolKit,而另一位日本人saqoosha 在此基礎上繼續(xù)將其改寫成ActionScript3.0 的類庫并整合進Papervision3D技術,于是基于Actionscript3.0的開源類庫FLARToolKit誕生了,至此,在flash as 3.0中我們可以也可以自如地使用增強虛擬這一最新技術了。
下面我將說明如何運用FLARToolKit和FLARManager來實現(xiàn)虛擬增強技術(FLARManager是一個針對FLARToolkit開發(fā)的類庫,主要用于管理多個識別圖形)。主要框架如下:
第一步:初始化FLARToolkit使用的PV3D環(huán)境
private function initPV3D():void{
this.scene3D = new Scene3D();
this.camera3D = new FLARCamera3D(_cameraParams);
this.viewport3D = new Viewport3D(App.STAGE_WIDTH,App.STAGE_HEIGHT);
addChild(_viewport3D);
this.render = new LazyRenderEngine(_scene3D, _camera3D,_viewport3D);}
第二步:初始化FLARManager
private function initFLARManager():void{
//初始化FLARManager
this.flarManager = new FLARManager(App.CAMERA_PARAMS_PATH, _patterns);
this.addChild(Sprite(this.flarManager.flarSource));
//為FLARManager添加偵聽
this.flarManager.addEventListener(FLARMarkerEvent.MARKER_ADDED,this.onMarkerAdded);
this.flarManager.addEventListener(FLARMarkerEvent.MARKER_UPDATED,this.onMarkerUpdated);
this.flarManager.addEventListener(FLARMarkerEvent.MARKER_REMOVED,this.onMarkerRemoved);
this.flarManager.addEventListener(Event.INIT, this.onFlarManagerInited);}
第三步:創(chuàng)建FLARManager監(jiān)聽事件,并編寫事件處理程序
//監(jiān)聽事件,可自定義相應處理函數(shù)
private function onMarkerAdded (evt:FLARMarkerEvent) :void {
this.myObjects.addMarker(evt.marker); }
private function onMarkerUpdated (evt:FLARMarkerEvent) :void {
this.myObjects.updateMarker(evt.marker);}
private function onMarkerRemoved (evt:FLARMarkerEvent) :void {
this.myObjects.removeMarker(evt.marker);}
總結(jié):使用AS3開發(fā)虛擬增強項目的好處是可以跨系統(tǒng)跨平臺運行。這里只給出了程序架構(gòu),但有了這個基本框架,只要在事件處理程序中做出相應的處理,就可以很方便地實現(xiàn)現(xiàn)實增強技術。
參考文獻:
[1] 朱淼良,姚遠,蔣云良.增強現(xiàn)實綜述[J].中國圖象圖形學報:A輯,2004,9(7).
[2] Ronald T,Bailot Y. Recent advances in augmented reality[J].IEEE Computer Graphics and Applications,2001,21(6):34-37.