4

XNA で 2D Bone システムを作成しようとしています。

最初に考えたのは、行列を使用してボーン ツリー全体の回転と配置を追跡し、アイテムを簡単に表示できるようにすることでした。

かっこいいと思ったのですが、マトリックスが単一のスプライト バッチにしか適用できないことを知ってがっかりしました。

私はいくつかのパフォーマンス テストを実行して、私の落胆が許されているかどうかを確認しました。spritebatch.Begin と End を呼び出すと、フレーム レートが膨大な (そして許容できない) 量で低下します。

したがって、単一のボーン イメージを描画する前に、最終的な位置と回転 (および将来的にはスケーリング) を手動で作成する必要があります。この場合、まだ行列を使用して、ボーンを描画する直前に何らかの方法で情報を抽出しますか? もしそうなら、私が必要とする最終的な情報を取得する方法についてのアイデアはありますか? それとも、親ノードの生の位置と回転からすべてを試して構築する方が簡単でしょうか?

アイデアをお持ちの方に事前に感謝します。

4

2 に答える 2

4

正直なところ、スプライト レンダリング オブジェクトを捨てて、スクリーン スペース クワッドに切り替えるでしょう。スクリーン スペース クワッドに人為的な制限はなく、ボーン システムの標準的な実装を使用できます。ツリーをたどって変換を適用し、ツリーを上に移動してポップします。

于 2009-03-21T16:38:32.177 に答える
0

とにかく、2D で作業している場合、行列は過剰ではありませんか? 回転に 4 回の乗算、変換に 2 回の合計を実行できる場合、行列とベクトルの積ごとに 16 回のスカラー乗算を行うということですか?

于 2009-03-27T20:05:11.413 に答える