2010年11月8日月曜日

FLARToolKit のサンプルを AIR for android に

AIR for android で、FLARToolKit  は動作せんの?といわれたので早速作ってみた。
まずは動画を見て欲しい。



HTC Desire、android OS 2.2 で動作させているのですが、まぁまぁかなと。

とりあえず、HTC Desire とか、N1とか、Galaxy S とか持っている人は、AIR for android をインストール後に下記の場所からパッケージダウンロードしてインストールしてみると良いカモかも?

FLARTK_Sample.apk

開発をやりたい人は fxp ZIP にしておいたのでそれを持っていってください。
ライセンスはGPLですので注意してください。

FLARTK_Sample-v2.5.4 Alpha 1.fxp

FLARToolKit_MobileSample_2.5.1-1.zip
(v2.5.1 になっていますが、中身は、v2.5.4ベースです)

有料で配布しようが無償で配布しようがGPLだからコードを公開してください。
ソースコードを公開したく無い場合は、FLARToolKitの商用ライセンスを買ってください。

追記(2011-6-23)
バイナリを Flash Builder 4.5.1 を利用するものに差替えました。
ターゲットを変えれば、iOSにも対応します。

2010年9月12日日曜日

FLARManager ver1.0系の説明書

前回(Sixwish.jp Blog: FLARManager チュートリアル翻訳)の翻訳以降、ほとんど手を入れていなかったのですが、FLARManager ver1.0がリリースされたので、再度調整したものを公開しました。

取り敢えず二箇所で公開されています。

FLARManger
http://sixwish.jp/FLARManager/

FLARManger support library
http://artoolworks.jp/FLARManager/

もう少し書き足したいのですが、それについてはおいおい継ぎ足す……予定?

ちなみに、FLARManagerですが、NyIDマーカーへの対応とかを予定しているとかとか。
恐らく、Flare*Trackerとの関係が詰め切れればでるんじゃないかなーと。

2010年9月6日月曜日

PV3D : QuadrantRenderEngineのメモリリーク

FLARToolKitでは、Papervision3Dに入っているレンダリングエンジンのうち、LazyRenderEngineを使っているのですが、とある理由から、QuadrantRenderEngineを使ってやりたいという話になり、組み込んでみたわけですが……何気にメモリリークしている事が判明orz

使っていると、延々とメモリを食い続けるというね……
正直PV3Dから原因を突き止めるには時間が無く、別の手段も検討しつつウェブを巡っていたのですが、公式フォーラムに原因が載っていた……ついでに解決策も……誰か反映しておいてくれよ……マジで。

ということで、直し方を説明。
おかしいのは、org.papervision3d.materialsパッケージ内の BitmapMaterial.as です。

修正箇所は下記。

まずは、59行目。

-- 編集前 --
59 : public var uvMatrices:Dictionary = new Dictionary();
-- 編集後 --
59 : public var uvMatrices:Dictionary = new Dictionary(true);

続いて 97行目付近。

-- 編集前 --
97 : public function resetMapping():void
98 : {
99 :     uvMatrices = new Dictionary();
100: }
-- 編集後 --
97 : public function resetMapping():void
98 : {
99 :     for ( var obj:* in uvMatrices ) {
100:         uvMatrices[obj] = null;
101:     }
102: }

最後が 733行目付近。

-- 編集前 --
733: public function resetUVS():void
734: {
735:     uvMatrices = new Dictionary();
736: }
-- 編集後 --
735: public function resetUVS():void
736: {
737:     for ( var obj:* in uvMatrices ) {
738:         uvMatrices[obj] = null;
739:     }
740: }

このあたりを直せばいいらしい。

FLARToolKit内に含まれるPV3Dにはこの修正を入れておいたけれど……本家で直してパッケージ出して欲しいわ……

2010年7月15日木曜日

FLARToolKitで実装する白黒以外のマーカーARのやりかた

