Okamoto's Homepage
このページの内容は,プログラミングのようなことをやったことがない人にとっては,やや難しいかもしれません。よく分からん,という人は,とりあえずこのページのことは無視してください。(というか,あまり上手く説明できていません)
まずは次の画像を見てください。
![]() 上の画像のソースは右のようになっています。 赤字の部分で,「#while (...)〜#end」の繰り返し構文を使って7個の球を作成しています。「#while (...)〜#end」についてはこちら。 この画像を元に,乱数を使っていろいろと試してみることにします。 |
camera {
perspective
location <0.0, 4, -6>
up y*image_height right x*image_width
angle 60
look_at <0.0, 2, 0>
}
light_source {<100, 100, -100> rgb 1}
plane {
<0.0, 1.0, 0.0>, 0.0
texture{
pigment {checker rgb <0, 0, 0>, rgb <1, 1.0, 1>}
finish { ambient 0.3 }
}
translate <0.5, 0, 1>
}
plane {
<0.0, 0.0, 1.0>, 0.0
texture{
pigment {checker rgb <0, 0, 0>,rgb <1, 1.0, 1>}
finish { ambient 0.3 }
}
translate <0.5, 0, 1>
}
#declare MyValue = -3;
#while ( MyValue <=3 )
object {
sphere { <0, 0, 0>, 0.5 }
pigment { color rgb <1, 0, 0> }
finish { phong 0.8 ambient 0.2 }
translate <MyValue, 0.5, 0>
}
#declare MyValue = MyValue + 1;
#end
|
![]() 右のソースの赤字の部分が,付け加えた箇所です。 |
#declare r1 = seed (12345); #declare MyValue = -3; #while ( MyValue <=3 ) object { sphere { <0, 0, 0>, 0.5 } pigment { color rgb <1, 0, 0> } finish { phong 0.8 ambient 0.2 } translate <MyValue, 0.5+rand(r1)*3, 0> } #declare MyValue = MyValue + 1; #end |
乱数を使うときは,上のように「seed()」と「rand()」を使います。ここら辺,分かりやすく説明することができないのですがm(_ _)m,使い方を知っていれば乱数を発生できますので,上のように書くんだと覚えてしまってください。
#declare r1 = seed (12345); の部分で,「r1」は適当な名前でかまいません。「ransuu」とかでも大丈夫です。seed()の()内には適当な整数を入れてください。この数を変えると,r1の中身が変わりますので,上の例でいえば球の高さのバラバラさ加減が違うものになります。ここで定義したr1を,rand(r1)のように,rand()の()内に入れて使います。
rand()で発生する乱数は,0〜1の間の数になります。もっと大きな数にしたいときは,上の例のように3をかけたりしてください。
上の画像に加えて,色を適当に変化させてみます。
![]() 右のソースの赤字の部分が,付け加えた箇所です。 |
#declare r1 = seed (12345); #declare r2 = seed (54321); #declare MyValue = -3; #while ( MyValue <=3 ) object { sphere { <0, 0, 0>, 0.5 } pigment { color rgb <1*rand(r2), 0, 0> } finish { phong 0.8 ambient 0.2 } translate <MyValue, 0.5+rand(r1)*3, 0> } #declare MyValue = MyValue + 1; #end |
上の例では,色の成分のうち赤(r)の部分だけに乱数をかけていますので,暗い赤〜明るい赤だけの色になっていますが,緑(g)や青(b)に乱数をかけることによって,様々な色にすることができます。
![]() 右のソースの赤字の部分が,付け加えた箇所です。 |
#declare r1 = seed (12345); #declare r2 = seed (54321); #declare MyValue = -3; #while ( MyValue <=3 ) object { sphere { <0, 0, 0>, 0.5 } pigment { color rgb <1, 0, 0> } finish { phong 0.8 ambient 0.2 } scale rand(r2)*2 translate <MyValue, 0.5+rand(r1)*3, 0> } #declare MyValue = MyValue + 1; #end |
ちなみに2005年の年賀状で使った画像(上)は,この乱数の機能を使って作ってみました。上の小さな画像をクリックすると,大きな画像を見ることができます。ニワトリ(もどき)の表面のテクスチャと向きを乱数で変更しながら,繰り返し構文を使って並べたものです。