2025年5月15日 星期四

week13_12750156_黃映綺

課堂作業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();
  
}





沒有留言:

張貼留言