例えば、下図の様に青色背景の中に、マーカーがある状態だとします。

FLARToolKitのサンプルを使って、マーカーを認識させようとすると下記のようになります。


FLARToolKitで解析している画像を表示していますが、マーカーの部分が真っ白け……つまり、青い部分のほとんどは黒色として扱われてしまい、マーカーの形が浮かび上がらない状態になっています。

そこで、Adobe Pixel Bender Toolkit を使ってフィルターを作成します。

実行すると、白黒になるようにフィルターを書きます。
書き終わったら、[File]メニューにある[Export Kernel File for Flash Player]で、Flexで使えるようにします。

続いて組み込み。
Filterである .pbj ファイルをロードして、ShaderFilterを作る。
次に、通常のサンプルだと、ウェブカメラからの入力を「背景描画」と「マーカー解析」に使っているのでこれを別々に分ける……
// 背景描画
this.background = new Bitmap(new BitmapData(this.captureWidth, this.captureHeight, false, 0), PixelSnapping.AUTO, true);
this.background.width = this.canvasWidth;
this.background.height = this.canvasHeight;
this.addChild(this.background);
こんな感じになるかなと。
これは、FLARTK_Example_Single_SimpleCube_PV3D.as で言うところの、273行目辺りに追加。その直後に // setup ARToolkit というコメントがくる感じ。
背景描画は、 this.background を使うので、this.capture は、addChildしないようにする。
// キャプチャーしている内容を addChild
// this.addChild(this.capture);
ここまでできたら、MarkerDetectの処理の直前でFilterをかける……
// Marker detect
var detected:Boolean = false;
try {
    // カラーフィルター適応
    var _data:BitmapData = this.raster.getBuffer() as BitmapData;
    _data.applyFilter(_data, _data.rect, ZERO_POINT, this.extShaderFilter);
    
    detected = this.detector.detectMarkerLite(this.raster, this._threshold) && this.detector.getConfidence() > 0.000001;
} catch (e:Error) {}
これでフィルターがかかって、実行すると下記のようになると。
実験的に組み込んだだけなので、Filterを毎回やらなきゃならんのかとか、背景描画用にBitmapクラス作らなきゃならんの?とか微妙なところは多いですが、参考までに。

全体コードはもうちょっと試したら、説明ページ作って公開します。

ちなみに、FLARToolKitでやっていますが、同じことをNyARToolKitでもできますし、ARToolKitでもできる。
今回のは色フィルターだけですが、解析する前に画像処理を掛けてあれこれ処理すれば、変わったマーカーも認識させたりできるかもかも。

白黒のマーカーに飽きた方はチャレンジしてみては如何?

2010年7月4日日曜日

ARマーカーの基本

いろいろと協力してもらって、ARToolKitなどで使うマーカーについての説明記事を書きましたよーというお知らせです。

ARマーカーの基本
http://sixwish.jp/Flartoolkit/Marker/section01/

記事の大本は、株式会社エム・ソフトの中の人に書いてもらって、こちらでアレンジし直したものになります。
それにしても、自分で検証すること無く公開してしまって良いものだろうか……と。
ついでにいうと、一ヶ月くらい放置していたネタでもあったり……

それはさておき、マーカーをデザインするときに一読しておく価値がある記事になります。
一部、マーカーをどのようにして認識しているかも説明されているので、どういう事をやっているのかを知るための一助になればと思います。

FLARToolKit v2.5.x 以上を利用したGPLでの商用利用の例

FLARToolKit v2.5系も安定してから数ヶ月、ようやく利用例が出始めたかなぁという感じです。

今回紹介するのは、その中でも商用利用しつつ、GPLを選択した事例です。

amazarashi のCDのおまけのARコンテンツ
http://www.amazarashi.com/ar/index.html

