摘要: 近來(lái)增強(qiáng)現(xiàn)實(shí)技術(shù)在數(shù)字交互技術(shù)應(yīng)用中得到了足夠的重視,并且正在以各種方式進(jìn)行開(kāi)發(fā)應(yīng)用。該文將探討如何建立起一個(gè)開(kāi)發(fā)環(huán)境,用基于FLARToolKit開(kāi)源類(lèi)庫(kù)來(lái)開(kāi)發(fā)虛擬增強(qiáng)技術(shù)內(nèi)容的AS3.0交互程序。
關(guān)鍵詞:增強(qiáng)現(xiàn)實(shí);Flash;FLARToolKit
中圖分類(lèi)號(hào):TP37 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):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
增強(qiáng)現(xiàn)實(shí)技術(shù)(Augmented Reality,簡(jiǎn)稱(chēng)AR)是一種將虛擬世界疊加在現(xiàn)實(shí)世界上,并融合成一體的技術(shù),講得更透徹一些,就是一種能夠在現(xiàn)實(shí)世界里重新改寫(xiě)視頻信息的技術(shù)。虛擬增強(qiáng)技術(shù)為您提供了一種互動(dòng)的,類(lèi)似實(shí)物演示的數(shù)字實(shí)體。
盡管到了2009年,AR技術(shù)看起來(lái)還是有些遙不可及,但有些應(yīng)用程序已經(jīng)開(kāi)始嘗試實(shí)現(xiàn)。實(shí)現(xiàn)這項(xiàng)技術(shù)的基本思路是:你可以使用一個(gè)攝像頭追蹤一個(gè)可識(shí)別的方形圖案并計(jì)算出坐標(biāo)系偏移和旋轉(zhuǎn)角度,再把虛擬世界的三維坐標(biāo)系匹配到現(xiàn)實(shí)世界中來(lái)。現(xiàn)在業(yè)界在應(yīng)用該技術(shù)時(shí)主要借助ARToolKit開(kāi)源庫(kù)。ARToolKit是AR應(yīng)用程序掛載時(shí)用到的C語(yǔ)言程序庫(kù)。使用了ARToolKit后,可以將畫(huà)在紙上的圖案用攝像機(jī)讀取后簡(jiǎn)單方便地轉(zhuǎn)換成邊框透明的3D虛擬物體。原本是屬于非常高難度的技術(shù),但通過(guò)這個(gè)開(kāi)源庫(kù)可以把實(shí)現(xiàn)該技術(shù)的最主要的技術(shù)難點(diǎn)都承擔(dān)下來(lái)了。
但多年來(lái),AR技術(shù)在Flash的應(yīng)用中卻沒(méi)有任何進(jìn)展,直到一位日本人改進(jìn)了ARToolKit算法將其重寫(xiě)并改名為NyARToolKit,而另一位日本人saqoosha 在此基礎(chǔ)上繼續(xù)將其改寫(xiě)成ActionScript3.0 的類(lèi)庫(kù)并整合進(jìn)Papervision3D技術(shù),于是基于Actionscript3.0的開(kāi)源類(lèi)庫(kù)FLARToolKit誕生了,至此,在flash as 3.0中我們可以也可以自如地使用增強(qiáng)虛擬這一最新技術(shù)了。
下面我將說(shuō)明如何運(yùn)用FLARToolKit和FLARManager來(lái)實(shí)現(xiàn)虛擬增強(qiáng)技術(shù)(FLARManager是一個(gè)針對(duì)FLARToolkit開(kāi)發(fā)的類(lèi)庫(kù),主要用于管理多個(gè)識(shí)別圖形)。主要框架如下:
第一步:初始化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添加偵聽(tīng)
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)聽(tīng)事件,并編寫(xiě)事件處理程序
//監(jiān)聽(tīng)事件,可自定義相應(yīng)處理函數(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開(kāi)發(fā)虛擬增強(qiáng)項(xiàng)目的好處是可以跨系統(tǒng)跨平臺(tái)運(yùn)行。這里只給出了程序架構(gòu),但有了這個(gè)基本框架,只要在事件處理程序中做出相應(yīng)的處理,就可以很方便地實(shí)現(xiàn)現(xiàn)實(shí)增強(qiáng)技術(shù)。
參考文獻(xiàn):
[1] 朱淼良,姚遠(yuǎn),蔣云良.增強(qiáng)現(xiàn)實(shí)綜述[J].中國(guó)圖象圖形學(xué)報(bào):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.