![見出し画像](https://assets.st-note.com/production/uploads/images/29709078/rectangle_large_type_2_43a4b8058e18c82530cdfd382b815b03.png?width=1200)
2020年6月のジェネラティブアート
趣味のジェネラティブアートの記録を残しておくため、一ヶ月の活動をnoteにまとめてみる。ProcessingやGLSL、先々月からSonic Piにも手を出したりと雑然としてきているので、ジェネ系でひとくくりにしてみました。
まず6月前半は、5月末に始めたSonic Piを触っていました。印象としては「音のProcessing」みたいな感じ。ベースの言語はRuby。
音を使ってなにかやりたい... という思いが募ったのでSonic Piに入門します!
— ryotako (@ryotakob) May 22, 2020
(って宣言しないといつまでもやらないからな私...) pic.twitter.com/OJfO7UkT8B
フランソワ・デュボワ「作曲の科学」を読んで、和音やコード進行について知ったので、コード進行を固定して乱数で演奏したりしました。思った以上にいい感じ。
今日のSonicPi。
— ryotako (@ryotakob) June 10, 2020
フランソワ・デュボワ「作曲の科学」に載ってた、「日本でひんぱんに使われているコード進行」から乱数で演奏#SonicPi pic.twitter.com/TqAL97zDoH
その後の6月15日(だったはず)、Processing Community Japanによる不定期雑誌、PCJ Zineが創刊。
これを読んで、Processingやりたい欲が高まってきたので、Sonic Piは一旦置いて、6月中旬はProcessingしてました。
set()を覚えたので擬似シェーダーみたいなことができて楽しい https://t.co/U4Z9gPtRWq
— ryotako (@ryotakob) June 16, 2020
f=lambda x,y:abs(sin(x)+log(y))
— ryotako (@ryotakob) June 18, 2020
g=lambda x,y,z:(f(y,z),f(z,x),f(x,y))
size(800,800)
colorMode(HSB,9,1,1)
for i in range(800):
for j in range(800):
x,y,z=g(*g(*g(i*.005,j*.005,dist(i,j,200,200)*.025)))
m=max(x,max(y,z))
set(i,j,color(x/m+5,y/m,z/m))#つぶやきProcessing pic.twitter.com/4ppoyxjyES
set()を使った擬似シェーダーのコードがいい感じで、つぶやきProcessingをいくつか投稿。
(ちなみに先月、ブラジルのProcessingコミュニティのイベントNoite de Processingで「つぶやきProcessing」がテーマになったらしく、私も動画でちょっとだけ話をさせてもらいました...! 世界に広がるつぶやきProcessing! スライドがこちらで公開されてます)
Processingの擬似シェーダーは楽しいものの、全ピクセル書き換えは流石に時間がかかるので、コードをGLSLに移植。擬似シェーダーから本物のシェーダーへ。やはりシェーダーは描画が速い!ので、手軽に色々試せる!
これまでのやつをGLSLで書き直す。圧倒的描画速度...!
— ryotako (@ryotakob) June 20, 2020
あとこれ移植してて気づいたんだけど、GLSLのlog()関数、負の数を渡すと絶対値を取る仕様なのね pic.twitter.com/B4SC5ulLKX
NEORTにも投稿。これはコードが短い割にきれいでお気に入り。
つぶやきGLSLにもしてみました。文字数ギリギリで色を妥協したけれど、これはこれでいい感じ。
#define F(v) abs(sin(v.x+v.y*2.))#define G(v) vec3(F(v.yz),F(v.zx),F(v.xy))#define H(v) min(min(cos(v.x+1.7*v.y),cos(v.x-1.7*v.y)),cos(2.*v.x))
— ryotako (@ryotakob) June 23, 2020
void main(){vec3 p;p.xy=gl_FragCoord.xy*2./r.y;p.z=(max(H(7.*p.xy),H(10.*p.xy)))*4.;gl_FragColor=vec4(G(G(G(p))),1);} #つぶやきGLSL pic.twitter.com/b2c7BjHCrV
これまでのコードは非線形変換で複雑な模様を作ろう!というコンセプトでしたが、この模様を立体の表面につけたら面白いのでは... と思い立ち、レイマーチングとも組み合わせてみました。
今日のGLSL。球の表面に模様をつける試み。
— ryotako (@ryotakob) June 28, 2020
ぷよぷよっぽい(?)見た目になったので折角なので色もそれっぽくする。若干怖い。 pic.twitter.com/STSTNHFcvG
今日のGLSL。フラクタルもどき。
— ryotako (@ryotakob) June 30, 2020
昨日のやつをアレンジして、久しぶりにレイマーチングで影を付ける pic.twitter.com/beCpqGADCw
ぷよぷよができたり、宝石(スフェーン!)っぽくなったりしました。
さらにさらに、この複雑な非線形関数をレイマーチングの距離関数に使ったら...!? というアプローチで、いま作品を作っているところです。
!!!? これは超面白いやつなのでは...! #GLSL pic.twitter.com/s2S2MuhkVB
— ryotako (@ryotakob) July 2, 2020
これはこれでとても良い感じ。...ですが、これは詳しくは7月のジェネまとめの記事で。
以上、今月のジェネラティブアートでした。
この記事が気に入ったらサポートをしてみませんか?