Sony Musicさんのところのアーティストらしいし、有名らしいのですが……知りませんでしたorz
まぁ、基本的にマイナーなものしか聴かないし、アニソン系が多い人ですから知らなくて当然ですね。
はい。

ちなみに、ソースコードは下記のサイトにて公開されています。

bmblog
http://totoro.ws/blog/archives/2010/06/cd-17.html

公開されているものが何一つ再現できない方法での公開なので、本気で叩いてみようかと思うけれどめんどいのでパス。
ていうか、楽曲管理でうるさい人達が率先してライセンス違反てどういう事なのよ……

色々と組み合わせているようなので、参考にしたい方はソニー・ミュージックに直接問い合わせてソースコード請求してみては如何でしょうか?

ちなみに、ASIAN KUNG-FU GENERATION のマジックディスクのARコンテンツはライセンスされたものとのこと……このコンテンツのソースコードは見てみたかった……残念なのですよ

2010年6月20日日曜日

FLARToolKitの複数マーカーの利用例

かなーり前から作って欲しいとお願いしていて、一ヶ月前くらいには出来ていたのですが、いろいろと忙しくてお蔵入りになっていたので、動画にしてしてみた。



表示されているキャラクターは、NyARToolKitの作者、nyatla=にゃとら に掛けて、虎猫、ならばと、関係者をネコ化してみたというもの。書いたのは、ここの人。

実装は難しくはないけれど面倒かもしれない。
マルチマーカーのサンプルでは発見する度に表示する形式を取っているので、その部分を修正して、マーカーの情報をどこかに確保する。
確保したマーカーの情報を基に、組み合わせを判別する。
判別された組み合わせにあわせてキャラクターの動きを変える……
そういう順序で作れば良い。

面倒だったのでIDマーカーを使っていますが、普通のマーカーを使っても実装可能。
やるならば、FLARManagerを使った方が簡単に実装できると思うけれど……

まぁ、参考までに。

2010年6月10日木曜日

NyID Marker Maker

ようやく修正出来た……

NyID Marker Maker
http://sixwish.jp/AR/Marker/idMarker/

というわけで、FLARToolKitに付属するNyIDのマーカをトラッキングするサンプルで、Model 3 のものが使えるようになりましたよーと。
まぁ、NyARToolKitのNyIDマーカーのサンプルでも使えると思いますが……

すべてはパケットの並びとチェックドットの計算方法に問題があったわけで、なんでこんなに時間かかったんだろうというか、放置していてごめんなさい。
もともとバグがあったのもそうだけれど、これであってんのかという検証をろくにやらずにやってしまったのが悪かったな。

つーか、Flash Builder 4 でデバックできなくなってからやりにくくてしゃーない。
OSから入れなおして再セットアップしたいが、Windows XPのPC潰して Windows 7 つっこんだ方が良いかな……
検証環境もかねてやるか……積み残し作業が増えていくorz

2010年5月4日火曜日

FLARToolKitの説明書もどき

これ、バージョンアップする度に書き直し……は避けたいな……と思いつつ、書く事になるんだろうなと。

というわけで、ようやく書き終わったので公開。

http://sixwish.jp/Flartoolkit/

まぁ、基本的にv1.x系と変わらないので不要といえば不要なんですが、初心者向けって感じで。

FLARManagerはもう少ししたら作成を始める予定……v2.5.2に対応したバージョンになってからかなぁ
その前に一通り試さないとだけれど……
やれやれ

2010年4月8日木曜日

FLARToolKit on wonderfl

wonderflに組み込むという話のメールがきた時には、とうとうというか、ようやくか……
という感じもしたのですが、それより驚いたのは実装までの時間かも。

まぁ、それはさておき、wonderflにFLARToolKitが組み込まれましたとさ。
バージョンはFLARToolKit v1.0.0で、一つ前のstable版とも言えるものです。

せっかく組み込まれたのだから作らねば……ということでサックリ作成。

