Alchemy版 FLARToolKit
2週間程前から、AdobeさんのAlchemy(C++とかのコードをAVM上で動かすフレームワーク)を使ってFLARToolKitを高速化できないか研究をしていたわけですが、やっと動いたので公開します。
モノとしては、NyARToolKitCPP(NyARToolKitのC++版)をAlchemyでコンパイルして作ったswcファイルを、ActionScriptからFLARToolKitと同じように使うためのものです。AlchemyとピュアなFlashを行き来するので、若干変なクセがありますが、まあ普通に使えるかな。速度的には予想より1桁早かった。
サンプル実行ファイル
http://nyatla.jp/tmp/aM_flar/SimpleCube.swf
※64bit版XPのFirefoxでカメラを接続しないと、ブラウザが即死する不具合があるようです。AlchemyMasterのバグではないと思うんだけども・・・。
ソースコード(Alchemy版 FLARToolKit)
Spark projectのFLARToolKit/blanches/nyatlaにあります。コンパイル済みのnyratoolkit.swcと、NyARToolKitCPP内にあるActionScript3に必要なコードは全部入ってるので、Alchemy本体をいじらないならこれだけでOK。
http://www.libspark.org/browser/as3/FLARToolKit/branches/nyatla
ソースコード(NyARToolKitCPP)
NyARToolKitCPPの一部なので、sorceforge.jpにあります。Alchemy本体のコードとか、AlchemyMasterのソースコード類はこっち。
http://sourceforge.jp/projects/nyartoolkit/svn/view/NyARToolkitCPP/?root=nyartoolkit
FlashDeveloperからのコンパイルの手順
ちょっと面倒ですが、FLARToolKitを使ったことがあればできると思います。
Default projectを作って、FLARToolKit内の以下のパスをsource-pathへ追加してください。
- nyatla\src
- nyatla\sample
- nyatla\extlib\NyARToolkitCPP\forAlchemy\AlchemyMaster\as3
- nyatla\extlib\NyARToolkitCPP\forAlchemy\NyARToolkitAS3\src\as3
あとコレも忘れずに。
- Papervision3D_2.0.883
次に、Library pathに、nyartoolkit.swcを追加します。
- nyatla\extlib\NyARToolkitCPP\forAlchemy\NyARToolkitAS3\lib\nyartoolkit.swc
コンパイルの設定はこれでOK。もしFlex3でコンパイルするなら、同じように設定してあげてください。
エントリポイントは、nyatla\sample\jp\nyatla\example\aM_flar\SimpleCube.asにありますので、ここにAlways compileのチェックを入れて、実行してみてください。
いいわけ
基盤にしたNyARToolKitCPPのバージョンが2.0.0相当と古く、またFLARToolKitの拡張部分を全然実装してないので、現行のFLARToolKit(2.2.0相当)と比較すると、機能的にはかなり劣ります。まあ、速度的には文句ないんですが。機能拡張をするとすれば、NyARToolKitCPPを2.3.0ベースにしたあとかな。と思ったり。
あともしかしたらバグが・・・あるかも。
AlchemyMasterについて
今回のプロジェクト向けに作ったツールキットです。C++のクラスライブラリを、Alchemyを中継してActionScript3側で自然に表現することができます。まあコードよりもノウハウがほとんどなんですが…。普通にAlchemyを使うと、コードが増えたり処理速度がおちたりしがちですが、AlchemyMasterのテンプレートに沿ってAPIを定義すると、(処理量的にもコード量的にも)低コストで錬金できます。
中身はC++のProxyを構築するテンプレートクラス類と、/ActinScript側でStubを実装するためのベースクラス等です。Alchemy版 FLARToolKitでは、このツールキットを経由してNyARToolKitCPPのコード(C++)とActionScript3のコードを接続しています。
#もしリクエストがあれば、アーキテクチャとかは書こうかなとか。
ライセンスはLGPLv3/FLARToolKitバインドライセンスの二種類です。FLARToolKitの商用版ライセンスをご利用の方は、FLARToolKitバインドライセンス(FLARToolKitと一緒に使う限り、FLARToolKitの一部として使用可能)をご利用ください。
参考
色々参考にしたページのご紹介。
ありがとうございます。
FLARToolKitについてはこちら
- SparkProject: http://www.libspark.org/wiki/saqoosha/FLARToolKit
- タロタローグ: http://blog.tarotaro.org/
Alchemyについてはこちら