ふと気が向いたので、FLARToolKit用のIDマーカーについて解説する。
入手方法
FLARToolKitの最新版をSubversionを使って手に入れる。
- org.libspark.flartoolkit.detector.idmarker.FLARSingleIdMarkerDetector
が混じってたら成功。
使い方
全コードについてはこちらを参照。
使い方は、普通のDetectorと変わらない。
- this._detector = new FLARSingleIdMarkerDetector(param, 80);
- this._detector.setContinueMode(true);
こんな感じ。引数は、カメラパラメータFLARParamと、幅。
で、認識の時はこんな感じ。
- var detected:Boolean = false;
- try {
- detected = _detector.detectMarkerLite(_raster, 80);
- } catch (e:Error) { trace(e); }
普通の単一マーカ認識と一緒です。
で、見つかった場合はこう。getIdMarkerDataメソッドで、
見つかったIDマーカーの情報が取れる。
で、FLARIdMarkerData #getPacketDataで、パケット番号に対応するパケット値が取れる。
それを連結して数値にしている所。
var id:FLARIdMarkerData = _detector.getIdMarkerData();
currId=0;
//最大4バイト繋げて1個のint値に変換
for (var i:int = 0; i < id.packetLength; i++ ) {
currId = (currId << 8) | id.getPacketData(i); trace("id[", i, "]=", id.getPacketData(i));
}
_textdata.text = "" + currId;
[/as]
FLARIdMarkerDataには、他にも色々情報があるので、使っていくと便利。
例えば、modelプロパティで、IDマーカーのモデルが取れる。
2か3になるはず。
こんな感じ。これで、IDの値によって出すモデルを変えたり、色々出来るようになる。
試しに、公開していたIDマーカーのサンプルを改造してみた。
モデル3の場合、テキストの色がパケットをそれぞれ
パケット1→赤、パケット2→緑、パケット3→青
で、RGBを作るようにしてみた。
マーカーはここで作れる。
バグもなくなって、モデル3もばっちりです。