2025年5月15日 星期四

week13_12750591

//week13_1_processing_video

 import processing.video.*; //java使用外掛匯入

//有視訊鏡頭,用這個版本

Capture video;

//Movie movie; 沒有鏡頭,用這個

void setup(){

  size(640,480); //常見的視訊

  video = new Capture(this,640,480);

  video.start(); //打開視訊

}

void draw(){

  if(video.available())video.read();

  image(video,0,480); 

}

//week13_2_camera_movie_eye_center_up

//電腦圖學繪圖,會設定camera的相關係數

import processing.video.*; //要使用影片外掛

Movie movie; //要放影片變數

void setup(){

 size(600,400,P3D); //要記得加上P3D才能OpenGL

 movie = new Movie(this, "street.mov"); //請再把street.mov拉進來

 movie.loop(); //迴圈播放

}

void draw(){

  background(128);

 camera(mouseX,mouseY,120,300,200,0,0,1,0); 

 

 if(movie.available())movie.read();  //有新畫面,就讀入

 image(movie,0,0); //放影片,放在0,0

}


//week13_3_texture_textureMode_beginShape_vertex_endShape

//先教貼圖,之後再加進去

PImage img;

void setup(){

  size(400,400,P3D); //要記得加上P3D才有OpenGL功能

  img = loadImage("chessboard.png"); //記得把圖檔拉進來

  textureMode(NORMAL); //有很多種貼圖

void draw(){

  background(128);  //灰背景

  beginShape(); //開始畫

    texture(img); //把圖片,當貼圖

    vertex(40,80,0,0);  //4個頂點vertex的四邊形,會截出兩個三角形

    vertex(320,20,1,0);

    vertex(380,360,1,1);

    vertex(160,380,0,1);

  endShape();

}


//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(); //front正前方,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(); //left左方,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();

}


//week13_5_camera_keyPressed_keyCode_x_y_z_angle_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 += sin(radians(angle));  //是z(3D前後)不是y(3D上下)

  }

  if(keyCode==DOWN) {

   x -= cos(radians(angle));

   z -= sin(radians(angle));  //是z(3D前後)不是y(3D上下)

  }

}


void draw(){ //攝影機往前方看,左右前後移動

  if(keyPressed) keyPressed();

  camera(x,y,z,x+ cos(radians(angle)),y,z-sin(radians(angle)),0,1,0);

  background(128);  //灰背景

  beginShape(); //front正前方,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(); //left左方,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();

}

//week13_6_combine_all_Movie_Capture_PImage_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,400,0,1,0);

      vertex(0,400,400,1,1);

      vertex(0,0,400,0,1);

  endShape();

}



沒有留言:

張貼留言