見出し画像

Mecanim Humanoid の基礎的技術解説

本文は、"Mecanim Humanoids" (2014/5/26 robertl) の翻訳です。本文の著者 robeltl(Robert Lanciault)は、Mecanimのリードデベロッパです。

こちらの日本語訳版は、以前、「Mecanim Humanoidについて」というタイトルで、Unity Technologies Japanのオフィシャルブログにて公開していたものですが、公開リンクがアクセスできなくなりましたので、こちらに転記すると同時に翻訳を見直し、いくつかコメントも追加しました。Mecanim/Humanoidは、大変独創的な人型モデルへのアニメーションリターゲットシステムですが、基礎的な技術解説はほとんど書かれていないので、こちらが大変参考になると思います。ただ、本文を読むと続きがあるような印象ですが、改めて調べたところ本文の続きはなく、その多くはマニュアルに実装済みの内容として含まれているようでしたので、ご留意ください。
(日本語訳:Nobuyuki Kobayashi)

はじめに

本投稿はメカニムヒューマノイドの背後にある技術について解説したものです。動作の仕組み、長所と短所、どうして現在のような仕様になっているのか、さらにベストの状態を得るためのいくつかのヒントについてお話いたします。メカニムに関する一般的な設定と手順については、「アニメーションシステム概要」を参照してください。

1.ヒューマノイドリグとマッスルスペース

画像1

メカニムヒューマノイドリグおよびマッスルスペースとは、標準的なスケルトンノード階層とジオメトリ変形に変わるソリューションで、人型のボディとそのアニメーションを表現するものです。
ヒューマノイドリグとは、スケルトンノード階層の最上位に位置する、ひとつの表現概念です。人型を構成するボーンセットを定義すると同時に、各々のボーンに対応する形でマッスルリファレンスを作成します。あるマッスルリファレンスとは、基本的には各ボーンのローカル軸に対し、変形前および変形後に関して、一定の範囲と符号を持つ回転定義として表現されます。

画像3


[-1,1] に正規化された値を持っているマッスルは、対応するボーンをあるひとつのローカル軸に対して、[min,max] の範囲内で動かすことができます。注意すべきなのは、これらの正規化された値を持つマッスルは、 [-1,1] の範囲をオーバーシュートすることもできること。つまり、[-1,1] の範囲をさらに下回ったり、上回ったりするような値もとれるのです。これらの値は、その範囲で厳しい制限を課するものではなく、あるマッスルに対して通常のモーションスパン(可動範囲)を定義しているだけです。マッスルリファレンスの範囲を増やしたり、逆に減らしたりして、ヒューマノイドリグをカスタマイズすることで、そのモーションスパンを増やしたり、逆に減らしたりすることができるということを意味しています。

マッスルスペースとは、ヒューマノイドリグが持つすべてのマッスルの正規化された値の集合を指しています。それは正規化された人型ポーズであるとも言えます。あるボーンのローカル軸に対しその範囲がゼロ(すなわち、min = max)の場合には、そのボーンに対応するマッスルがないことを意味しています。
例えば、「肘」部位には、Y軸を回転させるマッスルがなく、Z軸を回転しストレッチイン/アウトすることと、X軸を回転しロールイン/アウトすることだけができます。結論から言ってしまえば、多くても47程度のマッスル値セットから構成されるマッスルスペースがあれば、人型ボディが取り得るポーズは完全に表現できるのです。

【訳者注】
上の肘のジョイントのローカル座標の解説は、Mayaでは多くの場合、肘などの1軸回転の関節は、「主軸であるX軸はプラス方向を子スケルトンの方へ向け、Y軸はプラス方向を関節を曲げる外側に向け、主にZ軸を回転させることで関節を曲げる」ようにスケルトン設計することに基づいています。スケルトンの入れ方によっては、YとZが入れ替わることもあります。
HumanIKの自動スケルトンだと、肘関節はY軸が上(もしくは下)を向いていることが多いです。いずれにしても、Tポーズでは肘は正面に向かって曲がるように設計されます。実際のアバター設定では、それを元にローカルのマッスルは調整されていると思われます。

