Engine & platform

メカニムヒューマノイド

ROBERTL / UNITY TECHNOLOGIESContributor
May 26, 2014|16 分
メカニムヒューマノイド
このウェブページは、お客様の便宜のために機械翻訳されたものです。翻訳されたコンテンツの正確性や信頼性は保証いたしかねます。翻訳されたコンテンツの正確性について疑問をお持ちの場合は、ウェブページの公式な英語版をご覧ください。

この投稿では、メカニムヒューマノイドの技術について説明します。どのように機能するのか、長所と短所、なぜそのような選択をしたのか、そしてできればその長所を最大限に生かすためのヒントがあればと思う。一般的なセットアップと手順については、 Unity Documentationを参照してください

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

Mecanim Humanoid RigとMuscle Spaceは、ヒューマノイドボディとアニメーションを表現するための標準的なスケルトンノード階層とジオメトリトランスフォームに代わるソリューションです。

Humanoid Rigは、スケルトン・ノード階層の上に記述されます。人骨のセットを特定し、それぞれの人骨に対応する筋肉参照(Muscle Referential)を作成する。マッスル・レファレンシャルは、基本的に各軸の範囲と符号を持つ前後の回転である。

腕とストレッチ

Muscleは正規化された値[-1,1]で、範囲[min,max]の間で1軸のボーンを動かします。マッスル正規化値は[-1,1]を下回ったり上回ったりしてオーバーシュートする可能性があることに注意。レンジはハードリミットではなく、筋肉の正常な可動域を定義するものである。特定のHumanoid Rigは、Muscle Referentialの可動域を拡大または縮小することができます。

マッスル・スペースは、ヒューマノイド・リグのすべてのマッスル正規化値の集合です。これはノーマライズされたヒューマノイドのポーズである。ボーン軸の範囲がゼロ(min= max)は、その軸にマッスルがないことを意味する。

例えば、肘にはY軸の筋肉はなく、伸び縮み(Z軸)とロールイン・アウト(X軸)のみである。最終的に、マッスル・スペースは、ヒューマノイドのボディ・ポーズを完全に表現する最大47のマッスル値で構成されます。

腕を伸ばす

マッスル・スペースの美しい点は、オリジナルやスケルトン・リグから完全に抽象化されていることだ。あらゆるヒューマノイドリグに直接適用でき、常に信じられるポーズを作成します。もうひとつ美しいのは、『マッスル・スペース』の補間能力の高さだ。標準的なスケルトン・ポーズと比較すると、マッスル・スペースは、アニメーションのキーフレーム間、ステートマシン遷移中、またはブレンド・ツリーでミックスされたときに、常に自然に補間されます。

四元数やオイラー角とは対照的に、筋肉空間は線形補間できるスカラーのベクトルとして扱えるので、計算の面でも優れている。

人体および人体運動の近似値

ヒューマノイド・キャラクターやアニメーションのキャプチャー用に作られた新しいスケルトン・リグはすべて、人体や人間の動きの近似となる。どんなに骨が多くても、どんなにMOCAPハードウェアが優れていても、結果は本物の近似値になる。

リガー、ゲーム会社、学校、ソフトウェア会社などは、人体や動きを表現するのに最適なもの、自分たちの制作ニーズに最適なものを自分たちで提案する。

メカニムヒューマノイドリグとマッスルスペースの精巧さは、いくつかの難しい選択を迫られた。私たちは、高速なランタイムとアニメーションの品質、あるいはオープン性と標準的な定義の間の妥協点を見つけなければならなかった。

2 背骨
背骨

これは難しい。なぜ3本ではなく2本なのか?生物医学の研究とは関係ない。(このレベルの精度がどうしても必要な場合は、ジェネリック・リグを使うことができます)。背骨の1本が明らかに不足している。

2本目を加えれば、ほとんどの道筋が見えてくる。3人目、あるいは4人目であっても、最終的な人間のポーズにはわずかな貢献しかできない。なぜだろう?人間の背骨の曲がり方を見ると、胸郭にある背骨の部分がほとんど硬いことに気づくだろう。残るのは、背骨の付け根にある主屈曲点と、胸郭の付け根にあるもうひとつの屈曲点である。つまり、主な屈曲点は2つある。極端なポーズであっても、コンタクティを見ているとそれがよくわかる。これらのことを考慮して、私たちは人型リグの背骨を2つにすることにしました。

1 首の骨

これは背骨よりも簡単だ。多くのゲーム用スケルトン・リグには首の骨すらなく、頭の骨だけで何とか仕事をこなしていることに注意してほしい。

回転DoF

