MODO 機能紹介・チップスサイト このサイトでは、MODOの基本機能やチップスをご紹介していきます。

ダブルトランスフォームの解消法

https://www.youtube.com/watch?v=UwPwEWhlBus

今回はMODOにおいてダブルトランスフォームを解消する方法について解説します。

まずダブルトランスフォームの現象について説明します。ダブルトランスフォームとは、メッシュの変形を行う際に、トランスフォームの影響が二重にかかってしまう現象のことです。

例えば、このサンプルのシーンではキャラクタのモデルとスケルトンの階層が既にバインドされていますが、この場合、階層のルートにあたる腰のスケルトンを移動させることで、キャラクタのモデル自体を動かすことになります。

このようにキャラクタモデルが移動するアニメーションを作ることができますが、今はキャラクタモデルのメッシュとスケルトンの階層がバラバラになっているので、これらを一つの階層としてまとめておきましょう。セットアップモードへ入ったら、ロケータを一つ作成し、メッシュと階層とをそのロケータの中に入れます。ロケータはわかりやすいように、表示を変えておきましょう。このように設定することで、このLocatorで移動をコントロールするようにします。

しかしいざセットアップモードを抜けて、このルートとなるロケータを動かしてみると、スケルトンの階層はロケータの位置とあっているものの、キャラクタモデルのメッシュは移動量が2倍になって、スケルトンと離れていってしまいます。これがなぜ起こるのかというと、ルートであるロケータの移動が、子であるスケルトンとキャラクタモデルに対して等しく伝わり、さらにこのスケルトンの移動によるメッシュが変形したことによる移動も加わるため、移動が二重にかかってしまうことになります。これがダブルトランスフォームの現象です。

これを解消するには、継承オプションを使用します。この継承オプションはチャンネルタブで設定します。チャンネルタブを開いてみると、位置継承回転継承スケール継承というトランスフォームに対する継承オプションが用意されているのが確認できます。このオプションを使うと、通常親子関係では親のトランスフォームを子が受け継ぐ形になりますが、それを受け継がないという設定が可能になります。

簡単なシーンで解説しましょう。このサンプルシーンでは青のボックスが親、赤い球体が子に設定されており、子は親から少し離れた場所に配置されています。親子関係が設定されている場合、親のアイテムを動かすと、子のアイテムも相対的な位置関係を保ちつつ、移動に追従します。回転やスケールも同様です。子のアイテムは親のアイテムの影響を受けるようになります。

では子アイテムを選択した上で、チャンネルタブへと移り、継承のオプションをチェックしてみましょう。継承の値をTrueからFalseへと変えてみると、それまで親のトランスフォームを子が受けついでいたものが、まったく影響を受けなくなりました。これが継承のオプションとなります。

では先ほどのキャラクタのシーンへと戻ってみます。キャラクタのシーンではルートとなるロケータの動きを、スケルトン階層とキャラクタモデル、双方が影響を受けることが原因でした。キャラクタモデルがロケータのトランスフォームの影響を受けることなれば、スケルトン階層の動きだけをもとに、キャラクタモデルが変形するようになるので、正しい動きとなるはずです。このため、キャラクタモデルを選択し、位置や回転、スケール継承をFalseへと設定すると、ダブルトランスフォームの問題は解消され、正しい変形とトランスフォームが行われるようになります。

2020年6月5日