効率的な骨格アニメーション


11

私は、RTSゲームにスケルトンアニメーション形式(ここで指示されたとおり)を採用することを検討しています。画面上の各モデルの個々の表現は小さくなりますが、たくさんあります!

MD5ファイルなどの骨格アニメーションでは、個々の頂点を任意の数のジョイントにアタッチできます。

GLSLで補間を行いながら、これをどのように効率的にサポートできますか?または、エンジンはCPUでアニメーションを実行しますか?

または、エンジンは頂点ごとの最大ジョイントに任意の制限を設定し、最大数を使用しないジョイントに対してnop乗算を呼び出しますか?

RTSのような設定で骨格アニメーションを使用するゲームはありますか?統合されたグラフィックカードでは、骨のルートを進む際に心配する必要がないことを証明していますか?


+1、これは良い質問です。私はいつもアニメーションをシェーディング言語で行うべきか、それともCPUで行うべきかを考えてきました...
James

EAのSAGEエンジン(C&C 3以降、BFMEシリーズ)を使用するRTSゲームは骨格アニメーションを使用しますが、頂点は1つのボーンにのみバインドされます(少なくともBFMEでは)
Bart van Heukelom

回答:


6

骨の影響の数を制限することは一般的です、はい。未使用の影響を重み付けしないか、スキップするループ/早期終了メカニズムを使用できます。

RTSで機能するかどうかについては、リファレンスはありませんが、画面上で多数の文字を操作する場合や、それらの文字が小さい場合は、LODが必要になると思います。

骨格キャラクタのLODは、他のLODの場合とほとんど同じですが、メッシュだけでなく、ボーンの影響とスケルトンもLODしたいと思うでしょう。

たとえば、低レベルのディテールでは、頂点ごとの影響が最も高い単一のボーンのみが使用される場合があります(「ハードスキニング」とも呼ばれます)。

また、LODの低いモデルでは、スケルトンのボーンの数を制限することもできます。

最後に-あなたがいるかどうかを検討し、これまでクローズアップ文字をレンダリングする必要があります。おそらく、最も近いビュー距離のキャラクターをモデリング、スキン、およびアニメーション化したいだけです...確かに、レンダリングするよりもはるかに高い解像度ですべてのランタイムデータを保存する必要はありません。状況に応じて、ごく基本的なスケルトンと頂点ごとのいくつかの影響だけが必要であることに気付くかもしれません。


私は誰かが「あなたのピースが小さい場合、あなたは本当にrtsのタレットのボーンを望まない;その代わりにリンクされたモデル機能を備えたMD3を検討する」と誰かが言ってくれることを望んでいました
Will

そういう状況では、そうした種類のメッシュにはスキニングを使用しませんが、「ボーン」は階層変換のファンシーな名前にすぎません。頂点に重みを付けるのではなく、メッシュをメッシュにアタッチするだけで問題はありません。(つまり、タレットの場合、2つのボーンと2つのメッシュがあり、スキニング/ウェイト付けがまったくない場合があります)。
JasonD 2011年

2

骨格アニメーションはRTSゲームに適しているとは思いません。骨格アニメーションはすべてのキャラクターに追加のプロセスを必要としますが、キーフレームアニメーションはより多くのメモリを消費しますが、多くのキャラクターに同じものを使用します。また、rtsゲームはキャラクターごとに少しのアニメーションを必要とします

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.