1225

Twitter:@dn0t_ GitHub:@ogrew

【週刊p5js】work19

f:id:taiga006:20200705000011j:plain

function setup() {
    createCanvas(900, 900, WEBGL);    
    noLoop();
    smooth();
    pixelDensity(3);
    ortho();
    background(35);
}

function draw() {
    let rx = random(0, 45);
    let ry = random(0, 45);
    let rz = random(0, 45);
    
    let c1 = random(100, 200);
    let c2 = random(100, 200);
    let c3 = random(150, 250);
    
    ambientLight(100);  

    let margin = 0;
    let rangeX = width - margin * 2;
    let rangeY = height - margin * 2;

    let size = 30;

    let cntX = floor(rangeX/size);
    let cntY = floor(rangeY/size);

    for(let i = 0; i <= cntX; i++) {
        x = -rangeX/2 + i * size;
        for(let j = 0; j <= cntY; j++) {   
            y = -rangeY/2 + j * size;   
                        
            push();
            translate(x, y, 0);

            let p = 0;
            let r = random();
            if(r < 0.25) {
                p += size;
            } else if(r < 0.5) {
                p -= size;
            } else {
                p = 0;
            }

            let c = random();
            let flag = false;
            if(c < 0.025) {
                noStroke();

                directionalLight(c1, c2, c3,   0.25,   0.25, 0); // left
                directionalLight(c2, c3, c1,   -0.55,   0.35, 0);
                directionalLight(c3, c1, c2,   -0.45,  -0.15, -0.3);

                flag = true;
            
                // ambientMaterial("#FF2E63");
                // ambientMaterial("#b8d00a");
                // ambientMaterial("#2BDE73");
                ambientMaterial("#FF9933");
            } else if (c < 0.05) {
                noStroke();

                directionalLight(c2, c3, c1,   0.25,   0.25, 0); // left
                directionalLight(c3, c1, c2,   -0.55,   0.35, 0);
                directionalLight(c1, c2, c3,   -0.45,  -0.15, -0.3);

                flag = true;
            
                // ambientMaterial("#08D9D6");
                // ambientMaterial("#f67504");
                // ambientMaterial("#00A0FF");
                ambientMaterial("#333366");
            } else {
                stroke(175);
                noFill();
            }

            rotateX(rx);
            rotateY(ry);
            rotateZ(rz);

            if(random() < 0.6 || i == 0 || j == 0 || i == cntX || j == cntY) {
                if(random() < 0.8) {
                    box(size);
                } else {
                    let v = ceil(random(1,12));
                    if(random() < 0.5 && flag == true) {
                        sphere(size * 0.8);
                    } else {
                        box(size, size * v, size);                        
                    }
                }
            }
            pop();
        }
    }
}

今週の作品メモ

📌 p5jsのWEBGLモードでOrthographic projection(正投影図)できたんですね!!!!!という感動で作りました。
p5js.org 📌 サクッと作った作品ですが、結局配色に悩んで1時間位消費しました…。沼だ…。
📌 このwireframeが折り重なることで幾何学模様ができる感じ面白いことを見つけました。

今週の雑談

📌 全国の劇場で期間限定でジブリ作品が上映しているとのことで、上映4作品の内、見たことがなかった「ゲド戦記」を見てきたんですがとても良かったです。

📌 ドングルを購入したので、いよいよNotchをはじめました。わからないことだらけですが、楽しいです。

📌 永井一正さんの作るポスターが好きで購入しました。非常に満足しています。これをp5jsなどでカバーできたらいいなあ。

今週のラジオ