NyARToolKit for Java
Section 07 サンプルプロジェクト
NyARToolKitに付属しているSample、Simpleiteを動かしてみます。
Sampleプロジェクト作成
[File]→[New]→[Java Project]と選択。
下図のウィンドウが開いたら、Project name : 「Sample」と入力して「Next」
[Projects]タブを選択。
「Add」ボタンをクリックして、「NyARToolKit」を選択して「OK」
下図のような状態になったら「Finish」
サンプルのソースコードをインポートします。
展開したフォルダ内の、[NyARToolkit-2.5.1\sample\jogl]フォルダを選択。ファイルリストが表示されるので「jp」にチェックを入れます。
また、インポート場所 Into folder が Sample/src になっていることを確認してから「Finish」
下図のような状態にしてください。
パターンファイルなどをインポートします。
展開したフォルダ内の、[NyARToolkit-2.5.1]フォルダを選択。ファイルリストが表示されるので「Data」にチェックを入れます。
また、インポート場所 Into folder が Sample になっていることを確認してから「Finish」
サンプルのパス情報が異なるので、JavaSimpleLite.javaのソースコードを下記のように書き換えます。
244: private final String CARCODE_FILE = "./Data/patt.hiro";
245:
246: private final String PARAM_FILE = "./Data/camera_para.dat";
さて、ここまで終わったところで、下図のようになっていると思います。
さて、これを実行します。
JavaSimpleLite.java の上で右クリック、[Run As]->[1 Java Application]をクリックします。
カメラが回り始めたら、あとはマーカーを映して動作確認です。
詳しいことは次回。
トラブルシューティング
さて、上記の実行でうまく動作しない場合があると思います。
だいたい同じパターンなので、ここからはそれの対応方法を説明します。
ここまでやって、実行時に下記のエラーが出ている方が多いかと思います。
java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Unknown Source)
at jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureDeviceList.getDevice(JmfCaptureDeviceList.java:80)
at jp.nyatla.nyartoolkit.jogl.sample.JavaSimpleLite.
<init>(JavaSimpleLite.java:124)
at jp.nyatla.nyartoolkit.jogl.sample.JavaSimpleLite.main(JavaSimpleLite.java:259)
</init>
久しぶりに再セットアップしたら見事に表示されたので、対応方法をまとめます。
上記のエラーは、JMFがカメラデバイスの認識に失敗している場合に発生します。
原因はわかっているので、下記の方法で対応してください。
NyARToolKit のプロジェクト上で右クリック、[Build Path]->[Configure Build Path]とクリック。
[Add External Class Folder…]をクリック。
Cドライブの、「Java\JMF2.1.1e\lib」を選択して[OK]
こうなったら、[OK]をクリックして、もう一度実行してみてください。