2025年5月15日 星期四

HSY week13

 //week13-1

//Sketch Library Manage Librarics... 安裝Video

//教學在https://processing.org/tutorials/video

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

//Capture video; //有視訊鏡頭的用這個版本

Movie movie; //沒鏡頭就用這個

void setup(){

  size(640,480);

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

  if (movie.available()) movie.read();

  image(movie, 0, 0);

}


-----------------------------------------------------------------------------------------

//week13-2 3D effect

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

import processing.video.*; 

Movie movie;

void setup(){

  size(600,400,P3D); //配上3D功能 

  movie = new Movie(this, "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);

}



--------------------------------------------------------------------------------------------------

//week13-3

//先教貼圖 之後再加進去week13-2

//https://processing.org/reference/texture_.html

PImage img;

void setup(){

  size(400,400, P3D);

  img = loadImage("chessboard.png");

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

} //先用最簡單的NORMAL來畫 兩個三角形 不像是3D透視的效果

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

//把貼圖 & amera功能整合

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); //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();//左方

  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

//修改自13-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));

    y += sin(radians(angle));

  }

  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();//正前方

  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();//左方

  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

//指令合併 

//streets + chessboard都拉進來

import processing.video.*;

Movie movie;

PImage img;

void setup(){

  size(400,400,P3D);

  movie = new Movie(this, "street.mov");

  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();

}








沒有留言:

張貼留言