2008年4月23日水曜日

NyARToolkit on Google Android!!

NyARToolkit を Google Android エミュレータ上で動作させました!!
ものすっごい、お馬鹿なミスで5日ぐらい悩まされましたが。。。

移植自体は非常にスムーズに、行きました。
OpenGL ESがdoubleが扱えなかったので、一部floatで取得する関数などを追加しましたが、NyARToolkit自体はほとんどいじらずに動きました。
これは一重にA虎@さんがシンプルにJavaで記述してくださった結果です。いやー、ありがたい!
とりあえず以下に画像をば。


現状ではエミュレータが動画キャプチャに対応していないため
キャプチャ部分は、JMFを使って書いたJavaサーバアプリにAndroidからソケット接続し画像を取得しています。
Live Camera Previews in Android
こちらを参考にさせていただきました。

ただし、エミュレータでは1つのアプリケーションが使えるメモリが最大16M程度であるらしく、
320*240*3の配列をコピーするのに4秒近く、マーカの認識に7秒かかってしまいます。
結果、一枚の画像がかかれるまでに10数秒です。とても使い物になりません。
(時々なぜか速くなって7秒台がでますが、、、)

何はともあれ、携帯電話でARが少しは近づいたかな、と。
さて、Applet, JWSまわりのフレームワーク化をまとめよう!

P.S.
A虎@さんがNyARToolkitの高速化を行っておられますので、新しいバージョンと統合次第、
ソースも公開します。

5 件のコメント:

匿名 さんのコメント...

こんばんは。

>JMFを使って書いたJavaサーバアプリにAndroidからソケット接続し画像を取得しています。

おお、そんなことしてたんですか!頑張りましたね~。Googleに興味を持ってもらって、カメラデバイス周りのAPI公開してもらいましょう!

エミュレータとはいえ、Androidで動作したのは恐らく世界初ですし。
画像を見ている限り、直ぐにも動き出しそう。早く実機でてこないかな~。


>これは一重にA虎@さんがシンプルにJavaで記述してくださった結果です。いやー、ありがたい!

いや、その、Javaの便利機能を知らないともいいます(汗

>結果、一枚の画像がかかれるまでに10数秒です。

エミュレータのせいかな…?でも、静止画に画像を合成するシステムには応用できるかもしれませんね。

ところで、NyARToolkit用にsourceforgeにアカウントを取りました。そちらで公開をしてみませんか?確かサブプロジェクトみたいな項目があったような…。

Shinobu IZUMI さんのコメント...

どうやら、JITがないのとメモリサイズの制限が問題な感じですね~。

サブプロジェクトで公開いいですね!
是非お願いしたいです。

ちょいと整理しないといけませんが。汗

Unknown さんのコメント...
このコメントは投稿者によって削除されました。
匿名 さんのコメント...

はじめまして。
現在、大学でandroidの研究を行っています。
ぜひ、JMFを利用したJavaサーバアプリを参考にしたいのですが、ソースなどを拝見させていただけないでしょうか。
よろしくおねがいします。

Shinobu IZUMI さんのコメント...

匿名さん

はじめまして。
大学の方ですか。私も何を隠そう大学関係者です。笑
ここで使っているのは
Javaサーバアプリと言うほどのものではなくて
単純に、画像をソケット通信で送っているだけのモノです。
http://sourceforge.jp/projects/nyartoolkit/
から、NyARToolkit for Androidをダウンロードしていただくと、その中にソースコードは含まれていたはずです。
かなり初期のAndroid用に書いたものなので、そのままでは動作しないと思います。
gmail( アカウント: stagesp1 )にメールいただければ、詳しくご連絡できるかと思います。