Perfumeを踊らせる

鼻息荒く https://github.com/perfume-dev/example-processing をcloneした諸君、あなたのprocessingでPerfumeが踊ると思ったら残念、音楽もなく3人がブラブラしてるだけでした。まあ、そこでいきなり投げ出したひとはそんなにいないと思いますが、ダウンロードしたリソースを使って踊らせるところまで書いてみました。

  • git clone git://github.com/perfume-dev/example-processing.git
  • http://processing.org/download/ から processing をダウンロード
  • 解凍して processing 起動
  • example-processing/p5f_sample/p5f_sample.pde を開く
  • http://www.perfume-global.com/ の"DOWNLOAD"から、"BVH"と"SOUND"をダウンロード
  • 解凍して bvhファイルとwavファイルを example-processing/p5f_sample/data の下にコピー
  • p5f_sample.pde を以下のように書き換え
import ddf.minim.*;

Minim minim;
AudioPlayer player;

BvhParser parserA = new BvhParser();
PBvh bvh1, bvh2, bvh3;
public void setup()
{
  size( 1280, 720, P3D );
  background( 0 );
  noStroke();
  frameRate( 30 );
  
  bvh1 = new PBvh( loadStrings( "aachan.bvh" ) );
  bvh2 = new PBvh( loadStrings( "kashiyuka.bvh" ) );
  bvh3 = new PBvh( loadStrings( "nocchi.bvh" ) );
  
  minim = new Minim(this);
  player = minim.loadFile("Perfume_globalsite_sound.wav");
  player.play();

  loop();
}

public void draw()
{
  background( 0 );
  camera((float) mouseX, (float) mouseY, 100.f, (float) (width/2.f), (float) (height/2.f), 0.f, 0.f, 1.f, 0.f);
  pushMatrix();
  translate( width/2, height/2 + 100, 0);
  scale(-1, -1, -1);
  bvh1.draw( millis() );
  bvh2.draw( millis() );
  bvh3.draw( millis() );
  popMatrix();
}

void stop()
{
  player.close();
  minim.stop();

  super.stop();
}

Enjoy!