FLARToolKit_Sample_Simple_PV3D
http://wonderfl.net/code/918ac174a21f3b88801a912de1c0d1084d61af65

別件で作成したものを単に流用しただけなんですが……
説明を兼ねてコメントを多めに入れてあるので参考までに。

2010年3月28日日曜日

NyARToolKit for Android……のタメの下準備

PreviewCallback版のコード……やたらと中途半端な状態のものだけれど、取り敢えず手元にやってきたので試そうと……思ったら、いろいろとバージョンアップしていたので、手順書とかを書き直しorz

そんなわけで、途中まで書き終わったので公開。

NyARToolKit for Android
http://sixwish.jp/Nyartoolkit/Android/

実機転送まで問題なければ、手元にあるコードのクリーニングをして、MLに流せれば……
もっとも、こっちが先か、書いた人が先に上げてくれるか……
てか、さっさとあげれ
……と、こんなところで言っても始まらんと。

2010年3月21日日曜日

Google Apps と DNS に苦戦

それほど苦戦はしていないんだけれど……

「ドメイン情報が行き渡るまでの時間ってやっぱ長いね」

って事を久しぶりに再認識。
それともValue Domain だったから?それとも設定にミスが有ったか……

まぁ、それはともかく、サブドメイン付きで登録したあたしが悪かったorz

DNS周りはあまり得意じゃないのにちょっと変わったことをやるから悪いんだよね。
Googleの提供する手順じゃサポートしていないから、あちこちのサイトのを参考にしたけれど、それとなく間違えていたり、情報なかったりorz

一応、今回の手順をここにメモ。
Appsには、 subapps.sixwish.jp で登録……ちなみに消しちゃったので無いよ?

作成後にドメインの確認が入るんだけれど、そこで指定されるのが
googleffffffff12345678
とかいうコードをドメインのCNAMEに設定してくれと指示されます。
(斜体部分は任意の英数字)

サブドメインがない場合は普通はこう書きます。
cname googleffffffff12345678 google.com.
今回のようにサブドメインがある場合は下記のように書く。
cname googleffffffff12345678.subapps google.com.
まぁ、このあたりはウェブを検索すればすぐに出てくる……かな?

次、メールのDNS設定。
サブドメイン付きだとこんな感じになる。
mx ASPMX.L.GOOGLE.COM. 10 subapps
mx ALT1.ASPMX.L.GOOGLE.COM. 15 subapps
mx ALT2.ASPMX.L.GOOGLE.COM. 15 subapps
mx ASPMX2.GOOGLEMAIL.COM. 20 subapps
mx ASPMX3.GOOGLEMAIL.COM. 20 subapps
mx ASPMX4.GOOGLEMAIL.COM. 20 subapps
mx ASPMX5.GOOGLEMAIL.COM. 20 subapps
txt subapps v=spf1 include:aspmx.googlemail.com ~all
一番最後に設定したサブドメイン名を指定するところがミソ。
これを忘れたせいで、数時間も損したorz

DNS周りは無闇矢鱈に実験できないから詳しくないんだよね……
日々扱っていれば話しは別なんだろうけれど。

まぁ、参考までに。

2010年3月4日木曜日

NyIDマーカーメーカー

仕事場のリソースとか某所の力を借りてNyIDマーカーのマーカーメーカーを公開。

NyID Marker Maker
http://sixwish.jp/Flartoolkit/Marker/idMarker/

ちなみにこのマーカを使うデモは、FLARToolKitのtrunk内にあるけれど、
数値表示まで組み込む気力なかったんで、マーカーだけ認識する状態で放置されているというね……
だれか、マーカーのIDを表示するようなサンプルを……

てか、他にも溜まっている情報があるんだけれど、文書化する余力が無いorz

2010年2月8日月曜日

FLARToolKit v2.x 系の使い方

FLARToolKitがバージョンアップしたので、それに合わせた使い方を公開。

http://sixwish.jp/Flartoolkit/

