ブレンドしたウェイトでペイント
ボリュームダウン問題解決!デュアルクォータニオンという名のスキニング方法 【Mayaリギング】

ジョイントのスキニングにおいて、ついてまわる問題があります。それはジョイントを曲げたり、ねじったりしたときに発生するボリュームダウンです。実はMaya2011以降からその問題を改善するデュアルクォータニオンという技術が実装されているんです!

ここではその活用方法を紹介します。

※説明にはMaya2017を使用しています。

クラシックリニアでバインドした場合

クラシックリニアでバインド

円柱にスケルトンをクラシックリニアでバインドした場合、上の画像のようになります。ほぼ未調整なので、一見調整すれば何とかなりそうな気もします。曲げた部分のメッシュは元の直径よりだいぶ減っており、ウェイトはジョイントAとジョイントBのウェイトが0.5ずつ配分されています。つまり、調整してもこれ以上太くならないということです。

デュアルクォータニオンの設定方法

デュアルクォータニオンの設定

ではデュアルクォータニオンでバインドしてみましょう!設定方法は簡単です。

  1. [リギング]メニューセット→[スキン]→[スキンのバインド]→[オプション□]を選択します。
  2. [スキニング方法]を[デュアルクォータニオン]に設定します。
  3. あとは実行するだけです!

クラシック リニアの活用

正直、クラシックリニアを使うメリットって・・・?

雑巾絞りのアニメーションとか?

 

例えば、[スキニング方法]の項目の中にはクラシックリニアともう一つ、[ブレンドしたウェイト]というものがあります。これが使えそうです。

曲げると外側が膨らむ

デュアルクォータニオンでバインド

ボリュームダウンを抑える代わりに、逆の問題が生まれました。

ジョイントを曲げたときに、外側が膨らんでしまうという問題です。

ウエイト調整で抑えられないわけでもないのですが、頂点はそれぞれのジョイントに寄ってしまい、角の部分の頂点が減ってしまいます。

ちなみにねじった場合は

デュアルクォータニオンでねじり

クラシックリニアでは180°もねじったら窄みきってしまいますが、デュアルクォータニオンの場合は全くボリュームダウンしません。

 

クラシックリニアとの併用

上記の問題を解決するために[ブレンドしたウェイト]を使います。これ使うことでデュアルクォータニオンとクラシックリニアを併用することができるわけです。やり方は以下の通りです。

[ブレンドしたウェイト]の設定方法

  1. [スキンのバインド]のオプションから[ブレンドしたウェイト]を選択し、バインドします。
  2. [リギング]メニューセット→[スキン]→[スキンウェイトペイント]を起動します。
  3. [ツール設定]の[ウェイトタイプ]を[DQブレンド ウェイト]にします。
  4. クラシックリニアを0、デュアルクォータニオンを1として適用する部分にペイントします。

塗り分けの仕方

いろいろ試した結果、以下のような塗り方がベストかと思います。

ブレンドしたウェイトでペイント

各関節部分の中心からグラデーションになるように塗ります。

 

 

デュアルクォータニオン1択ではない訳

実は上で取り上げた以外にも問題はあるんです・・・

ジョイントでのスケールに問題がある

デュアルクォータニオンでスキニングした場合、ジョイントからスケールを設定すると思わぬ変形をすることがあります。

補助骨等のスケールでボリュームダウンを防ぐ必要がなくなったとはいえ、スケールが使えないのは不便です。

 

ゲームエンジンでの開発は進まなかった

Mayaをはじめ3DCG系のDCCツール(デジタルコンテンツを作るためのツール)には実装されたのですが、ゲームエンジンでの開発は進まなかったようです。つまり、映像として出力する分には問題ありませんが、リアルタイムで動かすゲームのキャラクターモデルには使えないようです。

 

【まとめ】映像制作において、基本「使う」でいいんじゃないですかね

スケールの問題はありますが、基本時間のない制作で補助骨を使わずにボリュームダウンを改善できるなら大した問題じゃありません。映像制作においてスキニング方法はデュアルクォータニオンほぼ1択でしょう。

 

 



2 thoughts on “ボリュームダウン問題解決!デュアルクォータニオンという名のスキニング方法 【Mayaリギング】”

  1. mirai より:

    セットアップ習いたての学生です。
    デュアルクォータニオンとインタラクティブどちらも使うとは驚きましたが、なるほどそういう使い分けがあったわけですね。。。
    しかし後でスキンウェイトを見直すときどこでどちらで塗ったかとかわかりづらいことはないですかね?

    1. LAZY より:

      バインドしたメッシュをアトリビュートエディタで開くと「skinCluster1」ノード(上部のタブ)があり、その中に「スキニング方法(Skinning method)」があるのでそこで確認することができます。
      バインドするときに設定した項目は大体「skinCluster1」ノード中にあるので、他にも確認することができると共に、バインドをしたあとでも設定を変更することができます。

      ちなみにイメージとしては、
      ■クラシックリニアとデュアルクオータニオンはそれぞれウェイト値に対する変形時の計算方法を切り替えるだけ(つまりウェイト情報は同じ)。
      ■「ブレンドしたウェイト(Weight Blended)」はクラシックリニアとデュアルクオータニオンの中間のような計算方法で、通常のウェイト値に加え、「Weight Blended」ウェイト値情報(ブレンドの適用範囲)をペイントすることで計算しているようです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です