Processing 3.0になり、JavaからProcessingを利用する方法が若干変更になりました。
今回は、JythonやJRubyからProcessing 3.0を利用する時に向けた予習として、JavaからProcessing 3.0を動かしてみたいと思います。
Processing 3.0を取得する
Processing 3.0のJARファイルを使うため、まずは公式サイトからProcessing 3.0をダウンロードします。今回はJARファイルが目的なので必須ではありませんが、この機会にインストールしておくのもよいと思います。
今回使用するJARファイルは、展開したzipファイルの以下の場所にあります。
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ファイルの位置は環境に応じて適宜置き換えてください)
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
正常に動作すると、簡単なお絵描きアプリが立ち上がります。
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ファイルを指定します。
javac -cp '/Applications/Processing.app/Contents/Java/core/library/*' MySketch.java
Javaコードの実行:
java -cp '/Applications/Processing.app/Contents/Java/core/library/*:.' MySketch
3Dグラフィックス機能を使わないサンプルもこちらのコマンドで動作するので、3Dの有無によらず普段から同じコマンドを使っておくと楽です。
無事、3Dグラフィックス機能も使用できました。