ContextFree

まる・さんかく・しかく の組み合わせだけでアートしてみよう、というデジタルアート・ソフトウェア、ContextFree。頭の体操にいかがか。

ContextFreeで作りました(コードは末尾)。アナログ万歳的なエントリの直後にナンだが、こういうのも面白いっす。

デジタルアートではProcessingなんかが有名ですが、こちらの方は単純で手軽に楽しめる。プログラミングというよりは、頭の体操的な面白さがあります。かなり強烈な凄腕デモもあるので、触発された人は、チャレンジしてみてはいかがでしょうか。

サイトのマニュアルがわかりにくいので、取っ付きにくいかもしれません。ちょっと触り方書いてみます。

四角を書いてみる

描画関数をruleと呼びます。基本ruleは、SQUARE/TRIANGLE/CIRCLEの3つしかありません。ruleは、自分で定義できます。startshapeで、開始します。

startshape Something

rule Something {
  SQUARE{
      x 0
      y 0
      r 0
      saturation 1
      brightness 1
      hue 0
      alpha 0
      size 1 1
      skew 0 0
  }
}

と書いたら、Renderボタンを押すと、赤い四角が現れます。適当に、以下のパラメータをいじって、変化を確認してみてください。

  saturation 彩度 0~1
  hue     色相 0~360(赤 0くらい 緑 90くらい ..etc)
  brightness 輝度 0~1
  alpha    透明度 -1~0
  r      回転 0-360
  skew 0 0  x/yシアー 0~360

完全なリファレンスはこちら

それぞれのパラメータ名は長いので、通常は省略形を使う。次のように書いても同じです。指定しなければ、それぞれデフォルト値を使います。

startshape Something 
rule Something {
  SQUARE{ x 0 y 0 r 0  sat 1 b 1 h 0 a 0 s 1 1 skew 0 0}
}

再帰

オモシロイのはココからで、rule Somethingを再帰的に呼び出します。これがContextFreeの醍醐味。

x をずらして size を小さくしながら、hue(色)を変えて、回転(r)させると、

startshape Something 

rule Something {
  SQUARE{ x 0 y 0 sat 1 b 1 h 0 a 0 s 1 1 }
  Something{ x 0.5 s 0.9 r 20 h 10 }
}

こんな絵になります。



このコードと絵が頭の中でリンクしたら、シメタもの!
再帰の終了条件は、sizeが0になること(※)なので、とりあえずは size を小さくしていくといいかも。

※だと思うが、それだけではなさそうだ。とりあえず何をやっても「永久ループで固まる」ということはナイので、安心してガンガン試すべしっ。

指定回数の繰り返し

再帰の終了条件を明記(プログラム)できないので、繰り返しを指定したい場合は、↓このようにします。

startshape Something
rule Something {
  3*{x 1}CIRCLE{ sat 1 b 1 h 0 }
}

この例では、x 軸を変えながら、3回CIRCLEを描画しています。

これを応用して、カラーマップを作ってみると、

startshape ColorMap
rule ColorMap {
  35*{y 1 b 0.03}Line{}
}
rule Line {
  35*{x 1 hue 10}SQUARE{ x 0 y 0 sat 1 b 0 h 0 a 0 s 1 }
}


確率による「ゆらぎ」

startshape Something 

rule Something 2 {
  SQUARE{ sat 1 b 1 h 0 a 0 s 1 }
  Something{ x 0.5 s 0.9 r 20 hue 10 }
}

rule Something 0.5 {
  CIRCLE{ sat 1 b 1 h 0 a 0 s 1 }
  Something{ x 0.5 s 0.9 r 90 hue 10 }
}

とすると、
2/(2+0.5)の確率で1つめのSomethingを、
0.5/(2+0.5)の確率で2つめのSomethingを実行します。
確率なので、Renderを押すたびに、結果が変わります。


あとはテキトーにガンバって。
正直、偶然の産物というか、狙ってできるもんじゃないというかw
思い通りに行かないと異様にモンモンします。そういうところも面白いです。3Dの表現方法もあるので、興味ある人はこのあたりも読んでみて下さい。

冒頭の絵、題して「ガーデン」。のコード

startshape Garden
rule Garden{
    Window{}
}
rule Window 5{
    Flower{}
    Window{ s 0.6 x 1 a -0.5 r 30 }
    Window{ s 0.6 x -1 a -0.5 r 60 }
}
rule Window 2{
    Window{ s 0.98 y 1 a -0.5}
}
rule Flower{
  CIRCLE{ s 1 sat 1 b 1 hue 100 skew 30 0 a -0.5 }
  Flower{ x 1 hue 10 r 70 s 0.9 a 0.1}
}

コメント

コメントしてください

closed.