久しぶりに、NyARToolkit の サンプルプログラムを動かしてみました
Processing3 と Processing4 の両方で動作しましたが、Processing4 の方がトラブルが少なかったので、そちらをメインに紹介していきます
NyARToolkit はマーカーベースのARを手軽に作れるライブラリです
サイト: GitHub - nyatla/NyARToolkit-for-Processing: NyARToolkit for Processing
使用例: nyartoolkit - YouTube
1. 環境(Processing4 の場合)
- Windows 11 Pro: 23H2
- Processing: 4.3
- Processing用ライブラリ
- Video Library for Processing 4: 2.2.2 (GStreamer: 1.20.3)
- NyARToolkit for processing: v3.0.10
- カメラ: ノートPC内蔵カメラ
2. 注意事項
Windowsの場合、Processing.exe を配置するフォルダ、スケッチブックの場所には、日本語を含まないようにします。日本語を含むとライブラリを見つけられず、エラーが発生します
詳細はこちら > Processing Video Library 問題まとめ #processing - Qiita
デフォルトだと、スケッチブックの場所が「ドキュメント」になるため、修正が必要です
メニューの ファイル > 設定 を選択し、スケッチブックの場所
を変更します
3. ライブラリのインストール
3-1. Video Library for Processing 4
メニューの スケッチ > ライブラリ > Mange Libraries... を選択
Video Library for Processing 4 を選択して、Install
を押下する
※ライブラリをインストールしたら、一度 Processing を終了して、再度起動します
3-2. NyARToolkit for processing
Releases · nyatla/NyARToolkit-for-Processing · GitHub から、nyar4psg.zip をダウンロード
ファイルを解凍し、スケッチブックの場所/libraries
以下に配置する
4. カメラ入力の確認
Video Library のサンプルを実行して、カメラ画像が表示できるか確認します
メニューより ファイル > サンプル... を選択、Javaサンプルのダイアログから
ライブラリ > Video Library for Processing 4 > Capture > GettingStartedCapture
をダブルクリックして、サンプルを開きます
サンプルを実行して、カメラ画像が表示されたらOKです
5. マーカーの準備
NyARToolkit のライブラリに同梱されているマーカーを印刷しておきます
NyARToolkitを格納した場所/data/pattHiro.pdf
というファイルです
※マーカーの周囲には白い部分が必要です。黒い部分ピッタリで切ると、うまく認識できません
6. NyARToolkitのサンプルプログラム実行
Javaサンプルのダイアログから
Contributed Libraries > nyar4psg > simpleLite
のサンプルを開いて実行します。カメラにマーカーを見せると、マーカー上に青い箱が表示されます
これでサンプルプログラムの動作が確認できました
7. Processing 3 の場合
下記の環境で、サンプルプログラムの動作は確認できましたが、いくつか対処が必要でした
7-1.環境
- Windows 11 Pro: 23H2
- Processing: 3.5.4
- Processing用ライブラリ
- Video Library for Processing 3: 2.0 (GStreamer: 1.16.2)
- NyARToolkit for processing: v3.0.6
7-2.注意事項
※いずれも、正確な所は分からないので、推測になります
NyARToolkitのバージョンを v3.0.6 にする
- NyARToolkitの v3.0.10 以降は Java11 でコンパイルされているためか、Processing 3.5.4(Java8が同梱) ではエラーになりました
Processing 3 の場合、Video Library for Processing 3: 2.0 を使用します
カメラの初期化処理を修正
- GettingStartedCapture や simpleLite のサンプルをそのまま実行すると、カメラが見つからず何も表示されません。下記に従い、カメラデバイス一覧の取得を繰り返すコードを追加したら動作しました
Processing Video Library 問題まとめ #processing - Qiita
- GettingStartedCapture や simpleLite のサンプルをそのまま実行すると、カメラが見つからず何も表示されません。下記に従い、カメラデバイス一覧の取得を繰り返すコードを追加したら動作しました
void setup() { size(640, 480); String[] cameras = Capture.list(); //=========== ここから ============== //カメラに接続できるまでカメラデバイス一覧を取得 while (cameras.length == 0) { cameras = Capture.list(); } //=========== ここまで ============== if (cameras == null) { println("Failed to retrieve the list of available cameras, will try the default..."); cam = new Capture(this, 640, 480);
void setup() { size(640,480,P3D); colorMode(RGB, 100); println(MultiMarker.VERSION); //=========== ここから ============== String[] cameras = Capture.list(); //カメラに接続できるまでカメラデバイス一覧を取得 while (cameras.length == 0) { cameras = Capture.list(); } cam = new Capture(this, 640, 480, cameras[0]); //=========== ここまで ============== //=========== コメントアウト ============== //cam=new Capture(this,640,480); nya=new MultiMarker(this,width,height,"../../data/camera_para.dat",NyAR4PsgConfig.CONFIG_PSG); nya.addARMarker("../../data/patt.hiro",80); cam.start();
7-3.実行結果
8. まとめ
- Processing3 と Processing4 で NyARToolkit のサンプルプログラムの動作を確認しました
- 現状だと Processing4 がお勧めです。Processing3 はいくつか対処が必要でした
- どちらの場合でも、フォルダ名に日本語を使わないように注意しましょう
最後に、NyARToolkit のコミット履歴を見たのですが、2023年に更新があって驚きました(初回コミットは2009年)。長期にわたってメンテ頂いている製作者の方に感謝します
9. 参考にした情報
9-1. Processing Video Library 関係
カメラ関係は、色々なトラブルがあるようで、これらの情報は参考になりました
うまく行かない場合の選択肢としては、下記もあるようです
9-2. Java のバージョンに関するトラブル
Processing 3.5.4 と NyARToolkit v3.0.10 の組み合わせでは、下記のエラーがでました
NyARToolkit の v3.0.6 と v3.0.10 の間でコンパイル時のバージョンが変わったようです
- Comparing v3.0.6...v3.0.10 · nyatla/NyARToolkit-for-Processing · GitHub
NyARToolkit.jarをJava11でコンパイルした。
- Comparing v3.0.6...v3.0.10 · nyatla/NyARToolkit-for-Processing · GitHub