マッスルスペースの魅力のひとつは、それがオリジナルはもとよりいかなるスケルトンリグからも切り離されて、完璧に抽象化されているということです。だから、どんなヒューマノイドリグに対してもダイレクトに適用することができるし、常に信憑性のあるポーズを作ることができます。また、マッスルスペースの美しい点は、その補間性の高さにあります。一般的なスケルトンポーズと比較して、マッスルスペースは常にアニメーションのキーフレーム間、ステートマシンのトランジション時やブレンドツリーの中で自然に補間を行います。
しかもクォータニオンやオイラー角と違って、マッスルスペースは線形補間が適用できるスカラーベクトルとして計算することができるのです。

【訳者注】
ここで解説されている「マッスル」や「マッスルスペース」という概念は、Mecanim/Humanoidに独特の概念です。
Mecanim/Humanoidの場合、スケルトンにベイクされている、主にローテーション情報からなるFKアニメーションセットが、一度、マッスルスペースという単位空間に変換されて、各アバターに対してリターゲットされるという構成になっていることに注意してみてください。

2.人の身体と人のモーションの近似について

人型キャラクター向けに新規に作成されたスケルトンリグや、キャプチャされたアニメーションは全て、人体と人間の動きの近似値となります。ボーンの数がどれだけ多くても、モーションキャプチャハードウェアがどれだけ優れていても、その結果は、本物に近いなにかにすぎません。
とはいえリガー、ゲーム会社、学校やソフトウェア企業の各々が、人間の身体や動きを最もよく表現できる方式とか、制作ニーズに最も適している方式といって、それぞれ独自の方法を提案してくるものです。
メカニムヒューマノイドリグおよびマッスルスペースの開発にあたっても、いくつかの難しい選択を迫られました。私達は、高速ランタイムとアニメーションの品質、あるいはオープン性と、標準的な定義との間で、なんらかの妥協点を見つけなければなりませんでした

スパインボーン(脊椎ボーン)が2本である理由

これは実に難しい問題です。何故3本ではなく、2本なのか? スパインボーンを好きな数、入れてしまうのではダメなのか? いったん最新の研究を忘れてみましょう。これは生物医学向けの研究ではないのですから。(もしこの分野で要求されるレベルの精度が絶対的に必要な場合には、いつでもGenericリグが使えることは、念頭においておくといいでしょう)。1本のスパインボーンでは、明らかに不十分なのは間違いないでしょう。
2本目のボーンを追加すると、大抵の用途には間に合うようになります。さらに第3、第4とボーンを追加してみましょう。しかし結果として仕上がる人体ポーズに対してわずかな改善しかみられません。これは何故でしょうか?

画像9

人間の背骨がどのように曲がるかを観察すると、胸郭に位置する背骨の部分は、ほぼ硬直していることに気がつくでしょう。残っているのは、脊椎の基部に位置する主な屈曲点と、胸郭の基部にあるもうひとつの屈曲点です。つまり、主屈曲点は2つあるということです。極端なポーズをとっている最中の曲芸師を見てみれば、このことがよくわかります。これらのことを考慮して、ヒューマノイドリグには2本のスパインボーンを使用することにしました。

ネックボーンが1本の理由

こちらは、スパインよりも簡単ですね。多くのゲーム用スケルトンリグが、ネックボーンを持っておらず、ヘッドボーンだけで十分な制御ができていることに、注意してみてください。

【訳者注】
ここで言っている「ヘッドボーン」とは、頭蓋骨のことではなく、頭部メッシュをペアレントする「ヘッドジョイント」のこと。

回転の自由度について

大抵のスケルトンリグ(それが特にゲーム用となると、ほぼ間違いなくと言ってよい)と同様に、メカニムヒューマノイドリグは回転(Rotation)アニメーションしかサポートしていません。ボーンは、その親からの相対的な移動を変えることはできません。3Dパッケージの中には、関節の柔軟性をシミュレートしたり、アニメーションをスクウォッシュ(押しつぶす)したりストレッチ(引き延ばす)するために、ボーンにある一定範囲の移動を引き起こすような仕組みをもっているものもあります。私達は、今、移動に関しても自由度を加えられないか研究をしているところです。それらは、計算性能の観点から比較的安価な方法で、かつ必要以上に複雑すぎないスケルトンリグに対してアニメーションの質を補正することができるからです。これを使って、ユーザーはリターゲティング可能なスクウォッシュやストレッチのアニメーションを作成することができるようになるかもしれません。

