Posts tagged ·

AR

·...

FLARToolKit 2.5.3 : 버전업 정보

7 comments

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%로 패턴을 생성하는 과정을 확인해 보자.

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

플래시 개발자가 누군지 아는 사람 코멘트 달아주세요~ ^^

FLARToolKit에서 Metasequoia 파일 로드하기.

no comments

mqo 파일에 관련해서 이전 포스트에서 잠시 다루었었는데,
파일을 로드하는 클래스가 있다는걸 뒤늦게 알았다.

Metasequoia class

위에서 클래스를 받을 수 있고, package 경로를 살펴보면 어디에 파일을 두면 되는지 알것이다.
하지만 사용함에 있어 알아야 할 사항이 아래와 같이 몇가지 있다.

  • Papervision3D에서 메타세코이아 파일 (. mqo)을 로드하는 파일입니다.
  • 자작 모형을 쉽게 Web에 표시하고자 하는 사람들을 위한 것.
  • 텍스처는 JPEG와 PNG가 무난합니다.
  • 1000개의 폴리곤 정도가 무난합니다. 10만개를 초과하면 읽어 들일는데 시간이 걸리고, 무겁다.

1000개의 폴리곤이라고 나와있는데,
맥스나 기타 3D 툴에서 사용되는 용어로 “한 조각 입체 덩어리?”라고 말할 수 있다.

기본적으로 dae 파일 같은 경우도 위와 크게 다르지 않아 보인다.
용량으로는 2~300k 가 그렇저렇 괜찮고,
500k 이상되면 무겁거나 로딩 속도로 인하여 화면의 멈춤 현상이 잠시 일어난다.

현재 지속적으로 체크하는 중이지만,
FLARToolKit 2.5.2 버전에서는 속도 및 퍼포먼스가 좋아졌지만 여전히 숙제이다.

현재 FLArToolKit은 2.5.3 버전이 최신이다.

[FLAR] Fire Shape – Online Release.

no comments

marker download : Marker Image

이전의 포스트의 동영상 처럼 위의 마커를 다운로드하여 웹캠에 비추면 되고,
2D 기반이므로 정면을 향하게 마커를 인식시키면 된다.

모양 변환 하기.

키보드 이벤트

0:원, 1:하트, 2:네잎클로버, 3:둥근삼각형, 4:스프링, 5:별, 6:크라운

제스처 이벤트 : 마커를 일순간 인식을 못하게 처리.

자동으로 위 키보드 이벤트의 값이 증가되어 처리된다.