バージョンアップしたのでというよりは、バージョンアップさせたのでというのが正解な気がするけれど……まぁいいか。

今回書いたのはFlex Builderを使う方法だけで、FlashDevelop版は近日中に書ければ……
まぁ、FlashDevelopは、v1.x と似たような方法なんでそんなに難しくはないかも。

あと、Flash CS4での作成なんだけれど、各ライブラリをswcにすれば大丈夫だろう……と思っていたのですが、全然駄目。
AS3コンパイラが内部クラスを見つけた瞬間に混乱する現象とVector周りの処理ができない事が致命的っぽい。
Vector.<*>って書いた場合でも問題なくコンパイルする方法はあるのかね?
Flex Builderでもちょくちょく出てくるんでイライラしまくり。

なんつーか、マイクロソフトよりも酷いんじゃないかと……
Flash CS4のサポートはしないことにしようかな。思った以上に手間がかかりすぎ。

とはいえ、そんな事も言ってられそうも無いので、今週はFlash Builder 4のベータ版とやらで試してみますが……最悪はサポートしない方向で。

ご意見とかあれば、blogspotのコメントにお願いします。

2010年1月31日日曜日

行ってみたいけれど、暇が無い

誰かのつぶやきで見かけて、気になったもの。

東京オペラシティアートギャラリー
「エレメント」構造デザイナー セシル・バルモンドの世界
http://www.operacity.jp/ag/exh114/

ICC ONLINE
可能世界空間論――空間の表象の探索、のいくつか
http://www.ntticc.or.jp/Exhibition/2010/Exploration_in_Possible_Spaces/index_j.html

行ってみたい~けれども行く暇が無いー
つーか、午前中から行かないと、両方見て回れない……もうちょっと近ければいいのに(泣

いろいろあってFLARToolKitのメンテナ

いろいろな理由があって、FLARToolKitのコミッタというか、メンテナをやることになっている訳ですが……ろくにFLASH開発やった事ないのに何やってるんだろうorz
まぁ、半分位は仕事の一環ですがね……

svnのメンテナンスとバージョンアップ作業まで終わったし、ドキュメント書きを始めるかね。
つーか、サンプルも作りたいが、その作業は誰かに投げるか……

2010年1月7日木曜日

FLARManager チュートリアル翻訳

FLARToolKitとFLARManagerの開発環境構築手順と、FLARManagerのチュートリアル翻訳第一弾まで作成、公開っと。

http://sixwish.jp/Flartoolkit/

簡単だからこっちを使ってみろと言われつつ、「ドキュメントが無い」と言っていたんですが、結局、自分で書くことになったなorz
ちなみに、ActionScriptは、ぜんぜんやった事がありません。
そのため、本質的な解説まで踏み込んでいませんが、きっかけになれば……

と思いつつ、configの説明とFLARMarker辺りの翻訳しないと微妙ですね。
はい、気合入れて書いていきます。

ご意見とかあれば、コメントにお願いします。

2010年1月1日金曜日

あけましておめでとうございます

あけましておめでとうございます

っということで、2010年ですよ。
昨年のまとめを投稿しようと思って、下書き書いて放置してしまったので、新年分だけでもまじめに書きこ。

去年立ち上げたものを、どうにかして回るようにしなければならない2010年。
いろーんな意味で節目になりそうな2010年。
もう少し技術的なことがやりたいなーと思いつつも手が出せない一年になるんだろうなと。


まぁ、そんなことを書きつつも、新年早々からFLARManagerの説明書を翻訳しつつまとめ始めたわけですが……
ActionScriptの基礎さえわかってない人が書くものじゃないね……
近いうちに仕事場の誰かに丸投げしたいぜ。

それにしても、やりたいことが多過ぎて困るというか空回り気味だな。
あせらずに、ひとつずつ着実にこなすようにしたい一年です。

それでは今年もよろしくお願いします。