DrawableGameComponent
これが私が持っているものです:私がいくつかと呼ぶ子供を含むカスタムDrawUserPrimitve
。各子には子などを含めることができます。各コンポーネントに、その形状を説明する頂点のリストと、Matrix
その相対位置(および最終的には変換)を格納するためのリストを格納します。したがって、「DrawUserPrimitive
」の前に、マトリックスを「適用」する必要があります。この行列は、コンポーネントの変換とその親およびその親の親などの乗算である必要があります。
このシステムにより、コンポーネントの変数を独立させることができます。正しく理解していれば、それが最善の方法です。
そうするために、私はXNAでオブジェクトを見ましたBasicEffect
。これを使用して、いくつかの行列を適用できます。basicEffect.World
だから私は私のcomponent.Transformation
(Matrix
)で乗算しようとしています
ですから、引き続き調査する必要がありますが、今のところ、私が待ち望んでいた結果は得られません。私はこれを行うための良い方法を選んだのだろうか。同じ結果に対して2つのシステムが表示されます。
- 私が現在行っている方法は、鉛筆を固定しているのと少し似ていますが、紙を動かしています
- または、描画する直前にすべての頂点を通過するループを追加して、予想される変換に応じてこれらを変更します。紙の代わりに鉛筆を動かすのと少し似ています。
説明のためのいくつかのコード:
public void override Draw(GameTime gameTime){
Game.basicEffect.World *= Transformation;
foreach(var child in this.Children){
child.Draw(gameTime);
}
Game.basicEffect.World *= Matrix.Invert(Transformation);
}