2.5.3 (2010-May-15)
* Modify FLARMultiMarkerDetector
+ Corresponds to markerPercentWidth, markerPercentHeight
* Modify FLARSingleMarkerDetector
+ Delete debug trace()
* Update : NyARToolKit AS3(v2.5.2 alpha to v2.5.2)
* Add Wide display(16:9) sample
FLARMultiMarkerDetector 클래스에 추가된 markerPercentWidth, markerPercentHeight 에 대해서 알아보자. 먼저, 마커 코드(FLARCode 클래스)의 기본 넓이 값을 확인해 보면 아래 처럼 width=50, height=50 인것을 알 수 있다.
/** * * @param i_width 幅方向の分割数 * @param i_height 高さ方向の分割数 * @param i_markerPercentWidth マーカ全体(本体+枠)における、マーカ本体部分の割合(幅) * @param i_markerPercentHeight マーカ全体(本体+枠)における、マーカ本体部分の割合(高さ) */ public function FLARCode(i_width:int, i_height:int,i_markerPercentWidth:uint = 50, i_markerPercentHeight:uint = 50) { super(i_width, i_height); this._markerPercentWidth = i_markerPercentWidth; this._markerPercentHeight = i_markerPercentHeight; }
이것은 마커 생성 시 테두리 비율값을 의미하며,
더 넓은 영역으로 마커 코드를 생성하여 표현 할 수 있게 되었다.
이해를 돕기 위하여 50%, 70%로 패턴을 생성하는 과정을 확인해 보자.
그럼 코드를 통해 버전별로 어떠한 계산 방식으로 테두리 비율을 체크하는지 살펴보자.
FLARToolKit 2.5.2 : FLARMultiMarkerDetector.as
/** * 複数のマーカーを検出し、最も一致するARCodeをi_codeから検索するオブジェクトを作ります。 * * @param i_param * カメラパラメータを指定します。 * @param i_code * 検出するマーカーのARCode配列を指定します。 * 配列要素のインデックス番号が、そのままgetARCodeIndex関数で得られるARCodeインデックスになります。 * 例えば、要素[1]のARCodeに一致したマーカーである場合は、getARCodeIndexは1を返します。 * @param i_marker_width * i_codeのマーカーサイズをミリメートルで指定した配列を指定します。 先頭からi_number_of_code個の要素には、有効な値を指定する必要があります。 * @param i_number_of_code * i_codeに含まれる、ARCodeの数を指定します。 * @throws NyARException */ public function FLARMultiMarkerDetector(i_param:FLARParam, i_code:Vector., i_marker_width:Vector., i_number_of_code:int) { initInstance(i_param,i_code,i_marker_width,i_number_of_code); return; } protected function initInstance( i_ref_param:FLARParam, i_ref_code:Vector., i_marker_width:Vector., i_number_of_code:int):void { var scr_size:NyARIntSize=i_ref_param.getScreenSize(); // 解析オブジェクトを作る var cw:int = i_ref_code[0].getWidth(); var ch:int = i_ref_code[0].getHeight(); // 枠線の割合(ARToolKit標準と同じなら、25 -> 1.0系と数値の扱いが異なるので注意!) var markerWidthByDec:Number = 25; var markerHeightByDec:Number = 25; // ... }
FLARToolKit 2.5.3 : FLARMultiMarkerDetector.as
/** * 複数のマーカーを検出し、最も一致するARCodeをi_codeから検索するオブジェクトを作ります。 * * @param i_param * カメラパラメータを指定します。 * @param i_code * 検出するマーカーのARCode配列を指定します。 * 配列要素のインデックス番号が、そのままgetARCodeIndex関数で得られるARCodeインデックスになります。 * 例えば、要素[1]のARCodeに一致したマーカーである場合は、getARCodeIndexは1を返します。 * @param i_marker_width * i_codeのマーカーサイズをミリメートルで指定した配列を指定します。 先頭からi_number_of_code個の要素には、有効な値を指定する必要があります。 * @param i_number_of_code * i_codeに含まれる、ARCodeの数を指定します。 * @throws NyARException */ public function FLARMultiMarkerDetector(i_param:FLARParam, i_code:Vector.<FLARCode>, i_marker_width:Vector.<Number>, i_number_of_code:int) { initInstance(i_param,i_code,i_marker_width,i_number_of_code); return; } protected function initInstance( i_ref_param:FLARParam, i_ref_code:Vector.<FLARCode>, i_marker_width:Vector.<Number>, i_number_of_code:int):void { var scr_size:NyARIntSize=i_ref_param.getScreenSize(); // @todo この部分にマーカーの幅や高さ、枠線の割合がすべて一致するかのチェックを入れる // もしくは、FLARCodeの生成時に強制的に同一の数値を入力する事 // 解析オブジェクトを作る var cw:int = i_ref_code[0].getWidth(); var ch:int = i_ref_code[0].getHeight(); // 枠線の割合(ARToolKit標準と同じなら、25 -> 1.0系と数値の扱いが異なるので注意!) var markerWidthByDec:Number = (100 - i_ref_code[0].markerPercentWidth) / 2; var markerHeightByDec:Number = (100 - i_ref_code[0].markerPercentHeight) / 2; // ... }
버전별 클래스 하단의 두줄을 비교해 보면 알겠지만,
FLARToolKit 2.5.3에선 마커의 테두리 비율을 코더가 조절하여 사용할 수 있게 되었다.
그리고, 와이드형 샘플 코드가 추가 되었다. 아래 이미지는 16×9 카메라 파라미터를 사용한 것이다.
현재 5개의 마커로 2개의 animation 3D dae 파일과 1개의 3D dae 파일, 2개의 이미지로 패키지화 하여 퍼포먼스를 체크해 봤는데, 무겁다는 느낌을 받고 있다.
물론, dae 파일은 최적화가 되어있지만 많은 양의 마커 인식과 표현에는 한계가 있기 마련이다.
실험적으로 퍼포먼스 테스트를 해본 결과다.
아래 이미지가 5개의 마커를 사용한 패키지형 콘텐츠이다.

요즘들어 부쩍? 국내에 재미난 Flash Augmented Reality 프로모션 사이트들이 등장하고 있다.
관심있는 분들은 아래 사이트에 가서 마커를 프린트하여 게임 이벤트에 참여해 보길 바란다.
가입을 해야 하는데, 모르는 사람은 개인 정보 누출을 염려할 듯 하지만 그 만한 가치가 있다. ^^
Welcome to HYUNDAI, Official 2010 FIFA World Cup™ Partner
플래시 개발자가 누군지 아는 사람 코멘트 달아주세요~ ^^


