【訳者注】
ここで書かれている「移動に関しても自由度を加えられないか研究をしている」の部分ですが、現在では、Mecanim/Humanoidのアバター設定において、Translation DoFという形で搭載されています。詳しくは、マニュアルのこちらを参照してください。

このタイプの「FKアニメーションでジョイントの移動も伴うような例」というと、「鎖骨(Clavicle)コントローラを動かしてカートゥーン的なアクションをする」ような例が考えられます。そのようなアニメーションをMecanim/Humanoidでリターゲットする場合、HumanoidアバターのLeftShoulder、RightShoulder部分に、元のリグの鎖骨にあたる部分を割り当てた上で、Translation DoFをチェックするとよいでしょう

なおTranslation DoFがチェックオフの場合、現在のMecanim/Humanoidは、ここで書かれているように、各ジョイントの回転アニメーションのみを扱う仕様となります。

ツイストボーンがなくてもよい理由

ツイストボーンは、腕や足が極端にねじれた状態で設定される時にスキンデフォーメーションに問題が生じないように、スケルトンリグにしばしば追加されるものです。
ツイストボーンは、ねじりによって発生するデフォーメーションを手足の始点から終点まで分散させる役割を持っています。
マッスルスペースでは、ねじれの量はひとつのマッスルによって表現され、そしてそれは各手足の親ボーンに常に関連づけられています。例えば、前腕のねじれは「肘」に発生し、「手首」には発生しないようになっています。
ヒューマノイドリグはツイストボーンをサポートしていませんが、代わりにメカニムソルバーが、各手足の親からねじれ具合の比率を割り出して、各々の子のほうに割り当てします。デフォルトでその値は50%ですが、スキンデフォーメーションの問題を防ぐのに大いに役に立ちます。

【訳者注】
「ツイストボーン」とは、アニメーションで手首などを大きく180度ひねった時に、スキニングの結果が酷く捻れて、腕の見た目が酷くやせてしまうような状況をさけるために、本来の関節の間にさらにジョイントを追加し、そちら側にもインフルエンスを振ることで、スキニングの捻れ具合を和らげるテクニックです。上の説明は、Mecanim/Humanoidはそれに匹敵するような仕組みを、リターゲットの時点で持たせてあることを意味しています。
詳しくは、こちらのAdditional Settings内の各Twistコントロールを見てみてください。

3.ヒューマノイドのルートおよび質量中心(Center of mass)について

さて、ワールド空間において人体の位置と向きを表現するには、どのような方法が良いのでしょうか?
標準的なスケルトンリグでは、階層の最上位にあるボーン(通常は、ヒップ(Hip)とかペルビス(Pelvis/骨盤)とかいうものですが、どう呼ばれようとその位置にあるもの)に、ワールド空間における位置と向きのカーブが設定されています。この方式は、ある特定のキャラクターにはうまく機能しますが、リターゲットとをするとなると不適切なものとなります。それは、あるスケルトンリグから別のスケルトンリグにリターゲットすると、大抵の場合、最上位のボーンがその他のスケルトンに対して、相対的に異なる位置と回転を持っているからです。

画像6


マッスルスペースでは、ワールド空間におけるヒューマノイドの位置を表すために、その質量中心(Center of mass)を使用します。質量中心には、人間の平均的な身体部位の質量分布を用いて近似しています。さらにスケール調整後のヒューマノイドポーズの重心は、どのヒューマノイドキャラクターでも同じであると仮定しています。これは大胆な仮定ですが、実際にやってみると、幅広いアニメーションやヒューマノイドキャラクターに対して非常にうまく機能することがわかります。
立っているアニメーションや歩いているアニメーションでは、質量中心は腰のあたりにありますし、バックフリップのようなよりダイナミックな動きでは、身体が質量中心から離れていくように移動する一方で、質量中心それ自身はアニメーションの全体を通じて、最も安定的な位置に留まっている様子がわかります。

