2025年5月15日 星期四

week13

作業1:processing_video 
我們想要有鏡頭可以開視訊,如果沒有鏡頭就開影片
//week13-1_processing_video
//Sketch-Library-Manage-Libraries-video Library
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:camera_movie_eye_center_up
我們想要讓他在電腦裡架設一個3D的鏡頭,讓2D的影片有3D的感覺
//week13-2_camera_movie_eye_center_up
//電腦圖學繪圖時,會設定camera的相關係數
import processing.video.*;
Movie movie;
void setup(){
  size(720,480,P3D);//要記得P3D
  movie=new Movie(this,"street.mov");//把street.mov加進來
  movie.loop();//影片解析度720X480
}
void draw(){
  background(128);
  camera(mouseX,mouseY,500,360,240,0,0,1,0);
  //eyeX,eyeZ,eyeY,centerX,cneterY,centerZ,upX,upY,upZ
  //              影片中心點,當主角
  if(movie.available()) movie.read();//有新畫面,讀入
  image(movie,0,0);
}

作業3:texture_textureMode_beginShape_vertex_endShape
想要把西洋棋盤的圖片當貼圖,用最簡單的方式貼,但有瑕疵
//week13-3_texture_textureMode_beginShape_vertex_endShape
//再把「貼圖」,之後在加進去
PImage img;
void setup(){
  size(400,400,P3D);
  img=loadImage("chessboard.png");//圖拉進來
  textureMode(NORMAL);//有很多種模式
}//先用最簡單的「NORMAL」來畫,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:camera_chessboard_front_left
把week13-2、week13-3整合一下,把camera加進去,讓他看起來像一個盒子的感覺
//week13-4_camera_chessboard_front_left
//texture and 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);
    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();
}


作業5:camera_keyPressed_keyCode_x_y_z_cos_sin
改移下week13-4我們想要變用鍵盤上上下左右鍵去移動,就像用腳色在上面探索一樣,一邊x對cos,y對sin
//week13-5_camera_keyPressed_keyCode_x_y_z_cos_sin
//利用方向鍵(上下左右鍵)來移動我們的主角
//修改自week13-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));//小心是z(3D的前後)不是y
    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);
    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();


作業6:combine_all_Movie_Capture_PImage_camera_cos_sin
把今天教的全部加在一起,大總會
//week13-6_combine_all_Movie_Capture_PImage_camera_cos_sin
//把今天教的全部加進來
//把street.mov and chessboard.png加進來
import processing.video.*;
PImage img;
Movie movie;
void setup(){
  size(400,400,P3D);
  movie=new Movie(this,"street.mov");//720*480
  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();
  
}


作業7:
作業8:

沒有留言:

張貼留言