Processingのサンプルを参考にコードを書いた。(立方体: 回転、拡大、照明の調整)
改良点
マウスを右にドラッグすることで、立方体が明るくなります。マウスを左にドラッグすることで、立方体が暗くなります。
"0.25"の値を変えることで、増加の割合を調節できます。
valuex += (mouseX-pmouseX)*0.25;
表現の軸
現時点では、以下のような「表現の軸」と呼べるようなものがあります。
1. マウスの縦方向の移動による、立方体の辺の長さに関する軸。
2. マウスの横方向の移動による、立方体の回転速度に関する軸。
3. マウスの横方向のドラッグ操作による、照明の光の強さに関する軸。
このマウスというインターフェースが生み出す「表現の軸」について、考えていきたいと思います。
コード
PImage tex; float rotx = PI/4; float roty = PI/4; int valuex = 0; int valuey = 126; void setup() { size(809, 500, P3D); tex = loadImage("01.JPG"); textureMode(NORMALIZED); fill(255); stroke(color(44,48,32)); } void draw() { int ColorValue = #dddddd; background(ColorValue); noStroke(); directionalLight(valuey, valuey, valuey, 0, 0, -1); ambientLight(10+valuex, 10+valuex, 10+valuex); translate(width/2.0, height/2.0, -100); rotateX(rotx); rotateY(roty); scale(90); TexturedCube(tex, 1+mouseY * 0.002, 1); autorotate(); } void autorotate() { float rate = 0.01; float speed = mouseX * 0.02; rotx += speed * rate; roty += speed * rate;; } void NoTexturedCube(float i, int type) { beginShape(QUADS); CubeFace c1 = new CubeFace(); if(type == 1){ c1.PZface(i); c1.MZface(i); c1.BYface(i); c1.TYface(i); c1.RXface(i); c1.LXface(i); } else if(type == 2){ c1.PZface(i); c1.BYface(i); c1.RXface(i); } else{ c1.MZface(i); c1.BYface(i); c1.LXface(i); } endShape(); } void TexturedCube(PImage tex, float i, int type) { beginShape(QUADS); texture(tex); CubeFace c1 = new CubeFace(); if(type == 1){ c1.PZface(i); c1.MZface(i); c1.BYface(i); c1.TYface(i); c1.RXface(i); c1.LXface(i); } else if(type == 2){ c1.PZface(i); c1.BYface(i); c1.RXface(i); } else{ c1.MZface(i); c1.BYface(i); c1.LXface(i); } endShape(); } class CubeFace { void PZface(float i) { vertex(-i, -i, i, 0, 0); vertex( i, -i, i, i, 0); vertex( i, i, i, i, i); vertex(-i, i, i, 0, i); } void MZface(float i) { vertex( i, -i, -i, 0, 0); vertex(-i, -i, -i, i, 0); vertex(-i, i, -i, i, i); vertex( i, i, -i, 0, i); } void BYface(float i) { vertex(-i, i, i, 0, 0); vertex( i, i, i, i, 0); vertex( i, i, -i, i, i); vertex(-i, i, -i, 0, i); } void TYface(float i) { vertex(-i, -i, -i, 0, 0); vertex( i, -i, -i, i, 0); vertex( i, -i, i, i, i); vertex(-i, -i, i, 0, i); } void RXface(float i) { vertex( i, -i, i, 0, 0); vertex( i, -i, -i, i, 0); vertex( i, i, -i, i, i); vertex( i, i, i, 0, i); } void LXface(float i) { vertex(-i, -i, -i, 0, 0); vertex(-i, -i, i, i, 0); vertex(-i, i, i, i, i); vertex(-i, i, -i, 0, i); } } void mouseDragged(){ valuex += (mouseX-pmouseX)*0.25; }