//week13-1
//Sketch Library Manage Librarics... 安裝Video
//教學在https://processing.org/tutorials/video
import processing.video.*; //java用外掛的匯入
//Capture 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(){
//if (video.available()) video.read();
//image(video, 0, 0);
if (movie.available()) movie.read();
image(movie, 0, 0);
}
-----------------------------------------------------------------------------------------
//week13-2 3D effect
//電腦圖學繪圖時,會設定camera得相關係數
import processing.video.*;
Movie movie;
void setup(){
size(600,400,P3D); //配上3D功能
movie = new Movie(this, "street.mov");
movie.loop(); //迴圈撥放 解析度為720x480
}
void draw(){
background(128);
//https://processing.org/reference/camera_.html
camera(mouseX, mouseY, 500, 360, 240, 0, 0, 1, 0);
//很多參數 eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ
//現在把影片中心點當主角
if(movie.available())movie.read();
image(movie,0 ,0);
}
--------------------------------------------------------------------------------------------------
//week13-3
//先教貼圖 之後再加進去week13-2
//https://processing.org/reference/texture_.html
PImage img;
void setup(){
size(400,400, P3D);
img = loadImage("chessboard.png");
textureMode(NORMAL); //有很多種貼圖的模式
} //先用最簡單的NORMAL來畫 兩個三角形 不像是3D透視的效果
void draw(){
background(128);
beginShape();
texture(img); //把圖片當成貼圖
vertex(40,80,0,0); //4個頂點vertex的四邊形 會裁出兩個三角形
vertex(320,20,1,0);
vertex(380,360,1,1);
vertex(160,380,0,1);
endShape();
}
----------------------------------------------------------------------------------------------
//week13-4
//把貼圖 & amera功能整合
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();
}
----------------------------------------------------------------------//week13-5
//修改自13-4
//利用方向鍵來做出移動的感覺
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));
y += sin(radians(angle));
}
if (keyCode == DOWN) {
x -= cos(radians(angle));
z -= sin(radians(angle));
}
}
void draw() {
if (keyPressed) keyPressed();
//camera(mouseX, 200, mouseY, mouseX, 200, mouseY-10, 0, 1, 0);
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
//指令合併
//streets + chessboard都拉進來
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();
}
沒有留言:
張貼留言