等角投影の形式でテキストをレンダリングするにはどうすればよいですか? 原則は理解していますが、これを行うためにプログラムで SpriteFont を実際に変換する方法がわかりません。
私が意味するものの例:
何を検索すればよいかさえわかりません。等角射影行列と 3D メッシュ フォントを使用してこれを達成できるようですが、2D で作業していることを考えると複雑すぎるようです。
何か案は?
SpriteBatch.Begin
パラメータを取り、Matrix
描画したスプライト ( を含むSpriteFont
) を任意のプレーンに変換します。
残念ながら、スキュー マトリックスを作成する方法Matrix
は提供されていません。Create*
しかし、このようなマトリックスを手動で作成するのは簡単です。次のコードはテストされており、必要なものにかなり近いものです。
Matrix skew = Matrix.Identity;
skew.M12 = (float)Math.Tan(MathHelper.ToRadians(36.87f));
Matrix rotate = Matrix.CreateRotationZ(MathHelper.ToRadians(270+26.565f));
sb.Begin(SpriteSortMode.Deferred, null, null, null, null, null, skew * rotate);
// ... draw your sprites here ...
sb.End();
図との唯一の違いは、Y と Y' が反対方向を指していることです。これは、XNASpriteBatch
が「クライアント」座標 (左上の (0,0)、Y+ が下) で機能するためです。
これを実現するために、マトリックス変換をスプライト バッチと一緒に使用できます。マトリックス変換の詳細については、こちらをご覧ください。