。視訊、投影、運鏡
1. 匯入函式庫,打開視訊鏡頭
Sketch - Library - Manage Libraries - Video Library for processing
//week13_01_video
//Sketch - Library - Manage Libraries - Video Library for processing
import processing.video.*; //匯入video函式庫
Capture video; //宣告視訊變數video
void setup(){
size(640, 480);
video = new Capture(this, 640, 480);
video.start();//打開視訊
}
void draw(){
video.read();
image(video, 0, 0);
}
2.使用視訊檔mov
//week13_02_movie //Sketch - Library - Manage Libraries - Video Library for processing import processing.video.*; //匯入video函式庫 //Capture video; //宣告視訊變數video Movie movie; void setup(){ size(640, 480); //video = new Capture(this, 640, 480); //video.start();//打開視訊 movie = new Movie(this, "street.mov"); movie.loop(); } void draw(){ //video.read(); movie.read(); // image(video, 0, 0); image(movie, 0, 0); }執行結果:
3. camera攝影機
import processing.video.*; Movie movie; void setup(){ size(720, 480, P3D); movie = new Movie(this, "street.mov"); movie.loop();//循環播放 } void draw(){ background(128); camera(mouseX,mouseY,500, 360,240,0, 0,1,0); //camera(eyeX,eyeY,eyeZ,centerX,centerY,centerZ,upX,upY,upZ) if(movie.available()) movie.read(); image(movie,0,0); }執行結果:4.貼圖//week13_03_texture_textureMode_NORMAL PImage img; void setup(){ size(400,400,P3D); img = loadImage("chessboard.png"); //讀入圖檔 textureMode(NORMAL);//貼圖模式 } void draw(){ background(128); beginShape(); texture(img); vertex(40, 80, 0, 0); vertex(320, 20, 1, 0); vertex(380, 360, 1, 1); vertex(160, 380, 0, 1); endShape(); }執行結果:4.貼圖&攝影機搭建場景//week13_04_camera_chessboard_texture //將texture和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(); beginShape(); texture(img); vertex(400, 0, 0, 0, 0); //x, y, z, u, v vertex(400, 400, 0, 1, 0); vertex(400, 400, 400, 1, 1); vertex(400, 0, 400, 0, 1); endShape(); }5.利用鍵盤事件控制攝影機//week13_05_camera_chessboard_texture_keypressed //將texture和camera整合 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(){ //camera(mouseX, 200, mouseY, mouseX, 200, mouseY-10, 0, 1, 0); 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(); beginShape(); texture(img); vertex(400, 0, 0, 0, 0); //x, y, z, u, v vertex(400, 400, 0, 1, 0); vertex(400, 400, 400, 1, 1); vertex(400, 0, 400, 0, 1); endShape(); }執行結果:6.整合一堆地13周所有程式碼...//week13_06_ //整合第13周內容 import processing.video.*; PImage img; Movie movie; Capture video; 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(); } float x = 200, y = 200, z = 200, angle = 270; 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); if(movie.available())movie.read(); beginShape(); //正前方的牆 texture(img); vertex( 0, 0, 0, 0, 0); vertex(400, 0, 0, 1, 0); vertex(400, 400, 0, 1, 1); vertex( 0, 400, 0, 0, 1); endShape(); image(movie, 0, 0, 360, 240); if(video.available())video.read(); beginShape(); //左側的牆 texture(video); vertex(0, 0, 0, 0, 0); vertex(0, 400, 0, 1, 0); vertex(0, 400, 400, 1, 1); vertex(0, 0, 400, 0, 1); endShape(); }執行結果:






沒有留言:
張貼留言