/Test_you

電子工作やプログラミングなど、やってみたことのメモ

NyARToolkit for Processing を Windows で動かしてみた

久しぶりに、NyARToolkit の サンプルプログラムを動かしてみました
Processing3 と Processing4 の両方で動作しましたが、Processing4 の方がトラブルが少なかったので、そちらをメインに紹介していきます

NyARToolkit はマーカーベースのARを手軽に作れるライブラリです
サイト: GitHub - nyatla/NyARToolkit-for-Processing: NyARToolkit for Processing
使用例: nyartoolkit - YouTube

1. 環境(Processing4 の場合)

  1. Windows 11 Pro: 23H2
  2. Processing: 4.3
  3. Processing用ライブラリ
    • Video Library for Processing 4: 2.2.2 (GStreamer: 1.20.3)
    • NyARToolkit for processing: v3.0.10
  4. カメラ: ノート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.環境

  1. Windows 11 Pro: 23H2
  2. Processing: 3.5.4
  3. 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 を使用します

  • カメラの初期化処理を修正

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 のバージョンに関するトラブル