Processing 3.0をJavaから使用する

Processing 3.0になり、JavaからProcessingを利用する方法が若干変更になりました。

今回は、JythonJRubyからProcessing 3.0を利用する時に向けた予習として、JavaからProcessing 3.0を動かしてみたいと思います。

Processing 3.0を取得する

Processing 3.0のJARファイルを使うため、まずは公式サイトからProcessing 3.0をダウンロードします。今回はJARファイルが目的なので必須ではありませんが、この機会にインストールしておくのもよいと思います。

今回使用するJARファイルは、展開したzipファイルの以下の場所にあります。

  • Mac版: Processing.app/Contents/Java/core/library
  • Windows版: processing-3.0b6/core/library

Windows版は現時点の最新版であるProcessing 3.0 beta 6のディレクトリ名になっていますので、バージョンに応じて読み替えてください。

サンプルコードを作成する

まずはシンプルなProcessingコードを動かしてみます。以下のコードをMySketch.javaという名前で保存します。

import processing.core.*;

public class MySketch extends PApplet {
  public void settings() {
    size(400, 300);
  }

  public void setup() {
    background(0);
  }

  public void draw() {
    stroke(255, 255, 0);
    strokeWeight(3);

    if (mousePressed) {
      line(mouseX, mouseY, pmouseX, pmouseY);
    }
  }

  public static void main(String args[]) {
    PApplet.main("MySketch");
  }
}

スケッチファイルの起動は、PApplet.mainメソッドにクラス名を指定することで行います。また、Processing 3.0より、Javaコードではsettingsメソッド内でのみsizeメソッドが使用可能になっているので注意してください。

サンプルコードを動かす

作成したサンプルコードを動かしてみます。Javaコードのコンパイルと実行それぞれで、先ほどのJARファイルの中にあるcore.jarを指定します。

Macにインストール済みのProcessingを使用する場合であれば、以下のようなコマンドになります。(JARファイルの位置は環境に応じて適宜置き換えてください)

Javaコードのコンパイル

javac -cp /Applications/Processing.app/Contents/Java/core/library/core.jar MySketch.java

Javaコードの実行:

java -cp /Applications/Processing.app/Contents/Java/core/library/core.jar:. MySketch

正常に動作すると、簡単なお絵描きアプリが立ち上がります。

f:id:tkitao:20150922133159p:plain

3Dグラフィックスを描画する

続いて、Processing 3.0上で3Dグラフィックス機能を使用してみます。まずは以下のコードをMySketch.javaという名前で保存します。

import processing.core.*;

public class MySketch extends PApplet {
  public void settings() {
    size(400, 300, P3D);
  }

  public void setup() {}

  public void draw() {
    background(0, 128, 0);

    translate(width / 2, height / 2, -150);
    float angle = (float)frameCount / 100;
    rotateX(angle);
    rotateY(angle);
    box(200);
  }

  public static void main(String args[]) {
    PApplet.main(new String[] { "--location=100,100", "MySketch" });
  }
}

今回はsizeメソッドP3Dオプションを指定して、3Dグラフィックス機能を有効にしています。また、PApplet.mainメソッドにウィンドウ位置を指定するlocationオプションを追加しています。起動時に利用可能なオプションはこちらから参照できます。

3Dグラフィックス用ライブラリを読み込む

Processingで3Dグラフィックスを使用する際は、core.jarに加えてOpenGL関連のJARファイルの読み込みが必要になります。個別のライブラリを逐一指定するのは面倒なので、以下のようにワイルドカードでディレクトリ以下のすべてのJARファイルを指定します。

Javaコードのコンパイル

javac -cp '/Applications/Processing.app/Contents/Java/core/library/*' MySketch.java

Javaコードの実行:

java -cp '/Applications/Processing.app/Contents/Java/core/library/*:.' MySketch

3Dグラフィックス機能を使わないサンプルもこちらのコマンドで動作するので、3Dの有無によらず普段から同じコマンドを使っておくと楽です。

f:id:tkitao:20150922133234p:plain

無事、3Dグラフィックス機能も使用できました。