2025年5月15日 星期四

12750245_黃品燕_week13

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

}



沒有留言:

張貼留言