- 追加された行はこの色です。
- 削除された行はこの色です。
[[執筆/雑誌/SD/2009/03]]
*まず、動かすには。 [#m9555aef]
+JMFをインストールする
++[[JMF 2.1.1e Software>http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/download.html]]より、入手してください。
+Webカメラを接続する
++JMFに対応しているものである必要がありますが、たいていの場合は、大丈夫です。
+カメラサーバを起動する
++ソースコードのWebcamBroadcasterディレクトリのWebcamBroadcasterを実行します。
++コンパイル済みのバイナリがおいてありますので、下記のように実行できます。
+++java WebcamBroadcaster
+母艦PCのIPを調べる
++Androidエミュレータは、qemu上で動いているため、「localhost」によるアクセスは出来ません。そのため、母艦PCに何かしらのIPアドレスが必要になります。
+++プライベートIPでも構いません。
++調査法は、Windows系であれば「ipconfig」、Mac/Linux系であれば「ifconfig」で調べることが出来ます。
+ソースコード一式をEclipseに読み込む
++技術評論社さんの特設ページからダウンロードしてください。
++技術評論社さんの[[特設ページ>http://gihyo.jp/magazine/SD/archive/2009/200903/support]]からダウンロードしてください。
++File⇒Import⇒Existing Projects into Workspace を選択してください。
++「Select root directory」に、解凍先のディレクトリを指定してください。
++「Projects」欄に「NyARtoolkitAndroid」が表示されますので、選択して 「Finish」を押してください。
+ソースコードのIPアドレスの設定を変更する
++res/values/strings.xml
<string name="server_addr">192.168.86.1</string>
の 部分を上記で調べたものに変更します。
+マーカーを印刷する
++res/raw/marker.jpg
+++を、印刷してください。
+実行する
++Eclipseから、実行してください。エミュレータが起動して、カメラ画像が表示されるはずです。
++上記で印刷したマーカーを、カメラで写すと、3Dオブジェクト(デフォルトでは、椅子)が表示されます。
**表示させる3Dオブジェクトを変更する [#c61cefeb]
+assetsディレクトリに、読み込ませたい3Dオブジェクトのデータをコピーしてください。
++メタセコイヤ形式ファイルに対応しています。
++Androidの制限により、1MBまでのファイルしか読み出せません。
+ソースコード「NyARToolkitAndroidActivity#onCreate()」
mRenderer = new ModelRenderer(false, getAssets(), "chair01.mqo", 0.04f);
++の行をコピーしたファイル名に変更してください。
+++最後のfloat値は、倍率です。
**G1やDev Phone 1で動かす [#sa497b75]
+res/values/strings.xml
<string name="camera_name">jp.android_group.artoolkit.hardware.SocketCamera</string>
を、
<string name="camera_name">jp.android_group.artoolkit.hardware.Dev1Camera</string>
に変更する。
*ソースコードを追いかける(詳細編) [#l85f87e9]
細かい点について、コードを順番に追っていきます。~
*訂正 [#m2784785]
**Dev Phone 1モードでの画像の向きについて [#va655ac7]
もしかすると、画面が傾いていませんか?~
本来は、それを制御するためには、OrientationListenerクラスを利用します。~
NyARToolkitAndroidActivity#onCreate(Bundle)内で、
mOrientationListener = new OrientationListener(this) {
public void onOrientationChanged(int orientation) {
mLastOrientation = orientation;
}
};
と、インスタンス化しています。~
が、これ、思ったように動いてくれません。Dev Phone 1を、立てているにもかかわらず、『横』の判定になってしまったり、動かしていないのに、縦から横になってしまったりと、いまいち、安定しません。~
そのため、今回は、入れてはおきましたが、使っていません。~
有効にするには、Dev1CameraクラスのインナークラスであるImageCapture#capture()内の
//final int latchedOrientation = NyARToolkitAndroidActivity.roundOrientation(arActivity.getLastOrientation() + 90 );
(略)
parameters.set("rotation", 90);
//parameters.set("rotation", latchedOrientation);
のコメントアウトをはずしてもらえれば、OKです。~
安定させられた方、是非、ご連絡をお願いします。~
***キャリブレーションについて [#fc051feb]
上記のOrientationListenerによる姿勢制御により、縦横が切り替わったタイミングで画面のサイズが(縦横比)が変わります。そのため、この横サイズにあったARToolkit用のキャリブレーションファイル(res/raw/camera_para.dat)が必要になります。~
今回は、用意していないので、ご自分で用意してください。
*訂正とお知らせ [#m2784785]
**RGBの並びについて [#wdeab5a6]
Camera×Callback×Bitmap節にて、RGBの持ち方に関する記述がありますが、
ビットマップとOpenGL/ESとのRGBの持ち方の違い
という方が正しいとの、指摘がありましたので、訂正させていただきます。
**NyARToolkitとメタセコの読み出しライブラリについて [#f85c7305]
現在、NyARToolkitのVer.2.0化 と Androidに付属しているfloat系のネイティブライブラリを使用するように変更を行っています。~
それにあわせて公開する予定ですので、少々お待ちください。
*Android Tips [#z4777d8b]
** [#f441e2e8]
** [#b35317bb]
*おまけ [#hf0515e9]
**本節の1ページ目の写真の手 [#jac05a65]
-手タレとして出演してもらったのは、[[これ>http://yoshiori.org/]]です。