顯示具有 01160121_吳宜庭 標籤的文章。 顯示所有文章
顯示具有 01160121_吳宜庭 標籤的文章。 顯示所有文章

2015年1月18日 星期日

Week10

-------------------------------↓↓第10週業界雙師授課心得報告↓↓-------------------------------

       這次邀請到愛迪斯科技胡啟彥先生來分享互動技術的相關資訊,貴公司透過互動的技術可以讓需要接受手術的病人更加了解其手術的細節跟風險,增加病患接受手術的機率,除此之外這個技術也能結合Unity和演算法製作腦神經的相關教材,運用在學術性上,讓教學更加的容易。
       相較於上禮拜的講師說的內容,這次讓我印象最深刻的是有一個遊戲是穿著體感衣,帶著很厲害的顯示器在頭上後,遊戲中的角色可以跟著實際上人做出的動作相對應在遊戲中對環境做變化,只不過在玩這個遊戲的時候要特別注意身旁有沒有東西就是了。而這個影片使我想到日本有一個動畫,內容在說人類可以在眼睛閉上時於腦袋中顯示出遊戲的場景,而且可以根據自己想做的動作做出反應。雖然就目前的技術來說可能還沒辦法做出動畫中的遊戲,但我想也許在未來會有實現的一天。
這次授課內容也讓我知道了一件事情,原來遊戲跟電影動畫中的3D人物可以藉由「動作擷取系統」抓到臉部的細部動作,因而使3D人物做出一模一樣的動作。之前參觀過壹電視公司,裡面有一台Light Stage X的設備,也是在複製人臉的細部變化,但是跟Faceshift比起來價格卻高出了很多很多,也許用webcam能抓到的變化偏少,但是以成本的考量我想這應該會是較好的選擇。

      老師這禮拜也是讓我們看很多互動技術在各個方面做的運用,或許生活中有很多的互動技術在身旁,只是我們都沒發現而已,像是DJ可以使用ARDUINO的技術來改變觀眾手上螢光棒的燈光炒熱演唱會的氣氛,這些都是很好的運用但是我們也許不會發現,相信在未來互動技術可以有更多的使用率於我們的生活中。

Week08

-------------------------------↓↓第8週業界雙師授課心得報告-叁式曾煒傑先生↓↓-------------------------------

原本從沒想過程式能夠和設計結合,這次藉由「雙師授課」邀請到曾煒傑學長回來講課,讓我們看到了該公司的成果和充滿視覺效果的影片,而其大部分都是使用程式寫出來的,當中最讓我印象深刻的是「第七感官」舞蹈影片,舞台的背景可以根據舞者的動作做出相對應的變化,透過跟不同觀眾的互動,每一次的表演都不相同,此互動技術可以使得畫面看起來不單調,而且因為每次的效果跟動作都不同,也增加了視覺上的豐富度跟新鮮感,相較於以往的表演都是觀眾坐在台下,這樣的演出也會吸引較多人觀賞及興趣。
學長公司製作的商業化廣告也結合了數位互動,像是海尼根的廣告裡面,燈光結合了與人互動後產生的視覺變化,除了能夠有很好的宣傳效果也增添了不少趣味性,達到留在觀眾跟消費者心中的目的,因而成功的吸引了顧客消費的效果,所以其實互動技術和數位搭配也能夠運用在各個方面上,當然足夠的創意也是必須的。
這次的演講學長除了介紹自己公司的作品外,也分享了很多國外一些有創意的MV跟很厲害的廣告,例如可口可樂的廣告就充分運用互動的技術:兩國戰爭中的國家可以藉由販賣機來交朋友,類似的廣告手法很新奇也很讓人印象深刻,因此不論是廣告還是文藝上的發展,都能達到很好的功效。

學長給我們看的其中一個影片是關於藉由尾巴的擺動方式來表現使用者的情緒,其實在很早之前我就看過這個資訊了,沒想到發明人就是學長,互動技術加上科技的結合真的可以增添生活中的多樂趣,希望在未來能夠看到更多驚人的互動技術出現在生活周遭。

Week19

-------------------------------↓↓太鼓達人↓↓-------------------------------

(外觀)


(內部接線)

-------------------------------↓↓Demo影片↓↓-------------------------------


期末作品




期末作品


太鼓達人