身体の方向について

マッスルスペースでは、ワールド空間での位置を質量中心で表したのと同様に、平均身体方向(Average body orientation)をワールド空間における方向として用いています。平均身体方向のアップベクターは、両ヒップおよび両肩の各々の中間点より計算します。従って、フロントベクターは、アップベクターと左右ヒップおよび両肩ベクトルの平均との外積となります。ここでも同様に、あるヒューマノイドポーズにおける平均身体方向は、すべてのHumanoidリグについて同じであると仮定します。質量中心の時と同様に、歩いたり、走ったりする時は、下半身と上半身の姿勢が自然に補正されるため、平均身体方向は比較的安定的に参照できます。

ルートモーションについて

ルートモーションについては後ほど詳しく説明しますが、一口で言ってしまえば、質量中心と平均身体方向の射影からルートモーションを自動生成しています。ヒューマノイドアニメーションに関しては、質量中心や平均身体方向が安定したプロパティとして得ることができますので、それが安定的なルートモーションを導出するのに使われ、ナビゲーションやモーション予測のためにも役立つのです。

スケールについて

マッスルスペースにおいて、正規化された人型ポーズに未だ欠けている要素があります。それはそれらの全体としてのサイズです。何度も言いますが、私達は人型モデルのサイズを記述するための良い方法をずっと探しています。それらは例えばヘッドボーンの位置のような特別な点に依存するものではダメで、様々なリグの間で首尾一貫している必要があります。今のところ、Tスタンス状態における人型キャラクターの質量中心の高さをそのスケールとしてそのまま使用しています。正規化された人型ポーズを最終的に得るために、マッスルスペースの質量中心の位置をこのスケールで割ってやります。別の言い方をすると、マッスルスペースは、Tスタンス時に質量中心の高さが1メートルの位置にある人型モデルとして正規化されていることになります。マッスルスペース内の全ての位置は、いわばこの正規化されたメートル単位で扱われるのです。

【訳者注】
ヘッドボーンの位置が、キャラクターのサイズとして使えない理由ですが、それがモデルの背の高さを表している訳ではないことから考えればすぐにわかると思います。多くの場合、それは頭部メッシュをペアレントするジョイントにすぎませんので、モデルの背の高さを直接的に表現しているわけではないからです。

4.オリジナルの手と足の位置について

あるヒューマノイドリグに、あるマッスルスペースを適用する場合、ヒューマノイドリグ同士のプロポーションの違いのために、元のアニメーションとは異なる位置や向きに手足が来てしまうことがあります。結果として足が滑ったり、手がうまく届かなくなったりする。そのため、マッスルスペースにはオプションで手と足の位置と向きが含まれています。手足の位置と向きは、マッスルスペース内のヒューマノイドルート(質量中心、平均身体方向、ヒューマノイドスケール)を基準にして正規化されています。これらのオリジナルの位置と向きは、IKパスを用いることで、リターゲットされたスケルトンのポーズをオリジナルのワールド空間の位置に合わせて固定するために使用することができます。

IK(インバースキネマティック)ソルバーについて

画像7

