PureData+GEMでプロジェクションマッピングをするためのマスクを作る方法

投稿日:2017-07-08



ナカジ(@cp_nakajun)です。

プロジェクションマッピングってどうやってやるの?
ということをすごくざっくり説明すると

「マッピングする物体に合わせて、映像を映す面(マスク)を作り、その面に映像を流し込む」ということです。

今日はそのマスクをPureData+GEMで作る方法を紹介します。

PureData+GEMの「curve3d」オブジェクト

マッピングする物体に合わせて映像を映す面(マスク)を作るには、その物体に合わせて面を変形させる必要があります。

あくまでも1つの方法ではありますがPureDataでこれをやるにはGEMの「curve3d」オブジェクトを使います。

curve3dとは – render a surface (サーフェスをレンダリングする )

面をレンダリングするオブジェクトで面を指定したグリッドで分割して、その点ごとに位置を指定することができます

以下にほとんどヘルプパッチと同じですが、今回のテスト用パッチをダウンロードできるようにしてます。

→ 201707-curve3d-mask-test.pd

curve3dでマスクを作る

上記のパッチはこんな感じです。


当ブログのロゴをテクスチャーとして読み込みます。




パッチ右下の赤で囲ったところでグリッドの数を変更できます。


描画を「LINE」(draw line)にしてグリッドの数を変更するとこんな感じです。




変形させるには以下の画像の赤で囲った部分


「set メッセージ」と共に5つの数字をcurve3dオブジェクトに送ることで変形します。

5つの数字は左から

  • 動かすグリッド点のX
  • 動かすグリッド点のY
  • X方向
  • Y方向
  • Z方向

左から2つで動かす場所を指定して、残りの3つで変形量を調整する感じです。

動かしてみるとこんな感じです。









ここまで読んで頂いて、察してることだと思いますが

この方法で物体に綺麗にマスクするのはちょー面倒くさいです。

先日、TouchDesignerのkantanMapperで同じことをする記事を書きましたがTDの方が圧倒的に便利です。

TouchDesigner 099 で簡単にプロジェクションマッピングができる「kantanMapper」の使い方。ステップ1



TouchDesignerは新しくて映像に特化しているだけの優位性があります。

結果的にPureDataにとって苦手な点を表す内容になりましたが
こういった得手不得手を知っておくとプロジェクトによって選択できるようになるのであえて書きました。

PDにはPDの良さがありますよ!

サポート募集中

この記事はお役に立てましたか。
よかったら、コーヒー ☕ をご馳走いただけたら励みになります。



PureDataの貴重な書籍



おすすめのクリエイティブ・コーディング関連カテゴリー

ウェブツール

機能はシンプルなものですが、p5.jsやTone.jsで描画したり音が出たりするので遊んでみてください。
・【Midi Number Tools】:MIDIナンバーから音名と周波数を判定します
・【Delay Time Calculator】:テンポに応じた音符の長さを判定します