Processingで良い感じのGenerative Design作ってください、とChatGPTにお願いしてみた
Processingを久々に触ってみようと思い、諸々サンプルを見ていたけども、どうもコードを描く気分になれなかったので、ふと思い立って話題のChatGPTにコーディングをお願いしてみた
どうみてもチュートリアルの一番初めに使うようなコードなので、もう一度問い直してみる。
"簡単なものではなく、より複雑なものを生み出すコードを教えてください"と。
"ランダムに生成されたベクトルを用いて曲線を作成し反復させてフラクタル云々。。。"って喋り出して、少しテンションが上がる。
そして実行結果はこれ
え、ちっさ、ほぼ点やんけ。。。となる。
ちなみに生成されてProcessingで実行したコードはこれ
float angle = 0; float scalar = 5; int iterations = 10; void setup() { size(500, 500); background(0); } void draw() { stroke(255, 50); strokeWeight(1); translate(width/2, height/2); float prevX = 0; float prevY = 0; for (int i = 0; i < iterations; i++) { float x = scalar * cos(angle); float y = scalar * sin(angle); line(prevX, prevY, x, y); prevX = x; prevY = y; angle += random(0, PI/2); scalar *= 0.99; } }
画面サイズに対してscalarの値がどう考えても小さかったり、生成過程はなるほど、と思えるものなのになんか惜しい。ベクトルの大きさを決めるscalarとそれを減衰させる処理の部分が気に食わなかったので、scalar=200, scalar*=0.9998, iteration=100 に調整して再実行してみた。
良い感じになった。
ベクトルをランダムに回転させながら大きさを減衰させ、前後のベクトルの終点を直線で結ぶを反復することで描かれた図形。
ChatGPTをまともに使おうとしたことなかったけども、普通にチューニングすれば横から口出ししてくれるアドバイザー的な感覚で使えるのでは?と思えてくるような結果だった。
ちなみに調子に乗って "processingでライフゲームを表現するコードを教えてください" と聞いてみたが、途中で何かの制限に引っかかったのかコードの生成が止まってしまった。
コード生成は終わらなかったけども、 "以下は、Processingでライフゲームを表現するためのコード例です。ライフゲームは、セルオートマトンの一種であり、単純なルールに基づいて進化する細胞集合をシミュレートします。" と回答してきており、これまた期待できそうな気配を醸し出してはいた。
もうちょいGenerative Art, Designの領域でChatGPT使って遊んでみたいと思った月曜日の夜だった。