手足のIKソルバーが主要なゴール地点としているのは、マッスルスペースのオプションにある、オリジナルの手足の位置と方向です。これはメカニムのコントローラーステートにおいて、「Foot IK」トグルが有効になっている時に、足の制御システムがおこなっていることです。
これらの場合、リターゲットされたスケルトンポーズが、元のIKゴールから大きく離れることはありません。修正しなければいけないIKエラーが小さいのは、それがヒューマノイドリグのプロポーションの差より引き起こされたものだからです。IKソルバーは、リターゲッ トされたスケルトンのポーズをほんのわずか修正するだけで、元の位置と方向に一致する最終的なポ ーズを生成します。
IK はリターゲッ トされたスケルトンポーズをわずかに変更するだけなので、膝や肘の「ポッピング(※膝や肘の関節が一瞬でガクッと動くような不自然な動きのこと)」のようなアニメーションのアーティファクト(不具合)を引き起こすことはほとんどありません。その場合でも、IK ソルバーの一部であるスクウォッシュ&ストレッチソルバーがあるので、腕や脚が最大に伸ばされる場合に近づいた時に発生しがちなポッピングを防止します。デフォルトでは、許容されるスクウォッシュとストレッチの量は、腕または脚の全長の5%までに制限されています。腕や脚のストレッチ量が 5% 以下に制限されていることよりも、肘や膝にポッピングが発生することほうが、はるかに目立つし、醜く感じられるものです。スクウォッシュ&ストレッチソルバーは、0%に設定するとオフにすることもできますので、注意してください。
IKリグに関しては後に詳しく説明します。小道具の扱い方、複数のIKパスの使い方、外部環境とのインタラクションや人型キャラクター間のインタラクションなどを、説明するつもりです。

【訳者注】
リアルタイムIKを使ったアニメーション補正については、Unity 2019.x以降に搭載された、Animation Riggingを参照するとよいでしょう。

Unity 2019.1 の Animation Rigging プレビューパッケージの概要
高度な Animation Rigging:キャラクターとプロップのインタラクション

5.オプションボーンについて

ヒューマノイドリグには、オプション的なボーンがいくつかあります。胸、首、左肩、右肩、左つま先、右つま先がそれです。既存のスケルトンリグ多くは、これらのオプションボーンを持っていないのですが、それらのボーンを入れることで、よりきっちりとしたヒューマノイドを作り上げたいと考えています。
ヒューマノイドリグは、オプションで左目と右目にあたるオプションボーンをサポートしています。目のボーンにはそれぞれに2つのマッスルがあり、ひとつは上下移動、もうひとつは内側および外側への移動をします。目のボーンは、同時にヒューマノイドリグのLookAtソルバーと連携し、「何かを見つめる(LookAt)」際に、背骨、胸、首、頭、そして目の各ボーンに動作を適宜割り振ることができます。LookAtソルバーについては、ヒューマノイドIKリグで詳しく説明します。

【訳者注】
LookAtソルバーに関しては、以下を参照。
Animator.SetLookAtWeight

下のムービーはユニティちゃんへの実装例です。
IKLookAt.cs
DeltaLookAtAxis.cs

指のシステム

最後に、ヒューマノイドリグは指をサポートしています。各指にそれぞれ0から3までの数字を割り当てることができますが、 数字0の指は、単にこの指が定義されていないことを意味しています。数字1の指はストレッチ(曲げる)用とスプレッド(広げる)用にふたつのマッスルがあり、数字2以降の指にはそれぞれストレッチ用にマッスルがひとつあります。手の指が定義されていない場合には、指ソルバーの負荷もありません。

6.スケルトンリグの要件について

【訳者注】
ここからMecanim/Humanoidにマッピングされるスケルトンの要件が始まります。本文中で、
スケルトンリグ⇒オリジナルのモデルに付いているスケルトン。スキニングがバインドされている対象。
ヒューマノイドリグ⇒Mecanim/Humanoidとしてマッピングされるターゲットのリグ。事実上ヒューマノイドアバターと同じ。
として読むと理解しやすいと思います。

中間(In-between)ボーンについて

多くの場合、スケルトンリグはヒューマノイドリグで定義されるボーンよりも多くのボーンを持つことになります。中間(In-between)ボーンとは、ヒューマノイドで定義されているボーンの間にあるボーンのことです。たとえば、3dsMAXのBipedでは、3番目のスパインボーンが中間ボーンとして扱われます。これらのボーンはヒューマノイドリグによってサポートされてはいますが、中間ボーンはアニメーション化されないことに注意してください。これらのボーンは、ヒューマノイドリグで定義されている自身の親に対して相対的に、デフォルトの位置および方向を維持しつづけることになります。

標準的な階層構造について

ヒューマノイドリグとの互換性を持つために、スケルトンリグはある標準的な階層構造に従っている必要があります。スケルトンは、各ヒューマノイドボーンの間に中間ボーンをいくつか持っていてもかまいませんが、以下のようなパターンに従っている必要があります:

