
2020年12月のクリエイティブ・コーディング
今月のクリエイティブ・コーディングの、まとめ!
今月のはじめ、Twitterで「つぶやきPOVRay」なる素敵なタグを発見。
#include"https://t.co/NqfGKrCwCS"#include"https://t.co/ITSX6ga6TN"#include"https://t.co/guP1DJzGJg"camera{location<0,3,5>look_at<0,0,0>angle 40}light_source{<3,5,5>color White}difference{object{Disk_Y texture{T_Stone20}}object{Sphere scale 1.1 texture{T_Stone27}}}#つぶやきPOVRay pic.twitter.com/vUoBxCikXK
— Q͜Q͉F (@Okazu) December 3, 2020
さきほど #つぶやきPOVRay のタグで投稿されてた作品がすごかったのでPOVRayインストールしてコピペして実行して見たんだけど、すごい…!
— ryotako (@ryotakob) December 3, 2020
えっ こんなに簡単にこれが作れるの pic.twitter.com/9r61CHv8I6
POV-Rayというものの存在をそれまで知らなかったのですが、3Dレンダリングエンジンとしては有名どころらしい。ソフトウェアのインストールは簡単にできたので、マニュアルを参考にしながらさっそく使ってみました。
camera{location<0,0,-3>right x}
— ryotako (@ryotakob) December 6, 2020
light_source{<3,5,-9>1}#macro F(r)
difference{
sphere{0,r}
sphere{0,r-.05}
box{-1<-.1,1,1>}
box{<.1,-1,-1>1}
rotate r*160
pigment{rgb 1}
}#end
plane{z,2
pigment{checker rgb .4 rgb .2}}
F(1)F(.9)F(.8)F(.7)F(.6)F(.5)F(.4)F(.3)#つぶやきPOVRay pic.twitter.com/JhVvxbNCh8
制御構文はマクロみたいな書き方になるみたい。
#include "colors"#include "textures"
— ryotako (@ryotakob) December 7, 2020
camera{location<2,5,-8>right x look_at 0}
light_source{<4,5,-8>,White}
sor{10<1,-3><1,-2.9><0.3,-2.7><.15,-2.5><.1,-.2><.2,0>1<1,2><.8,3><.8,3>
texture{Glass}}
plane{z,4 texture{Aluminum}}
plane{y,-3 texture{Brushed_Aluminum}}#つぶやきPOVRay pic.twitter.com/WyjwACXKNc
リアルなワイングラスっぽいものが作れたり...
camera{location<-.3,0,-2.5>look_at 0}
— ryotako (@ryotakob) December 15, 2020
light_source{<0,2,-3>rgb.8}#macro J(a)
julia_fractal{
<0,1,0,a*.001>
max_iteration 12
precision 12
rotate a*z
translate(120-a)/200*y
pigment{rgb.1}}#end
J(60)
J(120)
plane{x.1 finish{reflection 1}}
plane{x,-5 pigment{rgb 1}}#つぶやきPOVRay pic.twitter.com/JtzYmfon6C
ごてごてしたロボットっぽいものが作れたりしました!
新しいツールを触ったときに「つぶやき〇〇」でTwitterに作品を上げるのはよい感じかも。マニュアルを1項目読んだらひとつ作品を作る... みたいにして、ワンアイディアでもとりあえず作品が作れる。
その後、Twitterのタイムラインに下記の素敵な記事が流れて来たのを見て、久々にGLSLでレイマーチングしてみることに。
記事を見ながら少しずつアレンジ。
アレンジ中… pic.twitter.com/4OM1Jj2YNA
— ryotako (@ryotakob) December 21, 2020
色付けの仕方を変更したら何やらメタリックな感じに。
メタリックな感じ #GLSL pic.twitter.com/Qy6Ea7yA8m
— ryotako (@ryotakob) December 21, 2020
楽しい pic.twitter.com/ERsOigRJ0m
— ryotako (@ryotakob) December 21, 2020
— ryotako (@ryotakob) December 21, 2020
楽しい! でもレイマーチングが久々すぎて色々忘れてしまっている感じ。
あと自分で光の処理を書くと、POV-Rayが内部ではすごいことしてるのが改めて実感できる...
以上、今月のクリエイティブ・コーディングでした!
追記
上記のGLSLの記事を元に、Processingでレイマーチングしたりもしました。当然ながら、GLSLよりはずっと時間がかかる...
size(400,400)
— ryotako (@ryotakob) December 24, 2020
for x in range(8**6):
p,i,d=[0,0,-25],0,1
while(i<99 and d>.001):
i+=1
d=(dist(0,0,dist(1,1,(p[0]-p[2])*.7,p[1])-12.,(p[2]+p[0])*.7)-5.)*.8
p=[p[0]+(x/400/200.-.8)*d,p[1]+(x%400/200.-1)*d,p[2]+d]
set(x/400,x%400,color(255*exp(-i*.1)))#つぶやきProcessing pic.twitter.com/oUFhlOtX0P
size(400,400)
— ryotako (@ryotakob) December 28, 2020
for x in range(160000):
p,i,d=[0,0,-10],0,1
while(i<99 and d>.001):
i+=1
d=(dist(0,0,0,*p)-3-log(1-p[1]*.09)+sin((p[0]-p[2])*p[1]))*.3
p=[p[0]+(x/400/200.-1)*d,p[1]+(x%400/200.-1)*d,p[2]+d]
set(x/400,x%400,color(2400./i))#つぶやきProcessing pic.twitter.com/HOYpyHTpVn