NyARToolKit for Java

Section 07 サンプルプロジェクト

NyARToolKitに付属しているSample、Simpleiteを動かしてみます。

Sampleプロジェクト作成

[File]→[New]→[Java Project]と選択。
下図のウィンドウが開いたら、Project name : 「Sample」と入力して「Next」

New Java Project

[Projects]タブを選択。
「Add」ボタンをクリックして、「NyARToolKit」を選択して「OK」
下図のような状態になったら「Finish」

New Java Project

サンプルのソースコードをインポートします。

展開したフォルダ内の、[NyARToolkit-2.5.1\sample\jogl]フォルダを選択。ファイルリストが表示されるので「jp」にチェックを入れます。
また、インポート場所 Into folder が Sample/src になっていることを確認してから「Finish」

Import - File System

下図のような状態にしてください。

JavaSimpleLite

パターンファイルなどをインポートします。

展開したフォルダ内の、[NyARToolkit-2.5.1]フォルダを選択。ファイルリストが表示されるので「Data」にチェックを入れます。
また、インポート場所 Into folder が Sample になっていることを確認してから「Finish」

Import - File System

サンプルのパス情報が異なるので、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]をクリックして、もう一度実行してみてください。