腰(尻)/HIps⇒大腿/Upper Leg⇒下腿/Lower Leg⇒/Foot⇒つま先/Toes
腰(尻)/Hips⇒背骨/Spine⇒/Chest⇒/Neck⇒/Head
/Chest⇒/Shoulder⇒上腕/Arm⇒前腕/Forearm⇒/Hand
/Hand⇒最も体幹に近い指/Proximal⇒中間の指/Intermediate⇒最も体幹から遠い指/Distal

Tスタンスについて

画像8

Tスタンスは、それに基づいて各マッスルがセットアップされるので、ヒューマノイドリグ作成において最も重要なステップです。リファレンスポーズとしてTスタンスが選ばれたのは、概念的に考えやすい上に、様々な解釈が入る込む余地がないからです。

● Z軸方向に向かって、まっすぐに立っていること
● 頭および目がZ軸方向に向いていること
● Z軸に対して平行に、両足が接地していること
● X軸に沿って地面に対し平行に、両腕が開いていること
● X軸に沿って地面に対して平行に、両手は平らにし、かつ手のひらは下向きであること
● X軸に沿って地面に対して平行に、各指(親指を除く)はまっすぐに伸ばしていること
● 親指は、X軸とZ軸に対して半分ぐらいの角度(45度)で、かつ地面に対して平行にまっすぐに伸ばしていること

ただし「まっすぐに」と言っても、それは必ずしも、ボーンが完全に一直線に整列していることを意味している訳ではありません。スキンがスケルトンにどのようにアタッチしているかにもよります。リグによっては、スキン自体はまっすぐに見えても、その下のスケルトンはそうでない場合もあるかもしれません。だからこそ、最終的にスキニングされたキャラクターに対してTスタンスをセットすることが大切なのです。特にモーションキャプチャデータをリターゲットするためにヒューマノイドリグを作成している場合には、モーションキャプチャ機材中のアクターにTスタンスをとってもらった状態で、少なくとも数フレームはキャプチャすることを強くお薦めします。

【訳者注】
モデリング自体は、Aスタンスで行い、そのままスキニングしたとしても、Mecanim/Humanoidにする時には、リグを動かしてキャラクターを上の仕様に沿ってTスタンスにしてからUnityにインポートしたほうがよいということです。

マッスルレンジの調整

デフォルトの状態でマッスルレンジは、人の筋肉の有効範囲を最適に表現できる値にセットされています。ほとんどの場合、その値を変更する必要はありません。よりカートゥーン的なキャラクターの場合には、身体の内側に腕がめり込まないようにレンジを小さくしてみたり、脚の動きをデフォルメするためにレンジを大きくしてみると良いでしょう。モーションキャプチャデータをリターゲットするためにヒューマノイドリグを作成した場合は、マッスルレンジの調整はするべきではありません。アニメーションクリップがデフォルト状態を無視してしまうかもしれません。

【訳者注】
モーションキャプチャデータのリターゲットは、下のスライドを参考にしてみてください。

7.リターゲティングとアニメーションクリップについて

メカニムのリターゲティングは、2つのフェーズに分かれています。最初のフェーズでは、標準的なスケルトン変形アニメーションを正規化されたヒューマノイドアニメーションクリップ(またはマッスルクリップ)に変換しています。このフェーズは、アニメーションファイルのインポート時にエディタで行われます。内部的には「RetargetFrom」と呼ばれています。次のフェーズはプレイモード中に発生し、マッスルクリップが評価され、ヒューマノイドリグのスケルトンボーンに適用されます。

画像9


