久しぶりの投稿です。
Context Free Artの文法よく分かってなかったので、Documentationとか見てちょっとだけ勉強したつもりです。
分かったこととか分かってたこととかをここに書いときます。
startshape ルール名
これはお決まりのものです。最初に書きます。
ちなみに、ルールを作るときは、
rule ルール名 {//適当にルールを作る}
みたいにします。
たとえば、円一つだけのものを作りたい時は
startshape enrule en{CIRCLE { }}
これで円が描かれました。
では、円を動かしてみましょう。
startshape en{CIRCLE { }CIRCLE { x 1 }}
どうですか。
もう一つ円が横に表示されたと思います。
ちなみに、基本図形が3つあって、
TRIANGLE { }
SQUARE { }
CIRCLE { }
の3つです。そのまんまですが、三角形、四角形、円です。
ではここからオプションについて解説します。
CIRCLE { }の括弧の中に入ってる x 1 とかのことです。
- x ~ : x方向に~動かす
- y ~ : y方向に~動かす
- z ~ : z方向に~動かす(Context Free Artは2次元なので、z 方向というよりはレイヤーの上下と考えたらいいようです。)
- r ~ : ~ だけ回転させる
- flip ~ : ~度の角度で反転させる。flip 0でx軸に関して、flip 90でy軸に関して反転させます。
- s ~ : サイズを~倍する。 s ~ ... でx方向に~、y方向に...倍する
- hue ~ : 色相です。360までの範囲で色を指定。0が赤、値が大きくなるにつれて黄色、緑、青、紫、ピンクという風になっていきます。
- sat ~ : 彩度です。 -1 ~ 1
- b ~ : 明度です。-1 ~ 1
次に括弧の違いについて。
CIRCLE { }
と書くというのはさっき書いていますが、じつは
CIRCLE [ ]
と書くことも可能です。
この違いは何なのか。
{ }の方は、中身に書いたことをひとまとまりで解釈されます。
一方、[ ]は順番に解釈されます。
つまり、
CIRCLE [ x .5 s .5 x .5]
となっていると、「x方向に0.5動かして サイズを半分にして x方向に0.5動かす」
という意味になる、ということです。
あ、ちなみに小数は0を省略できます。
0.5なら.5ってな感じに。
次に、回数指定。
3*{...} SQUARE { ~~~ }
このように書くとどうなるのでしょう。
この意味は、「3回だけ{ ... }したSQUARE { ~~~ }というルールをやってくれ〜〜」という意味です。
startshape shaperule shape{3*{y 1} SQUARE { s .3 b 1 sat 1 h 230 }6*{x 1 r 20}CIRCLE { s .8 b 1 sat 1 h 0 }}
やってみて下さい。
回数指定した分だけ描かれていますね。
成功成功。^^
次はruleの応用です。
ruleは同じ名前のもの何個でも作れます。
あと、ruleは自分自身を自分の中で呼び出せます。
2つ目があるから面白いのが描けちゃうわけですね〜Context Free Artでは。
自分の中で自分を呼び出せるので、どんどん成長していく絵が描けるのです。
1つ目については、どうなるかというと、どれをやろうかというのをを確率で決めます。
rule ルール名 数値 { }こうすると、数値の分だけ確率的重みが付けられます。
rule A { }rule A 0.2{ }rule A 0.1 { }
仮に上記のように書いたとします。何も数値を指定しないと、自動的に1になります。
上からA1,A2,A3と呼ぶことにしましょう。
A1が実行される確率は、1/(1+0.2+0.1) = 1 /1.3 = 10 / 13
A2が実行される確率は、0.2/1.3 = 2 / 13
A3が実行される確率は、0.1/ 1.3 = 1 / 13
このようになります。13回に10回A1が実行されるが、13回に2回はA2、13回に1回はA3が実行される、ということになります。
コレは面白いですよね。
コレを使うと木のようなものを容易に作成できます。
startshape shaperule shape{CIRCLE { }shape{ r 20 x 2 s .8 }}rule shape 0.2 {shape { }shape { flip 0 }}
これで大体のものは作れるようになりました。
まだ僕自身よく分かってないとこもあるのですが、それは分かったらまた書こうかな〜と思ってます。。
Context Free Artをマスターしてすごい作品を作れるようになりたいですね。
ここをクリックして下さい。お願いします。
0 件のコメント:
コメントを投稿