昨日の記事でContext Freeに慣れたところで、今度は3D版のStructure Synthに挑戦してみます。
http://structuresynth.sourceforge.net/
といってもほとんど考え方は一緒。x y 方向に z が加わり、回転も rx ry rz の3軸になるだけです。
文法はほんの少し違いますが、Examplesを眺めていればすぐに理解できるでしょう。
あとは、IDEを使ってruleを書き、角度やズームをマウスで調整。
面白い絵が描けたら、フリーの3Dレンダラ(Java)である sunflowを使って綺麗にレンダリングできます。
(Template Reder to File -> sunflowmulticolored.rendertemplate で拡張子 .sc をつけて保存 → sunflowで読み込み)
set maxdepth 1000 set background black { sat 0 x 00 y 00 z -30.9 s 300 300 1 } box { y -70 h 240 } R1 { y -52 h 60 } R1 rule R1 { { s 4 } sphere { x 0.5 ry 2 y 0.2 h 2 } R1 }
ランダムに成長するbox。
※IBL(Image Based Lighting)でレンダリングし直してみた。詳しい方法はこちらやこちらを参考に。やっぱり遥かに綺麗。
この規則は以下ですが、もっとシンプルに書く方法があるはずだと思う。
set maxdepth 1000 set background black { sat 0 x 00 y 00 z -1 s 300 300 1 } box { x -100 y -100 } gridbox rule gridbox maxdepth 20 { _gridbox { y 12 } gridbox } rule _gridbox maxdepth 20 { { s 10 10 2 sat 0 } box { x 12 } _gridbox } { z 20 sat 0 b 0.9 } random_box { x -20 y 20 z 20 sat 0 b 0.7 } random_box { y -40 z 20 sat 0 b 0.6 } random_box rule random_box { { s 10 20 10 } box { s 0.992 x -10 a 0.99 } random_box } rule random_box { { s 10 20 10 } box { s 0.993 y -10 a 0.99 } random_box } rule random_box { { s 20 30 10 } box { s 0.994 z -5 a 0.99 } random_box } rule random_box { { s 20 10 10 } box { s 0.991 x 10 a 0.99 } random_box } rule random_box { { s 20 10 10 } box { s 0.992 y 10 a 0.99 } random_box } rule random_box { { s 20 10 10 } box { s 0.994 z 5 a 0.99 } random_box }