ほとんどのスケルトン・リグと同様に(ゲームの場合はなおさら)、Mecanim Humanoid Rigは回転アニメーションにしか対応していません。ボーンは、親に対する相対的なローカル翻訳を変更することはできません。3Dパッケージの中には、関節の弾力性やスクワッシュ&ストレッチアニメーションをシミュレートするために、ボーンにある程度の並進を誘導するものがあります。私たちは現在、並進自由度を追加することを検討しています。並進自由度は、あまり詳細でないスケルトン・リグのアニメーションの質を補うために、計算性能の面で比較的安価な方法だからです。また、リターゲット可能なスカッシュ・アニメーションやストレッチ・アニメーションを作成することもできる。

ひねり

ひねりのない骨

ツイストボーンは、腕や脚を極端にひねったときの皮膚の変形問題を防ぐために、スケルトン・リグに追加されることがよくあります。

ひねり骨は、ひねりによって生じる変形を四肢の始点から終点まで分散させるのに役立つ。

マッスルスペースでは、ひねりの量はマッスルで表され、常に四肢の親骨と関連している。元前腕のひねりは手首ではなく肘で起こる。

ひねり

Humanoid Rigsはツイストボーンをサポートしていませんが、Mecanimのソルバーでは、親から取り出され、手足の子にかけられるツイストのパーセンテージを指定することができます。

ヒューマノイド・ルートと重心

さて、世界空間における人体の位置と向きを表現する最良の方法は何だろうか?

ヒエラルキーの一番上のボーン(通常、腰、骨盤、またはそれが何と呼ばれるものであれ)は、標準的なスケルトン・リグのワールド空間の位置と向きの曲線がある場所です。これは、特定のキャラクターに対しては問題なく機能しますが、あるスケルトン・リグから別のスケルトン・リグへのリターゲットを行うときには不適切になります。


バク転

マッスル・スペースは、ヒューマノイドの重心を使って世界空間での位置を表します。質量中心は、人間の平均的な身体部位の質量分布を用いて近似される。スケール調整後の人型ポーズの重心は、どの人型キャラクターでも同じであるという仮定を行う。これは大きな仮定だが、さまざまなアニメーションや人型キャラクターに対して非常にうまく機能することが示されている。

立ち上がるアニメーションや歩くアニメーションの場合、重心は腰のあたりにあるのは事実だが、バックフリップのようなダイナミックな動きの場合、重心から体がどのように離れ、重心がアニメーション上で最も安定しているように感じられるかがわかる。

体の向き

マッスルスペースのワールドスペースの位置に対して重心が行うのと同様に、ワールドスペースの方位に対しても平均的な体の向きを使う。腰と肩の中間点から平均的な体の向きアップベクトルが計算される。フロントベクトルは、アップベクトルと平均的な左右のヒップ/ショルダーベクトルのクロス積となる。また、この人型ポーズの平均的な体の向きは、すべての人型リグで同じであると仮定します。重心に関しては、平均的な体の向きは、歩いたり走ったりするときに下半身や上半身の向きが自然に補正されるため、安定した基準となる傾向がある。

ルート・モーション

ルートモーションに関するより深い論文は後述するが、導入として、重心と平均的な体の向きの投影は、自動的にルートモーションを作成するために使用される。重心と平均的な体の向きがヒューマノイド・アニメーションの安定した特性であるという事実は、ナビゲーションや動作予測に使用できる安定したルート・モーションにつながる。

規模

マッスル・スペースが完全に正常化されたヒューマノイドのポーズになるには、まだ1つ足りないことがある...全体の大きさだ。繰り返しになりますが、私たちは、頭の骨の位置のような特定のポイントに依存しないヒューマノイドの大きさを表現する方法を探しています。T-スタンスでの人型キャラクターの重心の高さは、そのままスケールとして使用されます。マッスルスペースの重心位置は、このスケールで割られ、最終的に正規化されたヒューマノイドのポーズが生成される。別の言い方をすれば、マッスル・スペースは、T-スタンス時の重心の高さが1であるヒューマノイド用に正規化されている。マッスル・スペース内のすべての位置は、正規化されたメートル単位であると言われている。

本来の手と足の位置

Humanoid RigにMuscle Spaceを適用すると、Humanoid Rigのプロポーションの違いにより、手や足の位置や向きが元のアニメーションと異なる場合があります。その結果、足が滑ったり、手がきちんと届かなかったりすることがある。このため、マッスル・スペースには、手と足の元の位置と向きがオプションで含まれている。手と足の位置と向きは、マッスルスペースのヒューマノイドルート(重心、平均的な体の回転、ヒューマノイドスケール)に対して正規化されます。これらの元の位置と方向は、IKパスを使用して、リターゲットされたスケルトンのポーズを元のワールド空間の位置に一致するように修正するために使用できます。

IKソルバー
IKソルバー

