Date:2023-06-26
joons-renderer with Processing
Processingで3Dレンダリングを試してみたい方へ。Processingで利用できるJoon Hyub Leeの joon’s Renderer library の紹介と使い方です。Processingで制作した3Dの描画をフォトリアリスティックに表現することができます。Generative Designの本でも少し紹介されています。
本記事は、Processingで利用できるレンラダー“joons-renderer”の紹介です。フォトリアリスティックな光の表現の設定などProcessing作品の表現の幅を広げてください。
“joons-renderer”とは。
“joons-renderer”は、2012年にJoon Hyub Leeがリリースしたレンダラーです。Processing上でSunflowのレイトレーシングを適応します。このライブラリーを使用することで3Dで制作したグラフィックをリアルに表現する事ができます。※Sunflowは、実写的なオープンソースのレンダラー。
Index
- joon’s Renderer library のダウンロードとインストール
- joon’s Renderer libraryの使い方
- サンプル出力とサンプルコード
- サンプル|barbe_generative_diary / Sound visualization
- Recommended Book for Processing(参考書籍)
joon’s Renderer library のダウンロードとインストール
Processing IEDからダウンロードとインストールが行えます。
エディタ右上のボタンより、Contribution Manager を開き の Libraries より「 joon’s Renderer」を検索、インストールを行います。joons.JoonsRenderer をインポート、利用できるようになります。
その他にも、手動で下記 joons-rendererのGithubよりLibraryをダウンロードのちzip解凍してフォルダをそのまま、Processingのlibrariesにコピーペーストしても利用できます。
» https://github.com/joonhyublee/joons-renderer/wiki/Download
joon’s Renderer libraryの使い方
基本的な使い方のイメージは、void draw()内で、レンダリングする物体をbeginRecord()とendRecord()で囲み、void keyPressed()などを利用してrender()を設置しキーを押すことでレンダリングすることになります。デフォルトにてpngでスケッチフォルダに出力されます。
また、あらかじめ void setup()内で、イメージサイズやサンプリング、被写界深度などの出力イメージをセティングすることができます。
サンプル出力とサンプルコード
下記、出力画像・サンプルコードは、joons-rendererのGithubからの抜粋です。
setup()にて、各種イメージの設定を行い、draw()にてbeginRecord()とendRecord()間に、diffuseやlight、glass、mirrorといった色を設定します。
最後にvoid keyPressed()でレンダリングを行います。
import joons.JoonsRenderer;
JoonsRenderer jr;
ArrayList boxes = new ArrayList ();
//Camera Setting.
float eyeX = 0;
float eyeY = 120;
float eyeZ = 80;
float centerX = 0;
float centerY = 0;
float centerZ = 10;
float upX = 0;
float upY = 0;
float upZ = -1;
float fov = PI / 4;
float aspect = 4/3f;
float zNear = 5;
float zFar = 10000;
void setup() {
size(800, 600, P3D);
jr = new JoonsRenderer(this);
jr.setSampler("bucket");
jr.setSizeMultiplier(1);
jr.setAA(0, 2, 4); //setAA(minAA, maxAA, AASamples), increase AASamples to increase blur fidelity.
jr.setCaustics(20);
jr.setDOF(130, 3); //setDOF(focusDepth, lensRadius), bigger the lens radius, the blurrier the unfocused objects.
for (int i = 0; i < 200; i++) {
boxes.add(random(150)-75);
boxes.add(random(150)-75);
boxes.add(random(150)-20);
}
}
void draw() {
jr.beginRecord(); //Make sure to include things you want rendered.
jr.background(0);
camera(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
perspective(fov, aspect, zNear, zFar);
//Floor.
jr.fill("diffuse", 100, 100, 100);
int w = 10000;
beginShape(QUADS);
vertex(w, -w, 0);
vertex(-w, -w, 0);
vertex(-w, w, 0);
vertex(w, w, 0);
endShape();
//Lighting.
jr.fill("light", 30, 30, 30, 64);
int z = 50;
beginShape(QUADS);
vertex(-z, -z, 150);
vertex(-z, z, 150);
vertex(z, z, 150);
vertex(z, -z, 150);
endShape();
//Random Boxes.
jr.fill("diffuse", 255, 255, 255);
for (int i = 0; i < boxes.size()/3; i++) {
translate(boxes.get(i*3), boxes.get(i*3+1), boxes.get(i*3+2));
box(2);
translate(-boxes.get(i*3), -boxes.get(i*3+1), -boxes.get(i*3+2));
}
translate(-10, 0, 20);
jr.fill("glass");
sphere(15);
translate(20, 0, 0);
jr.fill("mirror");
sphere(15);
endShape();
jr.endRecord(); //Make sure to end record.
jr.displayRendered(true); //Display rendered image if render is completed, and the argument is true.
}
void keyPressed() {
if (key == 'r' || key == 'R') jr.render(); //Press 'r' key to start rendering.
}
参考/https://github.com/joonhyublee/joons-renderer/wiki
※細かなReferenceについては上記のjoons-rendererのGithubにてご確認してください。
サンプル|barbe_generative_diary / Sound visualization
台湾台北市にある華山1914文創園区にてフィールドレコーディングを行いました。録音した鳥のさえずりのサウンドデータをベースにjoon's Renderer libraryを利用し視覚化実験を行いました。
Sound visualization // bird’s nest // recording
Field recording // Huashan 1914, Taipei, Taiwan @huashan1914_creative_park
Recorder:zoom F3
Microphones:BasicUco / LOM audio
Recommended Book for Processing
多くあるジェネラティブアートの書籍の中から、チュートリアル本として分かりやすいProcessingをベースとした入門書3冊を紹介しています。
» [Generative art のすすめ、ビギナーのためのProcessing 入門書3冊
Recommends on Amazon
ジェネラティブアート関連書籍やツール類のまとめとてして、barbe_generative_diary ページ(Amazonインフルエンサープログラム)にて随時紹介しています。気になるものを是非チェックしてください。