見出し画像

encounter作品解説~(FLEXIBLE)NODEs編②~

前回のあらすじ

最初に

自分が代表を務めるメディアアート集団「WONDEMENT」が2023年12月に実施した初の展示「encounter」

展示では合計3つの作品を展示し、自分はそのうち2つの作品にプロデュースや制作担当として関わっています。

今後、複数回に分けてその2つの展示作品について制作過程などを書いていく予定で、まずはメイン作品として展示した作品の紹介や制作過程を紹介していきます。

前回のあらすじ

前回は作品の概要や使用しているソフト、制作においてメインで使用したTouchDesignerのセットアップについて紹介しました。

今回は作品の中で重要な
触れる物体
触れたことで動く物体
当たり判定
これら3つの仕組みについて書いていこうと思います。

仕組み① ~当たり判定を作る~

まずは当たり判定についてです。
ここは前回のnoteで紹介した「Bullet Solver COMP」を使用します。

物理シミュレーションを行うノードなので特に細かいことを考えずこの「Bullet Solver COMP」を元に構成するだけで簡単に当たり判定を実装できます。

ひとまずBullet Solver COMPの物理シミュレーションによって物体が他の物体にあたる仕組みが実現でき、3つの要素のうち「当たり判定」を実装出来ました。

仕組み② ~触れたことで動く物体を作る~

Actor COMPを作る

次に組み込むのは「触れたことで動く物体」です。
先ほども書いた様にBullet Solverの中に存在する物体は全て「Actor COMP」で作成します。

Actorは配置しただけでは何も表示されません。
その中にActorとして配置したい3Dのデータを入れる必要があります。

Actorをダブルクリックして中に入り、SOPなどから任意の3Dオブジェクトを追加するとActorにも表示される様になります。

物体を追加したら次はそれにテクスチャを貼り付けます。
この作品では実際にノードを動かしている様に見せたいため、実際に作品を構成しているTouchDesignerのノードの画面をスクリーンショットをテクスチャとして貼り付けています。

実際の例はこんな感じです。
下段の「Box SOP」でオブジェクトを作り、上段の「movie file in」でインポートしたからスクリーンショットを「constant MAT」に取り込んで「Geometry COMP」でテクスチャとして貼り付けています。

これで3つの要素2つ目「触れたことで動く物体」は設定完了です。

動くActorと動かないActor

3つ目に行く前に「Actor COMP」を使用する際の注意点を紹介します。

Actor COMPのパラメータには赤線で囲った「Kinematic State」という設定項目が存在します。
実はActorには「動くActor」「動かないActor」を設定することができ、それを「Kinematic State」という項目で決定することが出来ます。

  • Dynamic(動くActor)

  • Static(動かないActor)

例えばボールが箱に入っていくシミュレーションをする場合、
「ボール」と「箱」という2つのActorが存在します。
ボールは重力やその他の力によって動いて欲しいので「Dynamic(動くActor)」に設定する必要があります。

それに対して箱は動かずその場にとどまって欲しいので「Static(動かないActor)」に設定します。

どちらの設定も当たり判定がついたままですが、重力などの設定項目の影響を受けるか受けないかを決めることが出来ます。

詳しくは上記の記事でも紹介されていますので、こちらも参照してみてください。

細かい設定

ちなみに「Actorr COMP」はその個別のオブジェクトに重力や摩擦などを設定することが出来ます。
重力は「Bullet」タブの「Use Global Gravity」をOFFにすることで調節出来るようになります。

ONにしてBullet Solver COMPの設定に従うようにするとロックされていじれなくなります。

「Use Global Gravity」をONにすると大元の「Bullet Solver COMP」で設定された重力の数値に従って演算が行われますが、個別に設定する際はここをOFFにしてXYZそれぞれ度の向きに重力をかけるか設定が出来ます。

今回は「Bullet Solver COMP」側で無重力に設定するのでここをONにしています。

また、摩擦は重力と同じ「Bullet」タブの「Friction」で設定します。
摩擦は2つ以上の物体が当たった時に発生するので、当たったActorそれぞれの摩擦設定の積によって決定します。
少しわかりにくいと思うのですが、自分がよく使っているTouchDesignerの日本語ドキュメントに詳しく説明されていますし、実際に触って見ながら調節してみることをおすすめします。

もう一つ「反発係数」も調整しました。
反発係数も同じ「Bullet」タブの「Restitution」で設定します。
ここが「1」になっていると物体が衝突した際に同じ速度で跳ね返り、
「0」にすると一切跳ね返らなくなります。

今回は基本的にずっと動いていて欲しいため、「1」に設定しています。
(「1」未満にすると衝突するたびに減速して動かなくなってしまうため)

仕組み③ ~触れる物体~

触れて動く物体は出来ても触れる物体が無ければ始まりません。
そこで触れるための物体を作るわけなのですが、今回の展示は「見て触れて体験する展示会」と銘打ち、メイン作品には「インタラクティブ性を持たせたい」と考えていました。

そこで、本作品では体の動きでノードに見立てたオブジェクトを作り、それを体を動かすことで遊べる様にしました。

これを実装するために今回はKinectを使用しています。
Kinect CHOPは体の関節の位置情報を取得出来るので、そこから使いやすいようにSelect CHOPで必要な関節の位置情報を抜き出します。

この位置情報ををActor COMPで作成したBoxやSphereの位置情報にリンクさせて体を動かすとその関節の位置と同じ場所にBoxやSphereが移動する仕組みを作ります。

これが体の代わりとなり「触れる物体」となります。
また、このActor COMPは全て「Static」に設定します。
これをしないとノードに見立てた箱に当たった瞬間跳ね返ったりして体の動きに追従しなくなってしまいます。

ここまで来たらあとはActor COMPで作った体を任意のサイズに変更して完成です。
要素の3つ目である「触れる物体」を作る事ができました。

最後に

今回はここまでとなります。
次回はラスト、その他の細かい機能や最終的な出力について解説していきます。

この記事が気に入ったらサポートをしてみませんか?