import ddf.minim.*; Minim minim; AudioPlayer mu0,mu1,mu2,mu3,mu4,mu5; import processing.serial.*; Serial myPort; PImage img,imgBG,drum,B,R,P; int time=450*4; int runX[] = new int[100]; int drumcolor[] = new int[100]; int score=0; int but; void setup() { myPort = new Serial(this, "COM3", 9600); size(1200,390); imgBG = loadImage("BG.png"); drum = loadImage("drum.png"); B = loadImage("B.png"); R = loadImage("R.png"); P = loadImage("P.png"); imgBG.resize(1200,390); imageMode(CENTER); runX[0]=1050; for(int i=1;i<100;i++) { runX[i] = runX[i-1] + int(random(100,400)); } for(int i=0;i<100;i++) { drumcolor[i] = int(random(1,3)); } minim = new Minim(this); mu0 = minim.loadFile("Do_Do_Do.mp3"); mu1 = minim.loadFile("hitclap.mp3"); mu2 = minim.loadFile("slidertick.mp3"); mu0.rewind(); mu0.play(); } void draw() { background(imgBG); time--; textSize(30); fill(0, 0, 0); text(time/60,80,120); textSize(20); fill(0, 0, 0); text("Time:",75,80); if (myPort.available()>0) { but = myPort.read(); } col(); button(); image(drum,102,288,205,205); textSize(40); fill(0, 0, 0); text("Score:",850,150); textSize(40); fill(0, 0, 0); text(score,980,150); if(time==0) { minim.stop(); background(0, 0, 0); textSize(30); fill(250, 150, 0); text("Time's up",470,100); text("Your score is",450,150); textSize(80); text(score, 445,250); noLoop(); } } void col() { for(int i=0;i<100;i++) { if(drumcolor[i]==1) { image(B,runX[i]-=5,276,130,130); } if(drumcolor[i]==2) { image(R,runX[i]-=5,276,130,130); } } } void button() { if(but =='B') { for(int i=0;i<100;i++) { if(drumcolor[i]==1) { if(runX[i]<310&&runX[i]>270) { image(P,runX[i]-=5,276,130,130); score+=50; mu1.rewind(); mu1.play(); } } } println("B"); } if(but=='R') { for(int i=0;i<100;i++) { if(drumcolor[i]==2) { if(runX[i]<310&&runX[i]>270) { image(P,runX[i],276,130,130); score+=50; mu2.rewind(); mu2.play(); } } } println("R"); } if(but=='N') { println("N"); } }








My teammate :-)





2014年12月15日 星期一

Week14

-------------------------------↓↓旋鈕控制LED燈↓↓-------------------------------




/*
  Analog Input
 Demonstrates analog input by reading an analog sensor on analog pin 0 and
 turning on and off a light emitting diode(LED)  connected to digital pin 13. 
 The amount of time the LED will be on and off depends on
 the value obtained by analogRead(). 
 
 The circuit:
 * Potentiometer attached to analog input 0
 * center pin of the potentiometer to the analog pin
 * one side pin (either one) to ground
 * the other side pin to +5V
 * LED anode (long leg) attached to digital output 13
 * LED cathode (short leg) attached to ground
 
 * Note: because most Arduinos have a built-in LED attached 
 to pin 13 on the board, the LED is optional.
 
 
 Created by David Cuartielles
 modified 30 Aug 2011
 By Tom Igoe
 
 This example code is in the public domain.
 
 http://arduino.cc/en/Tutorial/AnalogInput
 
 */


int sensorPin = A0;    // select the input pin for the potentiometer
int ledPin = 13;      // select the pin for the LED
int sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {
  // declare the ledPin as an OUTPUT:
  pinMode(ledPin, OUTPUT);  
}

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);    
  // turn the ledPin on
  digitalWrite(ledPin, HIGH);  
  // stop the program for <sensorValue> milliseconds:
  delay(sensorValue);          
  // turn the ledPin off:        
  digitalWrite(ledPin, LOW);   
  // stop the program for for <sensorValue> milliseconds:
  delay(sensorValue);                  
}

-------------------------------↓↓期末作業↓↓-------------------------------

運用我的期中作業
製作一個控制硬體選擇爪子的方向
按下按鈕後就去抓取目標物

2014年12月8日 星期一

Week13

-------------------------------↓↓按按鈕回傳反應↓↓-------------------------------


(電腦反應)

void setup(){
 Serial.begin(9600);
 pinMode(2, INPUT_PULLUP);
}

void loop(){
  while (Serial.available()>0)  {
   char  data = Serial.read();
   Serial.print(data);
   }
   if(digitalRead(2)==LOW)Serial.println("I Love You");
   else Serial.println("I Don't Love You");
}

-------------------------------↓↓馬達馬達↓↓-------------------------------
#include <Servo.h> 
 
Servo myservo;  // create servo object to control a servo 
                // a maximum of eight servo objects can be created 
 
int pos = 0;    // variable to store the servo position 
 
