物体をプログラムでアニメーションすると言う基礎を覚えました。
次は、球以外の色々な形を置いてみましょう。
立方体と言う? CGを載せておくので、それを見て判断して下さい(笑)
box(ボックス)で描画します。
box { <始点X座標, 始点Y座標, 始点Z座標>, <終点X座標, 終点Y座標, 終点Z座標> }
はい、私には意味が分かりません(^^;
試行錯誤を行った結果、以下のように考える事にしました。
球と同じように、物体の中心を (x, y, z)とし、サイズを sizeとすると、
box { <x - size/2, y - size/2, z - size/2>, <x + size/2, y + size/2, z + size/2> }
となります。
更にややこしくなったように見えますが、こう書くものだと思ってしまえば、球と同じようにイメージして描く事ができます。
この法則を元に、球で円を描くを四角い箱に置き換えてみました。
#declare I = 0; #while (I < 3.14 * 2) #declare X = cos(I) * 4; #declare Y = sin(I) * 4; #declare Z = 10; #declare Size = 0.3; box { <X - Size/2, Y - Size/2, Z - Size/2>, <X + Size/2, Y + Size/2, Z + Size/2> pigment { color rgb <1,1,1> } } #declare I = I + 3.14 * 2 / 32; #end light_source { <10, 20, -10> rgb <1,1,1> }
cone(コウン、和製英語的に言うならコーンかな?)で描きます。
cone { <底面X座標, 底面Y座標, 底面Z座標>, 底面の円サイズ, <頂点X座標, 頂点Y座標, 頂点Z座標>, 頂点の円サイズ
}
一見難しそうですが、言ってみれば上下の円のサイズを指定しているだけの事です。
球と同じように、物体の中心を (x, y, z)とし、サイズを sizeとすると、
cone { <x, y - size/2, z>, size, <x, y, z + size/2> }
となります。
これも、球で円を描くを置き換えてみます。
#declare I = 0; #while (I < 3.14 * 2) #declare X = cos(I) * 4; #declare Y = sin(I) * 4; #declare Z = 10; #declare Size = 0.3; cone { <X, Y - Size/2, Z>, Size, <X, Y + Size/2, Z>, Size pigment { color rgb <1,1,1> } } #declare I = I + 3.14 * 2 / 32; #end light_source { <10, 20, -10> rgb <1,1,1> }
※cylinder(スリンダー、和製英語的に言うならシリンダーかな?)を使っても同じ事ができます。
上の方のサイズを 0にすれば、円錐になりますね。
#declare I = 0; #while (I < 3.14 * 2) #declare X = cos(I) * 4; #declare Y = sin(I) * 4; #declare Z = 10; #declare Size = 0.3; cone { <X, Y - Size/2, Z>, Size, <X, Y + Size/2, Z>, 0 pigment { color rgb <1,1,1> } } #declare I = I + 3.14 * 2 / 32; #end
永遠に広がる平面を生成するのが plane(プレイン)です。
plane { <向きX, 向きY, 向きZ>, 位置 }
こいつが最も意味不明です。
向きとは法線ベクトルとかいう意味不明な用語が書かれています。
分かんないので、地面は、
plane { <0, 1, 0>, -1 }
と覚えて置きましょう。
plane { <0, 1, 0>, -1 pigment { color rgb <1,1,1> } } light_source { <10, 20, -10> rgb <1,1,1> }
torusによって描く事ができます。
torus { 半径, リングの太さ }
こいつが不思議です。なぜか位置を指定するパラメータがありません。
と言うことは、世界の中心にしか置けない事になります(謎)
何の役に立つのか良く分からないので、保留にします。