腕と脚のIKソルバーの主な目標は、筋肉空間で任意に見つかる元の手と足の位置と向きに到達することである。これは、Mecanimコントローラーのステートで "Foot IK "トグルが有効になっているときに、フードの下で起こることです。

このような場合、リターゲットされたスケルトンのポーズは、元のIKゴールから大きく離れることはない。修正すべきIKエラーは、人型リグの比率の違いによって誘発されるだけなので、小さい。IKソルバーは、リターゲットされたスケルトンのポーズをわずかに修正するだけで、元の位置と向きに一致する最終的なポーズを生成する。

IKはリターゲットされたスケルトンのポーズをわずかに修正するだけなので、膝や肘が飛び出すようなアニメーションのアーティファクトを引き起こすことはほとんどありません。それでも、IKソルバーの一部であるSquash and Stretchソルバーがあり、腕や脚が最大伸展に近づいたときに飛び出すのを防いでいる。デフォルトでは、スクワッシュとストレッチの許容量は、腕または脚の全長の5%に制限されている。腕や脚の5%以下のストレッチよりも、肘や膝のポキポキの方が目立つ(そして醜い)。なお、スカッシュとストレッチの解像度は、0%に設定することでオフにすることができる。

IKリグについてのより詳細な論文はまた後日。小道具の扱い方、複数のIKパスの使い方、環境との相互作用、人型キャラクター同士の相互作用などを説明する。

オプションの骨

Humanoid Rigにはオプションのボーンがいくつかあります。これは胸、首、左肩、右肩、左足指、右足指の場合である。既存の多くのスケルトンリグには、オプションのボーンがないものもありますが、それでも、それらを使って有効なヒューマノイドを作りたかったのです。

Humanoid RigはLeftEyeとRightEyeのオプションボーンもサポートしています。眼球の骨には、上下に動く筋肉と内外に動く筋肉がそれぞれ2つずつある。Eyeボーンは、Humanoid Rig LookAtソルバーとも連動しており、背骨、胸、首、頭、目の調整を分配することができます。LookAtソルバーについては、今後発表されるヒューマノイドIKリグの論文で詳しく紹介される予定です。

最後に、ヒューマノイド・リグは指をサポートする。各指には0~3桁の数字が入る。0桁は単に、この指が定義されていないことを意味する。1桁目には2つの筋肉(ストレッチとスプレッド)、2桁目と最後の桁には1つの筋肉(ストレッチ)がある。手の指が定義されていない場合、指のソルバーのオーバーヘッドはないことに注意してください。

スケルトン・リグの要件

骨の間

多くの場合、スケルトンリグはヒューマノイドリグで定義されたものより多くのボーンを持ちます。中間骨とは、人型に定義された骨の間にある骨のこと。例えば、3DSMAX Bipedの3番目の背骨は、中間ボーンとして扱われます。これらはHumanoid Rigでサポートされていますが、中間のボーンはアニメーションしないことに注意してください。ヒューマノイドリグで定義された親に対するデフォルトの位置と向きのままです。

スタンダード・ヒエラルキー

スケルトン・リグは、私たちのヒューマノイド・リグと互換性を持たせるために、標準的な階層を尊重しなければなりません。骨格は、人型の骨と骨の間に、いくつでも中間の骨を持つことができるが、以下のパターンを尊重しなければならない:

ヒップ - 上肢 - 下肢 - 足部 - 足指

腰 - 背骨 - 胸 - 首 - 頭

胸 - 肩 - 腕 - 前腕 - 手

手 - 近位 - 中間 - 遠位

T-スタンス
Tスタンス

T字構えは、筋肉のセットアップが基本になるため、ヒューマノイド・リグを作る上で最も重要なステップです。T-スタンスのポーズが参考ポーズとして選ばれたのは、概念化しやすく、どうあるべきかを解釈する余地がそれほどないからだ:

- Z軸を向いてまっすぐ立つ

- 頭部と目がZ軸を向いている

- Z軸に平行に地面に足をつける

- X軸に沿って地面に平行に腕を開く

- 両手を平らにし、手のひらを下にしてX軸に沿って地面と平行にする。

- 指はX軸に沿って地面と平行にまっすぐ伸ばす。

-親指はX軸とZ軸の中間(45度)で地面と平行にまっすぐ伸ばす。

まっすぐ」と言っても、骨が必ずしも完全に一直線である必要はない。皮膚がどのように骨格に付着しているかによる。リグの中には、皮膚はまっすぐに見えても、その下の骨格がそうでないものがある。そのため、最終的なスキンのキャラクターにはTスタンスを設定することが重要である。MOCAPデータをリターゲットするためにヒューマノイドリグを作成する場合、MOCAPスイートでアクターが行うTスタンスの少なくとも数フレームをキャプチャするのが良い方法です。