void setup() 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
 
 
void loop() 
  for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees 
  {                                  // in steps of 1 degree 
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
  for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees 
  {                                
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
}


Week12

-------------------------------↓↓按鈕↓↓-------------------------------


 -------------------------------↓↓兩個按鈕↓↓-------------------------------



/*
  Button

 Turns on and off a light emitting diode(LED) connected to digital  
 pin 13, when pressing a pushbutton attached to pin 2. 
 The circuit:
 * LED attached from pin 13 to ground 
 * pushbutton attached to pin 2 from +5V
 * 10K resistor attached to pin 2 from ground
 * Note: on most Arduinos there is already an LED on the board
 attached to pin 13.
 created 2005
 by DojoDave <http://www.0j0.org>
 modified 30 Aug 2011
 by Tom Igoe
 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/Button
 */
// constants won't change. They're used here to 
// set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin
// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status
void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);     
}

void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);  
  } 
  else {
    // turn LED off:
    digitalWrite(ledPin, LOW); 
  }
}


-------------------------------↓↓放音樂↓↓-------------------------------


/*
  Melody

 Plays a melody

 circuit:
 * 8-ohm speaker on digital pin 8

 created 21 Jan 2010
 modified 30 Aug 2011
 by Tom Igoe

This example code is in the public domain.

 http://arduino.cc/en/Tutorial/Tone

 */
 #include "pitches.h"
#define NO_SOUND 0 // make the rests in music
// notes in the melody:
int melody[] = {
NOTE_E4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_E4,
  NOTE_E4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_E4,NOTE_E4,NOTE_E4,
  NOTE_E4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_E4,
  NOTE_E4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_E4,NOTE_E4,NOTE_E4,
  NOTE_DS5,NOTE_D5,NOTE_B4,NOTE_A4,NOTE_B4,
  NOTE_E4,NOTE_G4,NOTE_DS5,NOTE_D5,NOTE_G4,NOTE_B4,
  NOTE_B4,NOTE_FS5,NOTE_F5,NOTE_B4,NOTE_D5,NOTE_AS5,
  NOTE_A5,NOTE_F5,NOTE_A5,NOTE_DS6,NOTE_D6,NO_SOUND};


// note durations: 4 = quarter note, 8 = eighth note, etc.:
float noteDurations[] = {
8,16,16,8,4,8,8,8,
  8,16,16,8,4,8,8,8,
  8,16,16,8,4,8,8,8,
  8,16,16,8,4,8,8,8,
  8,2,8,8,1,
  8,4,8,4,8,8,
  8,8,4,8,4,8,
  4,8,4,8,3};

void setup() {
  // iterate over the notes of the melody:
  for (int thisNote = 0; thisNote <54; thisNote++) {

    // to calculate the note duration, take one second
    // divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1000/noteDurations[thisNote];
    tone(8, melody[thisNote],noteDuration);

    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // stop the tone playing:
    noTone(8);
  }
}

void loop() {
  // no need to repeat the melody.
}


Week10

業界講師授課心得報告


        這次邀請到愛迪斯科技胡啟彥先生來分享互動技術的相關資訊,貴公司透過互動的技術可以讓需要接受手術的病人更加了解其手術的細節跟風險,增加病患接受手術的機率,除此之外這個技術也能結合Unity和演算法製作腦神經的相關教材,運用在學術性上,讓教學更加的容易。
        相較於上禮拜的講師說的內容,這次讓我印象最深刻的是有一個遊戲是穿著體感衣,帶著很厲害的顯示器在頭上後,遊戲中的角色可以跟著實際上人做出的動作相對應在遊戲中對環境做變化,只不過在玩這個遊戲的時候要特別注意身旁有沒有東西就是了。而這個影片使我想到日本有一個動畫,內容在說人類可以在眼睛閉上時於腦袋中顯示出遊戲的場景,而且可以根據自己想做的動作做出反應。雖然就目前的技術來說可能還沒辦法做出動畫中的遊戲,但我想也許在未來會有實現的一天。
        這次授課內容也讓我知道了一件事情,原來遊戲跟電影動畫中的3D人物可以藉由「動作擷取系統」抓到臉部的細部動作,因而使3D人物做出一模一樣的動作。之前參觀過壹電視公司,裡面有一台Light Stage X的設備,也是在複製人臉的細部變化,但是跟Faceshift比起來價格卻高出了很多很多,也許用webcam能抓到的變化偏少,但是以成本的考量我想這應該會是較好的選擇。
       老師這禮拜也是讓我們看很多互動技術在各個方面做的運用,或許生活中有很多的互動技術在身旁,只是我們都沒發現而已,像是DJ可以使用ARDUINO的技術來改變觀眾手上螢光棒的燈光炒熱演唱會的氣氛,這些都是很好的運用但是我們也許不會發現,相信在未來互動技術可以有更多的使用率於我們的生活中。

2014年10月25日 星期六

期中作業

-------------------------------↓↓期中作業成果↓↓-------------------------------


