課堂作業1
//week13_1_proccesing_video
//Sketch - Labrary - Manage Library ... 安裝video
//教學在 https://processing.org/tutorials/video
import processing.video.*; //Java 使用外掛的匯入
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);
}
課堂作業2
//week13_2_camera_movie_eye_center_up
//電腦圖學繪圖時,會設定camera的相關係數
import processing.video.*; //要使用影片的外掛
Movie movie; //放影片的變數
void setup(){
size(720, 480, P3D); //要記得加上P3D才能有OpenGL 3D的功能
movie = new Movie(this, "street.mov"); //請再把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); //放影片 放在0,0
}
課堂作業3
//week13_3_texture_textureMode_beginShape_vertex_endShape
//先教 「貼圖」之後再加進去
//https://processing.org/reference/texture_.html
PImage img;
void setup(){
size(400,400,P3D); //要加上 P3D 才能有 OpenGL 3D 的功能
img = loadImage("chessboard.png"); //記得把圖檔 「拉進來」
textureMode(NORMAL); //有很多種貼圖模式
} //先用最簡單的 NORNMAL 來畫 ,2個三角形,不像是3D透視的效果
void draw(){
background(128); //灰背景
beginShape(); //開始畫
texture(img); //把圖片,當貼圖
vertex(40, 80, 0, 0); //4個頂點vertex的四邊形,會裁出2個三角形
vertex(320, 20, 1, 0);
vertex(380, 360, 1, 1);
vertex(160, 380, 0, 1);
endShape();
}
課堂作業4
//week13_4_camera_chessbord_texture_front_left
//把貼圖,跟camera整合在一起
PImage img;
void setup(){
size(400,400,P3D); //要加上 P3D 才能有 OpenGL 3D 的功能
img = loadImage("chessboard.png"); //記得把圖檔 「拉進來」
textureMode(NORMAL); //有很多種貼圖模式
}
void draw(){ //攝影機「往前方看」 左右、前後移動
camera(mouseX, 200, mouseY, mouseX, 200, mouseY-10, 0, 1, 0);
background(128); //灰背景
beginShape(); //正前方 z座標都放0
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(); //左方 x座標都會是0
vertex(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();
}
課堂作業5
//week13_5_camera_keyPressed_keyCode_x_y_z_angle_cos_sin
//修改自 week13_4_camera_chessbord_texture_front_left
//利用方向鍵(上下左右鍵)來移動我們的主角
PImage img;
void setup(){
size(400,400,P3D); //要加上 P3D 才能有 OpenGL 3D 的功能
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)); //小心是 z (3D前後) 不是 y (3D上下)
}
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(); //正前方 z座標都放0
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(); //左方 x座標都會是0
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();
}
課堂作業6
//week13_6_combine_all_Movie_Capture_PImage_camera_sin_cos_P3D
//把今天教的全部加進來
//street.mov 及 chessbord.png 都拉進來
import processing.video.*;
Movie movie; //等遺下,再把Capture視訊鏡頭加進來
PImage img;
void setup(){
size(400,400,P3D);
movie = new Movie(this, "street.mov"); //720x480
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); //放影片 用2D的放圖方法
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();
}








沒有留言:
張貼留言