歩行サイクルアニメーションの「モーション」をアニメーション化する一般的な方法


13

私はこれをBlenderアーティストのフォーラムに投稿したばかりで、おそらくゲーム開発に特化したより多くの視聴者からより良い反応を得られると気づいたので、クロスポストをおpostびします!それは正しい理由です:)

私は、Ogreを使用して、ゲームプロジェクトのために歩くキャラクターをアニメーション化しようとしているプログラマです。Blenderで非常に簡単なウォークサイクルを作成し、Ogreにエクスポートしたところ、問題なく再生されました。罰金では、私はそれが動作することを意味しますが、ひどい足の滑りがあります。これは、Blenderでウォークをその場で(原点で)アニメーション化しただけであり、もちろん「ウォークスピード」がそれに対応するかどうかもわからないためです。アニメーションの足の動きと一致する必要はありません。

だから私の質問は次のとおりです。この種のものに対する通常のアプローチは何ですか?仕事ではMayaを使用し、アニメーターはキャラクターの「位置」を表す特別な「moveTrans」ノードをアニメートする(またはルートノードの動きからエクスポーターに生成させる)か、ゲームはこれを読むことができますアニメーションがキャラクターを動かす速さを知るため。そのため、Mayaファイルでは、キャラクターは1サイクル前に進み、この追加のノードは彼らと一緒に足で続きます。私はオープンソースの土地でこのようなものを見たことはありませんし、Ogre Exporterスクリプトには確かにそれに対する規定はありません。このために通常何をしますか?


1
ここでは概念のいくつかの素晴らしい説明との議論だ:blog.wolfire.com/2011/08/...
ベンHymers

回答:


10

それを行うには、ルートモーションまたは「コード内」の2つの方法があります。

ルートモーションを使用すると、基本的に「moveTrans」ノードで提案していることを正確に把握できます。そのオブジェクトのモーションを使用して、歩行サイクルを再生する速度を決定します。ソートの逆ルックアップを実行して、位置Xにいる場合はどのフレームにいる必要があるかを把握できる場合があります。しかし、ルートモーションの本当の利点は、真にリアルなアニメーションを得るためには、動きが真の線形パスではないという事実を考慮する必要があることです。実在の人々は、時間の経過とともに可変速度で移動するか、多分彼らは少し左右にシャッフルしています。

Mixamoは、Unityを使用したルートモーションコントロールの良い例でした。ここにビデオがあります:http : //vimeo.com/12052874

現在、ルートモーションには欠点があります。「ウォーク」アニメーションを階段で動作させようとすると、トリッキーになる可能性があります(理想的には、別の階段/ラダークライミングアニメーションを用意し、アニメーションでも同様にすべての動きを行う必要があります)。また、IKが実際にどのように機能するかについては、まったくわかりません。

これを「コードで」実行することは、プログラミングの側面からはるかに簡単です。私が提案することは、最初にすべてのユニットが一貫していることを確認することです。たとえば、Mayaの1ユニットとゲームは1メートルです。次に、アーティストにキャラクターの歩行をアニメーション化させます(前方への移動が完了します)。それを使用してアニメーションの速度を計算し、前進速度なしでアニメーションをエクスポートします。これを使用して、アニメーションの再生速度を計算します。したがって、1倍速の歩行アニメーションが5 m / sで、プレーヤーを7 m / sで実行したい場合は、単純に7/5 = 1.4x速度で再生します。モデルがスケールアップまたはスケールダウンされている場合、アニメーションの再生速度にスケールの逆数を掛けます。ハーフハイトの男は、1xスケールの男と同じ速度で移動するために2倍速く歩く必要があります。


MixamoのRoot Motion Computerは見たことがありませんし、それと呼ばれることも聞いたことがないので、リンクと説明に感謝します!したがって、基本的には、明示的にアニメーション化するか、自動で生成するか、ビルド時または実行時のどちらかです。エクスポータースクリプトでこれを自分でコーディングする必要があると思います。今私が非常に混乱していることの1つは、1サイクルの過程で変化する動きです。一体どのようにゲームプレイからそれを駆動しますか?「5m / sで移動する」ということは、何か他のものを意味するようになりました...そして、方向の変更はAIにとって悪夢です!おそらく、agerage motionを使用するのが最善でしょうか?
ベンハイマーズ

文字が足りません。少し待ってから、これを承認済みとしてマークして、さらに意見を求めます。ご回答有難うございます!
ベンハイマーズ

ルートモーションでは、プレーヤーの速度を直接制御しません。実際には、アニメーションレートの再生のみを制御でき、その後、アニメーションで順方向z値を直接制御できます。私が与えた5m / sの例は、足の滑りを解決する従来の方法でした。これは、再生速度と移動速度を一定にし、一定の速度を想定することです。
テトラッド

ゲームプレイプログラマとして、それは完全な悪夢のように聞こえます:)アニメートされたものの動きの速度と同じくらい重要なものをアニメーターに制御させますか?結構です!情報を抽出して、その逆を行うのではなく、移動速度に基づいてアニメーションの再生速度を設定できるようにすることをお勧めします。だからこそ、ノンリニアモーションが私の地獄を混乱させます。そして、おそらくそれが逆にそれを行う良い理由です。
ベンハイマーズ

Gah、新しい行を開始しようとするコメントを入力するためのStack Exchangeの呪い...アニメーションでモーションを駆動させたとしても、AIキャラクターにとっては問題になるでしょう。彼らがポイントに到達しようとしているが、彼らの動きのアニメーションが左右に動いている場合はどうでしょうか(たとえば、酔っぱらったよろめきアニメーション)。彼らはどの方向を向くかをどのようにして知ることができますか?
ベンハイマーズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.