Gallery 1では,「通常法」で描いた画像を紹介しています。
基本は点描法

Gallery 1で紹介する画像は,「特に何の決め事もなく」,思いついた形や色をキャンバス内に描いていったものです。つまり普通に絵を描く場合と同じです。描画する手続きはきわめて簡単で,「ある場所(座標)に」,「ある色の」,「ある大きさを持つ」小さい点(円)を描く。これを必要なだけ行い,全体が絵として見えるようにする,というものです。すなわち,「点描」の方法です。ほとんどの画像はPythonのライブラリtkinterだけで描いています。
手描きの味を出したい
作者はコンピュータで作画を始めた頃から,幾何学的にきっちりした形や境界を持っているものではなく,人間が手で描いたような味のあるものを作りたいと思っていました。
最初の頃,練習問題として設定したのが,「セザンヌのリンゴを描く」でした。
巨匠中の巨匠セザンヌは多くの静物画を残しており,リンゴなどが描かれています。そっくり真似るのは到底無理なので,次のようなものを作画するプログラムを作ろうと思いました。
「線が幾何学的ではなく,ゆらぎ・歪みがある」「グラデーションがある」「影がある」




出発点として同心円を描くことを考え,最初に作図したのが「試作1」です。色は判りやすくするために原色としていますが,これの色を変えていっても到底目標のものはできそうにありません。
そこで次に考えたのが,点描をする際の一つの点の位置や大きさにゆらぎを持たせることです。これは乱数を用いれば(Pythonならモジュールrandomを用いれば)コード化できます。同心円を3個にし,色を中間色的にし,位置にゆらぎを持たせないのが「試作2」,位置にゆらぎを持たせたのが「試作3」です。
これでも目標には程遠く,手描きの味というより,単に下手に描いた絵という印象です。
そこで行ったのが,同心円の輪郭(つまり半径)に比較的大きな範囲での変化を与えるということです。これは,モノの外周の一部を引っ張ったり押したりしたときにモノが変形する,そのような効果を与えようということです。この方法の説明は若干長くなるので,「Methods」に述べました。結果として,この「押したり引っ張ったりした感じ」を加えると,何となく手で描いたような形となりました。その後,点の間隔と大きさを調整し,色をリンゴのようにしたのが「試作4」,影と光沢を加えたのが冒頭に載せた「セザンヌのリンゴ(習作)」です。かなり前に描いたものですが,その後の当工房の作画法の元になった作品です。
同心円と波でアボリジニアート風に描く

アボリジニアートは近年とても有名になった人気のあるアートです。とても複雑な構造を持っていますが,同心円が多く使われていることから,「セザンヌのリンゴ」を描いていたのと同時期に,このアボリジニアートの雰囲気をもったものを描いてみようと思いました。
同心円に加え,もう一つの要素として,「波」を描くルーチンを考えました。アボリジニアートの構成要素には実生活に関係する意味があり,「同心円」は何らかの場所,「波」は流れる水を意味するとのことです。
同心円を描く方法は「2 手描きの味を出したい」で述べたとおりです。
波は,数学に出てくるサインカーブ(正弦関数)をPythonのmathモジュールから利用し,画面上の2点をつなぐ直線に沿って,ある波長とある振幅のサインカーブを作り,そのカーブの上に点を順次配置していく方法で描きました。
上の「コンポジション・アボリジニアート風」は,ほぼ一番最初に描いた作品です。同心円と波のみで,アボリジニアートの複雑さや迫力には遠く及びませんが,何となくファンキーな味があって自分では気に入っています。
その後考えたことは,背景を埋める要素をもっと複雑にしたいということです。あまり複雑なものは難しいので,作画法ができている同心円を利用し,同心円を「大きく歪んだ形」「背景にうまくはめ込める形」に変形し,それを配置してみました。大きく歪ませるルーチンは,先に「2 手描きの味を出したい」で説明した「輪郭を押したり引いたりする操作」と同じで,かける度合を強くしただけです。
出来上がった作品を,「コンポジション・アボリジニアート風A」,「同B」に示します。コーディングで描くことの利点は,各要素の描画ルーチンを作ってしまえば,それを配置する座標・個数の値を変えるだけで画面構成を変えられることです。色も簡単に変えられるので,A,Bそれぞれの背景の色違いも載せてみました。




下の作品は,構成要素の数を減らして若干単純化したものです。当方の目標の一つに,日用品にプリントできるものを作成することがあるので,小さくプリントしても解像度の範囲内に収まるようにこれらを作りました。




かすれさせる・途切れさせる
画家が絵を描く際には種々の技法を駆使しますが,タッチ(筆致)を残したり強調したりすることが絵画の大きな魅力だと思います。コンピュータではなかなか真似できない部分ですが,画家のタッチには遠く及ばずとも,手で描いた感じに多少でも近づける方法はないものかと考え,色を塗る際ににわざとかすれさせたり途切れさせたりすることを試みました。
最も単純な方法として,点描をする際に「塗らない回をつくる」ということを行ってみました。
なお,以下に紹介する画像の中には,方法としてGallery 2の「小領域法」を用いているものもあります。
2次元平面内に描画することを単純化すると,(i, j)という二つのパラメータで二重ループを作り,点を描くコマンドを実行するということです。その際に乱数を用いて,点を描くコマンドの直前に,たとえば
・1~Nまでの乱数を発生させよ
・発生した乱数がM以下なら描け(M<N)
という処理を入れれば,点は描かれたり描かれなかったりします。
これをプログラムの中にいろいろな形で取り入れて,筆や刷毛で描いたときにかすれたり途切れたりする感じに近いものを作ることを試みました。
実はこれまでに紹介してきた画像の中でもこれは用いています。「セザンヌのリンゴ」や「アボリジニアート風」の背景は,ある色の上に別の色を非常に細かい間隔で塗ったり塗らなかったりして描いており,その結果梨地のようになっています。
この方法を強調して用いたのが下の画像です。これらは塗る/塗らないの選択を方向や場所に依存しないようにした場合で,点の大きさや点を塗る頻度によっては,ざらざらした石の表面のような感じにもなります。




塗る/塗らないの選択に方向性をつけると別の表現ができます。
同心円やらせんを描く際にはパラメータは(r, θ)となります(rは半径,θは角度)。「あるrに対してθを変化させて描き,θを変える際に点を塗る/塗らないの乱数処理を行う」ことにすると,下のような表現ができます。これは波を描く際にも同様に適用できます。最後の絵はこの処理を取り入れて描いたもので,ゴッホの有名な「星月夜」の雰囲気を非常に初歩的なレベルで真似てみたものです。




下の図は,はけで壁を塗った際に最後がかすれていくような表現を目指したものです。
これは塗る/塗らないの選択を方向と場所両方に依存するようにしたものです。壁を上から下に塗っていくことを(i, j)のjを変化させることでコード化する際,jがある程度以上増えたらそこから塗る頻度を減らしていくようにプログラムを書きました。減らしていく度合を数学的曲線でうまく設定すると,途中からかすれていく度合いや端の形などを調整できます。




画家の表現には遠く及ばないものの,pix2pixなどを用いない手続き型のプログラムで,しかも比較的簡単なアルゴリズムでできる範囲の技法としてこれらを作りました。
当工房ではよく用いる技法です。
