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

FK/IKにおける回転値を取得してモーフと連動させるには


https://www.youtube.com/watch?v=HgWo3zl-eNM

キャラクタのリグを組む場合、スケルトンの回転角度とモーフを組み合わせることで、よりリアルな表現が可能になります。今回は、FKならびにIKを利用したリグにおいて、このスケルトンとモーフの連動具合を実現する方法をご紹介します。

サンプルシーンには簡単な腕のサンプルモデルを用意してあります。まずはこの腕に対してスケルトンを設定し、簡単なアニメーションを設定します。スケルトンの回転により、腕も回転するようになりますが、回転角度が深くなると、メッシュがひきつって潰れてしまうようになる箇所があります。これをモーフマップを使用して変形させます。リストタブのモーフマップから新たにモーフマップを作成したら、右クリックでモーフインフルエンスを適用します。ポリゴンモードで回転に合わせて変形させたい状態へとメッシュを編集します。

うまく設定できたら、回転角度が全くない状態にしてみると、その状態だとモーフによって望まない状態になっているのが確認できます。つまり回転角度によって、このモーフの強さをコントロールする必要があります。

モーフのプロパティから強さのチャンネルをスケマティックビューへと追加し、さらに回転するスケルトンの回転軸のチャンネルも追加します。サンプルでは回転が-100度の時にモーフの強さが100%、つまり値1に、そして回転角度が0度の時にモーフの強さが0%に設定したいので、除算のノードを使って値を変換するようにします。追加演算除算ノードを追加し、回転角度を値Aに、値Bには-100を入力し、ノードの出力をモーフの強さへと接続します。こうすることで、回転に合わせてモーフの値が変わり、望む動作となるのがわかります。

ここまではFKで解説しましたが、IKの場合はどうでしょうか。まずはこの腕のスケルトンに対してIKを設定してみます。ルートのスケルトンを選択したら、セットアップモードへと入り、インバースキネマティクスサブタブからIK組み込みボタンをクリックします。後は、手首のスケルトンを選択し、ゴール追加ボタンをクリックするだけで設定完了です。セットアップモードを抜けてゴールアイテムを動かしてみると、ゴールの動きに合わせてスケルトンが回転するようになります。このときスケルトンのトランスフォーム情報を見てみると、回転角度は0度のままになっているのがわかります。つまり、先程まで組んだトランスフォームの回転角度によるモーフの強さのコントロールは使えないことになります。

IKを使用している場合、それぞれのスケルトンの回転角度はトランスフォームでは取得することができません。これを取得するためには、ワールド回転を使います。チャンネルタブへと移り、求めたいスケルトンのワールド回転をビューへと追加します。このワールド回転は、スケルトンのワールド座標における回転情報を行列の形で持っています。ただしこれはワールド座標における回転情報なので、これをローカル座標における回転情報、つまり親の影響分を取り除いた状態の回転情報を得るようにします。このためには、まず同様に親のワールド回転を追加し、このワールド回転の逆行列を、求めるスケルトンのワールド回転へと掛け合わせます。

逆行列を求めるため、追加行列Matrix Invertを追加し、親スケルトンのワールド回転を入力に接続します。2つの行列を掛け合わせるため、今度は追加行列Matrix Composeを追加し、求めるスケルトンのワールド回転、それから親スケルトンの逆行列の順で入力へと接続します。これで親の影響を覗いた回転情報が得られましたが、この状態ではまだ行列ですので、これを回転角度へと変換します。追加行列Matrix to Eulerを追加し、Matrix Composeの出力をMatrix To Eulerワールド回転へと接続します。あとは出力XがトランスフォームのX回転に相当しますので、こちらを先程FK用に組んだリグの除算の値Aへと接続し直します。そうすると、ゴールの動きに合わせて、モーフもきちんと対応しているのが確認できます。

求めたいスケルトンの回転角度が正しく取れていないと思われるときには、Matrix Composeでの行列の掛け合わせがうまく行っていない可能性があります。行列を掛け合わせる場合、その順番が非常に重要になります。行列計算では、掛け合わせる順番が逆になると結果も異なってきます。チャンネルタブを開き、Matrix Compose入力を開いてみると、回転を求めるスケルトン、そしてその後に逆行列が来る状態が正しい状態です。もしこれが掛け合わせる順番を逆行列の後に求めるスケルトンの回転を接続すると、リストが反対になり、正しい状態を求めることができなくなりますので、その場合にはいったん接続を解除してから、もう一度正しい順番で接続するようにしてください。

2017年12月27日