筋力範囲の調整

デフォルトでは、筋力範囲は人間の筋力範囲を最もよく表す値に設定されている。ほとんどの場合、修正すべきではありません。よりアニメ的なキャラクターの場合は、腕が体に入らないように範囲を狭めたり、脚の動きを誇張するために範囲を広げたりすることができる。MOCAPデータをリターゲットするためにヒューマノイドリグを作成する場合は、作成されるアニメーションクリップがデフォルトを尊重しないため、範囲を変更すべきではありません。

リターゲティングとアニメーションクリップ

Mecanimのリターゲティングは2つのフェーズに分かれている。最初の段階は、標準的なスケルトン・トランスフォーム・アニメーションを、正規化されたヒューマノイド・アニメーション・クリップ(またはマッスル・クリップ)に変換することです。この段階は、アニメーションファイルがインポートされたときにエディターで起こります。内部的には "RetargetFrom "と呼ばれている。第2段階は、プレイモードで、マッスルクリップが評価され、ヒューマノイドリグのスケルトンボーンに適用されるときに行われます。

マッスルクリップ

リターゲティングを2つのフェーズに分けることには、2つの大きな利点がある。まず1つ目は、解くスピードだ。リターゲティングプロセスの半分はオフラインで行われ、残りの半分だけが実行時に行われる。もうひとつの利点は、シーンの複雑さとメモリ使用量だ。マッスルクリップは元のスケルトンが完全に抽象化されているため、リターゲッティングを実行するためにソーススケルトンをランタイムに含める必要はありません。

第2段階は単純明快だ。有効なヒューマノイドリグができたら、RetargetToソルバーでマッスルクリップを適用するだけです。これはフードの下で自動的に行われる。

最初の段階、スケルトン・アニメーションをマッスル・クリップに変換するのは、少し難しいかもしれません。スケルトンアニメーションクリップは固定レートでサンプリングされる。各サンプルについて、スケルトンのポーズは筋肉空間のポーズに変換され、キーが筋肉クリップに追加されます。すべてのスケルトン・リグが適合するわけではありません。スケルトン・リグを構築し、アニメートする方法は実にさまざまです。いくつかのスケルトン・リグは有効な出力を出すが、情報が失われる可能性がある。ここで、ロスレスで正規化された人型アニメーションを作成するために必要なものをおさらいしよう。

注意:ロスレスとは、スケルトン・リグからマッスル・クリップにリターゲットし、同じスケルトン・リグにリターゲットし直すと、アニメーションがそのまま維持されることを意味します。実際、ほとんど無傷だろう。腕と脚の元のひねりは失われ、Twistソルバーが計算したものに置き換えられる。この文書で先に説明したように、マッスル・スペースにはツイスト・リパーティションは表現されていない。

- ボーンのローカル位置は、ヒューマノイドリグとアニメーションファイルで同じでなければなりません。人型リグの作成に使用したスケルトンが、アニメーションファイルのスケルトンと異なることがあります。必ず全く同じ骨格を使用すること。そうでない場合は、インポート時にコンソールに警告が送られる。

- 中間のボーンにはアニメーションをつけてはいけません。これは、3DSMAXのスケルトンで、3番目の背骨のボーンに並進と回転の両方のアニメーションがある場合によく起こります。また、Bip001をヒップとして使用し、そのペルヴィスにアニメーションをつけたときにも起こる。そうでない場合は、インポート時にコンソールに警告が送られる。

- 中間ボーンのローカル方向は、ヒューマノイドリグとアニメーションファイルで同じでなければなりません。これは、Tスタンスを作成するためにスキンバインドポーズに依存するヒューマノイド自動設定を使用している場合に発生する可能性があります。ボーン間のスキンバインドポーズ回転が、アニメーションファイルにあるものと同じであることを確認してください。そうでない場合は、インポート時にコンソールに警告が送られる。

- ヒップを除き、ボーンでは並進アニメーションはサポートされていません。3DSMAX Bipedでは、背骨に並進アニメーションが入ることがあります。警告はコンソールに送信される。

ここで問題リグとして指摘されているのが3DSMAX Bipedだ。それはおそらく、その人気と、私たちがMecanimで使用される多くのケースをサポートしなければならなかったという事実のためだろう。Mecanim Humanoid Rigで使用する新しいアニメーションを作成する場合は、最初から上記のルールに従ってください。Mecanimのリターゲットソルバーは堅牢で、有効な出力を生成しますが、ロスレス変換は保証できません。

Mecanim Humanoid Rigで使用する新しいアニメーションを作成する場合は、最初から上記のルールに従ってください。既存のアニメーションを使いたいが、ルールの一部を破っている場合、Mecanimのリターゲットソルバーはロバストで、有効な出力を生成するので、まだ可能です。