課堂作業1:
//week13_1_processing_video
import processing.video.*;
//有視訊鏡頭的,用這個版本(沒視訊鏡頭,老師會在加幾行)
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);
movie=new Movie(this,"street.mov");
movie.loop();//迴圈係數
}
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);
}
課堂作業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);
}
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_chessboard_texture_front_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();//正前方,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();
}
課堂作業5:
//week13_5_camera_keyPressed_keyCode_x_y_z_angle_cos_sin
//修改自week13_4_camera_chessboard_texture_front_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(){//攝影機往前方看,左右移動
//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();//正前方,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_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");//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);
if(video.available())video.read();//有畫面,就讀入畫面
beginShape();//左邊的牆直接放視訊畫面
texture(video);//把視訊,也當成一面牆的貼圖
vertex(0,0,0,0,0);//x,y,z,u,v
vertex(0,4000,0,1,0);
vertex(0,400,400,1,1);
vertex(0,0,400,0,1);
endShape();
}
沒有留言:
張貼留言