Structure Synthが楽しい

昨日の記事で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
}