FLARToolKitを使ったAR系Flashの作り方

第3回 マーカーの位置や回転,向きなどを取り出す

この記事を読むのに必要な時間:およそ 3 分

マーカー座標系からグローバル座標系への変換

最後に,マーカーから"ぽーん"と飛び出てくる動きを作ってみましょう。"ぽーん"と手前に飛び出てくるということは,マーカー手前方向にある程度いった場所のグローバル座標がわかればいいわけですね。

gihyo3_3a.asを見てください。以下のように求めます。

リスト5 gihyo3_3a.as(53~54行目)

var pos:Number3D = new Number3D(0, 0, 150);
Matrix3D.multiplyVector3x3(this._baseNode.transform, pos);

これにより,マーカー手前(+Z)方向に150進んだ場所のグローバル座標がposに入ります。このコードは,マーカー座標系からグローバル座標系に変換するのにいつでも使えます。あとは,さきほどと同じようにTweenerを使ってアニメーションを設定します。

図4 gihyo3_3a.as(gihyo3_3a.fla)のデモ


Flying Letters 3 from Saqoosha on Vimeo.

今回のサンプルをちょっと応用すると,以下のようなアニメーションもつくれてしまいます(gihyo3_3b.as)⁠

図5 gihyo3_3b.as(gihyo3_3b.fla)のデモ


Flying Letters 4 from Saqoosha on Vimeo.

この動きは,文字生成時にその時点のマーカーの向きから移動方向とスピードを計算して,あとは毎フレーム,重力を加えながら移動させるだけで表現されています。

特定のフレームでのみマーカーの位置を使う

今回のサンプルすべての共通点は,毎フレームではなく特定のフレームでのみ,マーカーの位置を使うということでした。これを応用すると前回のARラジコン的サンプルがもうすこし,いい感じになります。以下の動画を見てみてください。

図5 前回のARラジコン的サンプルをブラッシュアップ


Focus with FLAR 2 from Saqoosha on Vimeo.

これには,まず最初にマーカーを使って地面となる平面(机)の位置を決めます。決めたらマーカーの認識は終了です。これで_baseNodeはきちんと机の平面と同じ向きになっています。あとは,今までと同じように_baseNodeにaddChildして,いろいろオブジェクトを動かしたりします。

カメラが移動しない限りは_baseNodeの位置もアップデートする必要がないため,こういう使い方ができるというわけです。マーカーが見えないのですごく自然だし,しかも,マーカー認識処理をしなくていいので,普通のPapervision3D並にいろいろオブジェクトが出せるという,まさに一石二鳥ですね!

次回予告

次回,最終回は,最近公開されてきたFLARToolKitを使ったコンテンツがどのように作られているのか,ソースコードが配布されているものについてはソースコードを参照しながら解説してみたいと思います。

FLARToolKit Google Groupできました

これまでもSpark project内に情報交換のためのフォーラムを設置していたのですが,よりグローバルにコミュニケーションがとれるようにGoogle GroupにFLARToolKit userzグループを設置し移行しました。

海外からの参加者が多く現在は英語でのやりとりがほとんどですが,特に英語に限定しているわけではないので,日本のみなさんも是非参加してみてください。FLARToolKitの最新の動向がつかめると思います。

著者プロフィール

さくーしゃ

大阪のKatamari Inc.っていうWeb屋でFlashやってます。Saqoosha.netでブログ書いてます。新しもの好きで飽きっぽいGeek。

コメント

コメントの記入