p5_underground

所謂クリエイティブコーディングとか音楽とかをぼちぼち楽しんでいきます

20180329_3D描画と3Dノイズ

一応メモ。

・3D

Processingで3D画像を描くにはまずsize()に3番目の引数を追加し、レンダラーを指定する必要がある。

一番シンプルな例として、球を描画するサンプルプログラムがある。描くには、sphere()を使って、半径だけ指定してやれば原点中心で球ができる。位置を変えるには2Dの場合、描画関数の引数として指定してやることができたが、sphere()にはその機能はないので、translate()を使って原点を動かす。

Processingにおける3D空間は、z軸の正の方向からxy平面を見ている形になっている。すなわち、zの値を0にしてやれば、2Dで描画した場合と同じ風景が見える。最初の視点でどれくらいxy平面から離れているのかはいまいちよくわからないのだが、たぶん233ぐらい。(sizeの初期設定などで変わったりするのかもしれないが。)視点を動かせば、球の中に入ったりも当然する。

 

・2次元のノイズを3Dで見る

2次元のノイズの可視化のプログラムを少しいじったようなもの。ノイズ空間としては2次元なのだけれど、表示する際、ノイズ空間上のyを、描画空間でyと同時にzにも対応させてやる。そうすることで、yが大きいほど奥に表示されることになり、後ろへ傾いた板を見ているような形になる。

これの面白いところは、ノイズの出力値を従来通りの濃度透明度に加え、各座標に表示される球の大きさにも対応させているところ。そもそもグラフとして考えた場合、2次元空間に対応するノイズの大きさを表現するには、3次元のグラフである必要があった。もともとはそれを各点の濃度や透明度に対応させて、サーモグラフィーのような形で表現していた。視点が3Dになったことで、本当の3Dグラフのように、ノイズ値が山脈のようになっているのがわかる。球の大きさを一定にしてやると、雲の絵が傾いている状態になる。

 

・3Dノイズ

3次元のノイズ空間をそのまま3次元空間に対応させる。見づらいので視点移動させて、箱の中に煙が充満したようになってるのを見るなど。