//week13_1_processing_video
//Sketch - Libarary - Manage Libararies import processing.video.*;//Jave 使用外掛的匯入 //有視訊鏡頭 Capture video; Movie movie;//沒鏡頭改用這個 void setup() { size(640,960); video = new Capture(this,640,480); video.start();//打開視訊 movie = new Movie(this,"street.mov"); movie.loop(); } void draw() { if(video.available())video.read(); image(video,0,480); if(movie.available())movie.read(); image(movie,0,0); }
//week13_2_camera_movie_eye_center_up //繪圖時會設定camera相關係數 import processing.video.*;//影片外掛匯入 Movie movie; void setup() { size(720, 480, P3D);//影片解析度 720*480 movie = new Movie(this, "street.mov"); movie.loop(); } void draw() { background(127); //eyeX,eyeY,eyeZ,centerX,centerY,centerZ,upX,upY,upZ camera(mouseX, mouseY, 500, 360, 240, 0, 0, 1, 0); //把影片中心當主角 if (movie.available())movie.read(); image(movie, 0, 0); }
//week13_3_texture_textureMode_beginShape_vertex_endShape //把貼圖加進去 PImage img; void setup() { size(400, 400, P3D); img = loadImage("chessboard.png"); textureMode(NORMAL); } //1.用最簡單的NORMAL畫 2個三角形 不像3D透視效果 void draw() { background(128); beginShape(); texture(img); vertex(40, 80, 0, 0);//4個頂點 vertex(320, 20, 1, 0); vertex(380, 360, 1, 1); vertex(160, 380, 0, 1); endShape(); }
//week13_4_camera_chessboard_texturefront_left //把貼圖跟camera整合再一起 PImage img; void setup() { size(400, 400, P3D); img = loadImage("chessboard.png"); textureMode(NORMAL); } void draw()//攝影機往前方看,左右、前後移動 { camera(mouseX, 200, mouseY, mouseX, 200, mouseY-10, 0, 1, 0); background(128); beginShape();//正前方 texture(img); vertex(0, 0, 0, 0, 0);//x,y,z, u,v vertex(400, 0, 0, 1, 0); vertex(400, 400, 0, 1, 1); vertex(0, 400, 0, 0, 1); endShape(); beginShape();//左方 texture(img); vertex(0, 0, 0, 0, 0);//x,y,z, u,v vertex(0, 400, 0, 1, 0); vertex(0, 400, 400, 1, 1); vertex(0, 0, 400, 0, 1); endShape(); }
//13_5_camera)ekyPressed_ceyCode_x_y_z_angle_cos_sin //利用方向鍵移動主角 //修改自week13_4_camera_chessboard_texturefront_left PImage img; void setup() { size(400, 400, P3D); img = loadImage("chessboard.png"); textureMode(NORMAL); } float x=200, y=200, z=200, angle=180; void keyPressed() { if(keyCode==LEFT) angle--; if(keyCode==RIGHT) angle++; if(keyCode==UP) { x+=cos(radians(angle)); z+=sin(radians(angle)); } if(keyCode==DOWN) { x-=cos(radians(angle)); z-=sin(radians(angle)); } } void draw()//攝影機往前方看,左右、前後移動 { if(keyPressed)keyPressed();//按下後會持續更新 camera(x,y, z,x+cos(radians(angle)), y, z+sin(radians(angle)), 0, 1, 0); background(128); beginShape();//正前方 texture(img); vertex(0, 0, 0, 0, 0);//x,y,z, u,v vertex(400, 0, 0, 1, 0); vertex(400, 400, 0, 1, 1); vertex(0, 400, 0, 0, 1); endShape(); beginShape();//左方 texture(img); vertex(0, 0, 0, 0, 0);//x,y,z, u,v vertex(0, 400, 0, 1, 0); vertex(0, 400, 400, 1, 1); vertex(0, 0, 400, 0, 1); endShape(); }按上下左右會轉方向/縮放
//week13_6_combine_all_Movue_Capture_PImage_camera_sin_cos_P3D //今天教得全加進來 //street.mov 跟 chessboard.png 拉進來 import processing.video.*; Movie movie; PImage img; void setup() { size(400,400,P3D); movie = new Movie(this,"street.mov"); movie.loop(); img = loadImage("chessboard.png"); textureMode(NORMAL); video = new Capture(this,640,480); video.start(); } Capture video; void draw() { camera(200,200,200,200+cos(radians(frameCount)),200,200+sin(radians(frameCount)),0,1,0); background(128); if(movie.available())movie.read(); beginShape();//正前方的牆 texture(img); vertex(0, 0, 0, 0, 0);//x,y,z, u,v vertex(400, 0, 0, 1, 0); vertex(400, 400, 0, 1, 1); vertex(0, 400, 0, 0, 1); endShape(); translate(0,0,1); image(movie,0,0,360,240); if(video.available())video.read(); beginShape();//左邊的牆,直接放視訊 texture(video); vertex(0, 0, 0, 0, 0);//x,y,z, u,v vertex(0, 400, 0, 1, 0); vertex(0, 400, 400, 1, 1); vertex(0, 0, 400, 0, 1); endShape(); }
會不停旋轉
顯示街道影片與視訊鏡頭畫面
沒有留言:
張貼留言