バージョン情報
processing 2.2.1 , windows 8.1
processingで3Dお絵かきに挑戦。
いきなりcamera周りでつまづいたので、camera周りをメモ。
リファレンスによると
camera(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ)
eye:カメラの座標
center:表示中心座標
up:表示する向き
これでcameraの配置の仕方がなんとなくわかった気がする。
全体のソース
PShape box1; PVector v_origin, v_center, v_camera; void setup(){ size(500,500,P3D); v_origin = new PVector(0.0,0.0,0.0); v_center = new PVector(250.0,250.0,0.0); v_camera = new PVector(500.0,500.0,500.0); box1 = createShape(BOX,80,50,100); box1.translate(400,100,50); } void draw(){ background(200); //カメラ位置のBoxを描画 noFill(); strokeWeight(1); stroke(0,0,0); translate(v_camera.x/2, v_camera.y/2, v_camera.z/2); box(v_camera.x, v_camera.y, v_camera.z); translate(-v_camera.x/2, -v_camera.y/2, -v_camera.z/2); noStroke(); //カメラ位置 fill(255,255,0); translate(v_camera.x, v_camera.y, v_camera.z); sphere(10); translate(-v_camera.x, -v_camera.y, -v_camera.z); //表示中心位置 fill(0,255,255); translate(v_center.x, v_center.y, v_center.z); sphere(20); translate(-v_center.x, -v_center.y, -v_center.z); //原点位置 fill(255,0,255); sphere(20); //XYZ方向 strokeWeight(3); stroke(255,0,0); line(v_center.x,v_center.y,v_center.z,v_center.x+100,v_center.y,v_center.z); stroke(0,255,0); line(v_center.x,v_center.y,v_center.z,v_center.x,v_center.y+100,v_center.z); stroke(0,0,255); line(v_center.x,v_center.y,v_center.z,v_center.x,v_center.y,v_center.z+100); //オブジェクト配置 shape(box1); //カメラ配置 camera(v_camera.x, v_camera.y, v_camera.z, v_center.x,v_center.y,v_center.z, 0.0, -1.0, 0.0); }