見出し画像

ジェネラティブアート制作時の頭のなか - 番外編 ストレンジアトラクタ作品の場合

 年度末・年度初めは仕事が多くなる。年度末には、その年度の締めくくりに関する書類や報告会への参加などがあり、年度初めには新たに始める様々な試みに関する準備などに追われてこととなる。

 そんな訳で、最近は以下のリンクに示すプログラム(といっても、正確にはこれを更に改良したもの)で生成したストレンジアトラクタをぼちぼちと発表する程度となってしまっている。今日は、予定していた事柄が 1 時間ほど早く終わったので、ここ最近発表しているストレンジアトラクタに関する作品をどのように作っているのかについて、少し説明してみようと思う。

 一連のストレンジアトラクタ作品は、まずは魅力的なストレンジアトラクタを収穫するところから始める。これは単純な作業であり、上に示したプログラムで「いい感じ」のストレンジアトラクタが収穫できるまで、ポチポチとスペースバーを押すのみである。非常に簡単なお仕事であるが、いい感じのものが収穫できるか否かは運次第である(といっても、私が使っているまだ公開していない改良版のものは、そこそこ面白いものが収穫できる確率が上がっている - のではないかと思っている)。

スペースバーを押下すること数回。とりあえず、こんな感じのストレンジアトラクタが現れた。なかなか面白い形なので、今回はこれを題材とする。

 ストレンジアトラクタ発見用プログラムの方では、動作を軽快にするため、繰り返し回数をある程度制限している。なので、ザラザラした画像となっている。言い換えれば、繰り返しの回数を多くすると、それなりに滑らかな画像になる…場合が多い。ちなみに s キーを押下すると高解像度画像として保存されるのだが、そちらの画像はこんな感じである。

ちなみに最近投稿している Strange Attractors of the day シリーズは、こちらの高解像度画像を投稿している。発見機の画像よりも高画質であるのは、このような理屈による。

 さて、これを #つぶやきProcessing として発表していくのだが、実はそのために少し手作業で都度修正を行っている。今日はこの部分について記してみたい。以下は、まさにジェネラティブアート制作時の頭のなかの話となる。

発見機の方には、#つぶやきProcessing 用のプログラム生成機能も付けてある。これは t キーを押下すると出力されるようになっているので、早速出力させてみる。

 #StrAttrCat  Strange Attractor Catalog
# ID: MLYTXQQEDMCY
size(500,500)
clear()
stroke(176,255,255)
blendMode(ADD)
x=y=.05
for _ in [0]*(5**7):u=+0+x*(-.1+1.2*x+.7*y)+y*(+1.1+.4*y);v=+.4+x*(-.8-.9*x+0*y)+y*(-1+1.2*y);point(269*(u+0.5),277*(v+1.1));x,y=u,v

このままではザラザラな画像が生成されてしまうので、for ループの回数を増加させる。最近の経験では、大体 999,999 (約 100 万回程)計算させるといい感じになるようだ。

このプログラムでは blendMode(ADD) としており、描画では加色混合を実施している。そのため、このままでは色情報が飽和してしまうため、stroke 関数に与えている引き数を調整した方がよい(さもないと、多分、白色で描画されてしまうだろう)。

(R,G,B)=(176,255,255) を単純に 1/10 にするといい感じになるようだ。なので、(R,G,B)=(17,25,25) としてみる。

 #StrAttrCat  Strange Attractor Catalog
# ID: MLYTXQQEDMCY
size(500,500)
clear()
stroke(17,25,25)
blendMode(ADD)
x=y=.05
for _ in range(999999):u=+0+x*(-.1+1.2*x+.7*y)+y*(+1.1+.4*y);v=+.4+x*(-.8-.9*x+0*y)+y*(-1+1.2*y);point(269*(u+0.5),277*(v+1.1));x,y=u,v

 粒状感も消え、それなりにいい感じになってきた。しかし、色が単調である。加色混合の良いところは、1 色を使っていても、飽和する部分は白色となる点である。つまり、飽和するに従い白色という色がもう一色現れてくることに他ならず、これがより複雑な表現を生み出す。

そのためには白に近い色は避けなければならない。なので、(R,G,B)=(17,25,25) から、赤と緑の成分をぐっと低くして (R,G,B)=(2,9,25) などとして描画してみる。青を多くしているのは、この形の場合、青いほうが良さそうだ、という主観による方針であり、論理的根拠などは一切ない。色については、感性の赴くままに決定している。

 #StrAttrCat  Strange Attractor Catalog
# ID: MLYTXQQEDMCY
size(500,500)
clear()
stroke(2,9,25)
blendMode(ADD)
x=y=.05
for _ in range(999999):u=+0+x*(-.1+1.2*x+.7*y)+y*(+1.1+.4*y);v=+.4+x*(-.8-.9*x+0*y)+y*(-1+1.2*y);point(269*(u+0.5),277*(v+1.1));x,y=u,v

 …少し赤と緑の成分を減らしすぎてしまったようだ。飽和して白くなる部分がかなり減ってしまった。そして現れてきた白い部分もあまり目立たない状態となってしまっている。これでは絵としてあまり面白いものではない。なので、もう少し stroke の引数を調整する。

 #StrAttrCat  Strange Attractor Catalog
# ID: MLYTXQQEDMCY
size(500,500)
clear()
stroke(4,9,20)
blendMode(ADD)
x=y=.05
for _ in range(999999):u=+0+x*(-.1+1.2*x+.7*y)+y*(+1.1+.4*y);v=+.4+x*(-.8-.9*x+0*y)+y*(-1+1.2*y);point(269*(u+0.5),277*(v+1.1));x,y=u,v

 なんとなく良い感じになってきたが、もう少しコントラストが欲しい。加色混合であるため、for ループに指定する回数はカメラでいうところの露出時間のようなものである。なので、もう少し描画色を暗くして、計算回数を多くしてみる(約 2  倍にしてみる)。

 #StrAttrCat  Strange Attractor Catalog
# ID: MLYTXQQEDMCY
size(500,500)
clear()
stroke(2,3,16)
blendMode(ADD)
x=y=.05
for _ in range(1999999):u=+0+x*(-.1+1.2*x+.7*y)+y*(+1.1+.4*y);v=+.4+x*(-.8-.9*x+0*y)+y*(-1+1.2*y);point(269*(u+0.5),277*(v+1.1));x,y=u,v

 コントラストが上がってきたため、このストレンジアトラクタが持つ複雑な構造も浮かび上がった作品となった。良い感じである。今回はこれにて完成、ということにしよう。

 最後に #つぶやきProcessing として作品を公開して終了である。

 今回は少し時間がとれたので、最近発表しているストレンジアトラクタに関する #つぶやきProcessing 作品の作り方を説明した。魅力的なストレンジアトラクタの画像を生成することは、今の私のプログラムでは全自動で行うことができず、このような試行錯誤を行っている。ここ最近発表している作品は、決して、全自動で機械的に投稿を行っているわけではない(簡単ではあるが、一応、私もちょっぴり考えつつ tweet を行っているのだ)。

 手作業で行っている部分も含めて、全自動で行うことができれば…と思っているが、どこまで自動化できるものであろうか。ちなみに、「面白い」ストレンジアトラクタの発見プログラムの方は、いくつか工夫を施しており、こちらについてはどこかで発表しようと思っている(芸術科学会の NICOGRAPH あたりが良いだろうか…)。そのため、現時点ではまだ発表できないが、いずれ落ち着いたら、より高機能版も公開できれば…と思っている状況である。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?