-------------------------------↓↓與預期成果差別↓↓-------------------------------
1.夾子會擺盪  (O)  不過角度沒有太多
2.黃金跟石頭大小不一  (O)  每一次會隨機變換位置
3.夾回來的速度會隨著物品的大小改變  (X) 更改為碰到物品後即重新夾取
4.每一關都會設一個目標 遊戲目標就是要達到那個黃金數量  (X) 更改為時間內能夾到的金錢量

2014年10月13日 星期一

Week05

-------------------------------↓↓期中作業目標更改↓↓-------------------------------
掏金礦
電腦版遊戲連結


-------------------------------↓↓期中作業分析↓↓-------------------------------
1.夾子會擺盪
2.黃金跟石頭大小不一
3.夾回來的速度會隨著物品的大小改變
4.每一關都會設一個目標 遊戲目標就是要達到那個黃金數量

2014年10月6日 星期一

Week04

-------------------------------↓↓期中作業目標↓↓-------------------------------

想製作以前手機常玩的遊戲Tower Bloxx
電腦版遊戲連結


-------------------------------↓↓畫一朵花↓↓-------------------------------

-------------------------------↓↓一朵旋轉的花↓↓-------------------------------

void setup()
{
  size(600,400);
}
void draw()
{
  translate(mouseX, mouseY);
  rotate(0.01*frameCount); //旋轉
  fill(#FFDAB9); ellipse(0,0,180,80);
  rotate(PI/4);
  fill(#FFDAB9); ellipse(0,0,180,80);
  rotate(PI/4);
  fill(#FFDAB9); ellipse(0,0,180,80);
  rotate(PI/4);
  fill(#FFDAB9); ellipse(0,0,180,80);
  rotate(PI/4);
  fill(#FFFACD); ellipse(0,0,80,80);
}

-------------------------------↓↓一朵旋轉的菊花↓↓-------------------------------

void setup()
{
  size(600,400);
}
void draw()
{
  translate(mouseX, mouseY);
  rotate(0.01*frameCount);
  for(int i=0;i<20;i++)
  {
    fill(#FFFFFF); ellipse(0,0,18,180);
    rotate(PI/20);
  }
  fill(#FFFF00); ellipse(0,0,80,80);
}

-------------------------------↓↓一朵旋轉會變色的菊花↓↓-------------------------------

void setup()
{
  size(600,400);
  colorMode(HSB,600,400,400);
}
void draw()
{
  fill(mouseX,mouseY,400);
  translate(mouseX, mouseY);
  rotate(0.01*frameCount);
  for(int i=0;i<20;i++)
  {
    ellipse(0,0,20,180);
    rotate(PI/20);
  }
  fill(#FFFF00); ellipse(0,0,80,80);
}

2014年9月29日 星期一

Week03

-------------------------------↓↓跟圖互動↓↓-------------------------------

PImage img;
void setup()
{
  size(450,300);//視窗大小
  img = loadImage("2013061919141645330_500X.png");//讀圖
  imageMode(CENTER);//圖在中間
}
void draw()
{
  background(255,255,255);//背景顏色
  image(img,mouseX,mouseY,100,100);//圖的位置跟著滑鼠
}

-------------------------------↓↓射擊遊戲(?!)↓↓-------------------------------

PImage img,imgBG;
float eggX=750,eggY=550,eggVX,eggVY,flying=0;
void setup()
{
  size(500,250);
  img = loadImage("2013061919141645330_500X.png");
  imgBG = loadImage("9.JPG");
  imgBG.resize(500,250);
  imageMode(CENTER);
}
void draw()
{
  background(imgBG);
  image(img,mouseX,mouseY,100,100);
  if(flying>0)
  {
    ellipse(eggX,eggY,20,20);
    eggX+= eggVX; eggY+=eggVY; flying--;
  }
}
void mousePressed()
{
  eggX=750; eggY=550; flying=30;
  eggVX=(mouseX-eggX)/30;
  eggVY=(mouseY-eggY)/30;
}

-------------------------------↓↓增加聲音↓↓-------------------------------

PImage img,imgBG;
import ddf.minim.*;
Minim minim;
AudioPlayer lagh;

float eggX=750,eggY=550,eggVX,eggVY,flying=0;
void setup()
{
  size(500,250);
  img = loadImage("2013061919141645330_500X.png");
  imgBG = loadImage("9.JPG");
  imgBG.resize(500,250);
  imageMode(CENTER);
  minim = new Minim(this);
  lagh = minim.loadFile("lagh.mp3");
}
void draw()
{
  background(imgBG);
  image(img,mouseX,mouseY,100,100);
  if(flying>0)
  {
    ellipse(eggX,eggY,20,20);
    eggX+= eggVX; eggY+=eggVY; flying--;
  }
}
void mousePressed()
{
  eggX=750; eggY=550; flying=30;
  eggVX=(mouseX-eggX)/30;
  eggVY=(mouseY-eggY)/30;
  lagh.rewind();
  lagh.play();
}