このフェーズは、内部的には「RetargetTo」と呼ばれていますが、リターゲッティングを2つのフェーズに分けることのメリットは大きく2つあります。ひとつはソルバーのスピードです。リターゲットプロセスの半分は、オフラインで処理されているので、ランタイムで処理しなければならないのは、残り半分のみとなります。もうひとつの利点は、シーンの複雑さとメモリ使用量です。マッスルクリップは元のスケルトンを完全に抽象化しているため、リターゲットを実行するランタイムには、ソースとなる元のスケルトンは含める必要がありません。
セカンドフェーズは、実に簡単なものです。有効なヒューマノイドリグに対し、RetargetToソルバーでマッスルクリップを適用するだけです。これは、ユーザーの見えないところで自動で行われます。
ファーストフェーズで、スケルトンアニメーションをマッスルクリップに変換するのは少し難しいかもしれません。スケルトンアニメーションクリップは一定のレートでサンプリングされます。サンプルごとに、スケルトンポーズをマッスルスペースポーズに変換し、マッスルクリップにキーを追加していきます。すべてのスケルトンリグが適合するわけがありません。スケルトンリグの構築方法やアニメーションの方法は非常に多くありますからね。スケルトンリグによっては、有効な出力が得られるものもありますが、情報をロスする可能性があるものあります。ここで、ロスレスで正規化されたヒューマノイドアニメーション、すなわちマッスルクリップを作成するために必要なことを検討してみましょう。

注意:ロスレスとは、この場合、スケルトンリグからマッスルクリップにリターゲットし、かつ同じスケルトンリグに再度リターゲットし直しても、アニメーションが完全な状態で保持されていることを意味しています。実際には、ほぼそのままの状態になります。元にあった腕および脚のねじれは失われますが、ツイストソルバーが計算した値に置き換えられます。本ドキュメントですでに説明したように、マッスルスペースにはねじれの再分配にあたるものがないからです。

● 各ボーンのローカル位置は、ヒューマノイドリグとアニメーションファイルで同一でなければならない。これはヒューマノイドリグを作成するのに使用されたスケルトンがアニメーションファイル内に含まれているスケルトンと違っている場合に起こりえることです。まったく同じスケルトンを使用するように注意しましょう。そうでない場合には、インポート時にコンソールに警告が表示されます。

● 中間ボーンにはアニメーションがないようにしなければいけません。これは、3dsMAXのスケルトンを使っている時にしばしば発生することです。3dsMAXのスケルトンでは3つめのスパインボーンに移動および回転の両方のアニメーションが付いていることがあります。これは「Bip001」がHipとして使われており、かつ「Pelvis」にアニメーションが付いている場合にも起こります。そうでない場合は、インポート時にコンソールに警告が表示されます。

● ヒューマノイドリグとアニメーションファイルでは、中間ボーンのローカル方向が同じでなければなりません。これは、スキンバインドポーズを元にしてTスタンスを作成する、Humanoid Auto Configureを使用している場合に発生する可能性があるものです。中間ボーンのスキンバインドポーズのローテーションを、アニメーションファイル中のものと同じにしてください。そうでない場合は、インポート時にコンソールに警告が表示されます。。

● Hipを除き、各ボーンに付けられた移動アニメーションはサポートされません。3dsMAXのBipedでは、スパインボーンに移動アニメーションを付けていることが時々あります。その場合、インポート時に警告が出るか、そうでない場合には、コンソールに警告が表示されます。

ここでは3dsMAXのBipedリグがトラブルが起こりやすいリグとして指摘していますが、それはBipedリグに人気があり、それらがメカニムでも使われるケースが多かったので、そのサポートせねばならなかったからです。

メカニムヒューマノイドリグで使用するために、新規にアニメーションを作成する場合は、最初から上記のルールに従っておくほうがよいでしょう。
上のいくつかのルールに従っていないけど、すでに手元にあるアニメーションを使いたい場合でも、使うこと自体は問題はありません。それぐらいメカニムのリターゲットソルバは堅牢で、十分に使えるアウトプットを出力してくれますが、その場合、ロスレス変換は保証されません。

【訳者注】
3dsMaxのBipedに関する注意ですが、以下のnoteも参考にしていただけると良いかと思います。
あと、詳しくは調べてませんが、上で指摘されている3dsMaxのBipedで予定外のトランスフォーム情報が入ってしまう件は、上でコメントしてますTranslation DoFの導入でかなり緩和されたはず。(かなり以前のUnityのバージョンアップ履歴にそんなことが書いてあった記憶があります^^;)


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