メインページに戻る


1. テンプレートの動作確認をしよう!

「code」フォルダ内の「part05_01_base」を開いて、実行してみてください。適当なpdeファイルをダブルクリックすれば開きます。

動画が再生されましたか?
– 動画の再生開始まで少し時間がかかるかも!
 (part05_01_baseディレクトリ下のdata内の骨格、画像を読み込んでいる)
– コンソールの左の数字が進行度

‘v’キー、Spaceキー、Enterキーを押して、動作を確認してみよう!

これ以降は、この「Part05_01_base」のコードをベースに開発を進めていきます!


2. 身体の関節に四角形を描いてみよう!

Effectorタブを開いてください。

void disply()に四角形を描くコードを挿入してみよう!

// エフェクトを描画するメソッド
  void display() {
    
    //////////////
    //ここにエフェクトを追加していく!
    fill(255,150);
    rect(poseData.x[0],poseData.y[0], 100,100);
    //////////////

    if (visible)
      drawBone();
  }

poseData.x[*]とposeData.y[*]によって関節位置のx、y座標を取得できます。

以下の図を見ながら、次は左肘に四角形を表示してみよう!ただし、配列であるposeData.x[*]は0から数値が格納されているため、例えば3番目の座標(右目)を取得したい場合は、poseData.x[2]、poseData.x[2]としてください。

配列01234
関節の番号12345

実行すると顔の前の四角形が表示されたかな?

しかしこれだと、四角形の左上の位置が鼻の上にきていますね。
これだと少し見栄えが悪いので、四角形の横幅と縦幅の半分の長さ分移動させてみましょう。

// エフェクトを描画するメソッド
  void display() {
    
    //////////////
    //ここにエフェクトを追加していく!
    fill(255,150);
    rect(poseData.x[0]-100/2,poseData.y[0]-100/2, 100,100);
    //////////////

    if (visible)
      drawBone();
  }

実行すると、鼻の位置が四角形の中心位置と重なったかな?

無事動いたら保存しておいて下さい。

参考: part05_02_rect


3. 身体の関節を中心に四角形をランダムに描いてみよう!

Part02:Processing入門で動かしたサンプルを適用してみよう!
先ほどと同様に、Effectorタブ内のvoid display()内のコードを変更しよう!

// エフェクトを描画するメソッド
  void display() {

    //////////////
    //ここにエフェクトを追加していく!
    for (int i = 0; i < 10; i++) {
      fill( random(50, 250), random(100, 150), random(120, 200), 150);
      float _w = random(10, 50);
      float _h = random(10, 50);
      rect(poseData.x[0] - _w/2 , poseData.y[0]- _h/2 , _w, _h);
    }
    //////////////

    if (visible)
      drawBone();
  }

次は、位置が固定されちゃっていますね?位置を散らすようにrandomを追加しましょう!

// エフェクトを描画するメソッド
  void display() {

    //////////////
    //ここにエフェクトを追加していく!
    for (int i = 0; i < 10; i++) {
      fill( random(50, 250), random(100, 150), random(120, 200), 150);
      float _w = random(10, 50);
      float _h = random(10, 50);
      rect(poseData.x[0] - _w/2 + random(-50, 50), poseData.y[0]- _h/2 +random(-50, 50), _w, _h);
    }
    //////////////

    if (visible)
      drawBone();
  }

無事動いたら保存しておいて下さい。

参考:part05_03_random_rect


4. 最も動きが大きい身体部位にエフェクトを割り当てよう!

Effectorのdisplay()を以下のように修正

//////////////
    //ここにエフェクトを追加していく!
    for (int i = 0; i < 10; i++) {
      fill( random(50, 250), random(100, 150), random(120, 200), 150);
      float _w = random(10, 50);
      float _h = random(10, 50);
      
      rect(poseData.x[poseData.avgDD_maxindex] - _w/2 + random(-50, 50), 
      poseData.y[poseData.avgDD_maxindex]- _h/2 +random(-50, 50), 
      _w, _h);
    }
    //////////////

動きに合わせてエフェクトが変化しましたか?
無事動いたら保存しておいて下さい!
また、PoseData内の計算を変更することで、より複雑なエフェクトを生成することもできます!

参考:part05_04_max_random_rect

メインページに戻る