見出し画像

プログラムで入道雲の動画を作る

 #AltEdu2022 も無事終わったので、今日は、先日発表した入道雲の静止画作品を動画にしてみようと思う。

ざっと、setup と draw 関数を書いてみるとこんな感じになる。frameCount の値をノイズ関数の引数に使うことにより、アニメーションを実現する。

def setup():size(500,700);noStroke()
def draw():
  f=frameCount*.1
  background(80,140,200)
  for i in range(700*700):
    x,y=600-i%700,700-i/500
    t=noise(x*.01,y*.01,f)*dist(0,0,x,y)/190-.5
    fill(200+random(50),t*9);circle(x+t*50,y+t*40,t*20)
    fill(-1,t*30);circle(x,y,t*20)

 実際に実行させてみるとわかるが、生成される画像は美しいのだが(自画自賛だ)、描画が非常に遅い。

滑らかなアニメーションには程遠いので、計算負荷を下げなければならない。そのため、5 ドットづつ飛び々々で描画するようにする。

def setup():size(500,700);noStroke()
def draw():
  f=frameCount*.01
  background(80,140,200)
  for i in range(100*140):
    x,y=100-i%100,140-i/100
    t=noise(x*.01,y*.01,f)*dist(0,0,x,y)/40-.5
    fill(200+random(50),t*9);circle(x*5+t*50,y*5+t*40,t*20)
    fill(-1,t*30);circle(x*5,y*5,t*20)

滑らかにアニメーションするようになったが、雲の表情があまり面白くない。これはノイズ関数に与える引数の変化があまり無い場合に発生する現象である。このような場合は変化の程度を大きくすると改善するので、x,y それぞれに0.01 を掛けるのではなく 0.03 を掛けるようにする(変化量を 3 倍にして様子をみる訳である)。

def setup():size(500,700);noStroke()
def draw():
  f=frameCount*.01
  background(80,140,200)
  for i in range(100*140):
    x,y=100-i%100,140-i/100
    t=noise(x*.03,y*.03,f)*dist(0,0,x,y)/40-.5
    fill(200+random(50),t*9);circle(x*5+t*50,y*5+t*40,t*20)
    fill(-1,t*30);circle(x*5,y*5,t*20)

なかなか良い感じになってきた。

 とはいうものの、もう少し魅力的にしたい。明け方や夕方などの雲をよく見ると、陰部分が少し橙色を帯びていることがある。それが非常に美しいので、その要素を追加する。

このアルゴリズムでは、円をずらしつつ右下から左上に描画している。最初に描く円が陰部分を担うので、その色を調整する。その他にもパラメータをいくつか調整すると、次のようなプログラムが出来上がった。

def setup():size(500,700);noStroke() # by @KojiSaito, 2022.
def draw():
 background(80,140,200)
 f=frameCount*.005
 for i in range(110*140):
    x,y=100-i%110,140-i/110
    t=noise(x*.03+f,y*.03-f,f*5)*dist(0,0,x,y)/30-.5
    fill(190+random(9),180,170,t*6);
    circle(x*5+t*50,y*5+t*40,t*20)
    fill(-1,t*30);circle(x*5,y*5,t*20)

非常に良くなった。実際のアニメーションはこんな感じである。

 当然、#つぶやきProcessing 化を目指したく鳴るが、このままでは駄目であった。背景を黒にすることでなんとか #つぶやきProcessing として発表できたが、やはり表現力は落ちてしまった。

…と、こんな感じに既存の静止画作品を動画として生まれ変わらせてみた。ノイズ関数の使い方などの参考になれば幸いである。


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

私の作品紹介

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