ProcessingのP3Dレンダーの練習作です。
超力技。
(´Д`)
https://youtu.be/JI1YM9MuXVA
float x,z; static float dx = 4; static float dz = 4; static float DEST = -25000; void setup() { size(400, 400, P3D); textSize(16); x = width/2; z = -200; } void draw() { background(0); if (keyPressed) { if (keyCode == UP) { z -= dz; } if (keyCode == DOWN) { z += dz; } if (keyCode == LEFT) { x -= dx; } if (keyCode == RIGHT) { x += dx; } if (key == 'r') { x = width/2; z = -200; } } pushMatrix(); camera(x, height/2, 200, width/2, height/2, z, 0, 1, 0); // noSmooth(); // 空間を表現する地表面の線を引く stroke(0, 255, 0); line(0, height, 100, 0, height, DEST); line(width/4, height, 100, width/4, height, DEST); line(width/2, height, 100, width/2, height, DEST); line(width/4*3, height, 100, width/4*3, height, DEST); line(width, height, 100, width, height, DEST); for (int cnt=0; cnt>=DEST; cnt-=100) { line(0, height, cnt+(frameCount%100), width, height, cnt+(frameCount%100)); } // 白Cube stroke(200); fill(255); translate( width/2, height/2, z); lights(); rotateY(radians(frameCount%360)); box(150, 150, 150); // 白Cubeの影(ちゃんとレンダリングしてるわけではない、なんちゃって影) noStroke(); rectMode(CENTER); fill(128,128,128,220); translate( 0, height/2-1, 0); rotateX(PI/2); rect(0, 0, 150, 150); // 情報表示 popMatrix(); text("FRAME RATE(sec/frame): "+frameRate, 0, 16); text("x = "+x, 0, 32); text("z = "+z, 0, 48); //println(frameRate); }
0 件のコメント:
コメントを投稿