0

我正在尝试使用 spritebatch 执行一些矩阵转换,但我不明白比例矩阵发生了什么。

       rotM = Matrix.CreateTranslation(0, 0, 0)
                * Matrix.CreateFromYawPitchRoll(MathHelper.ToRadians(startRotations.Y)
                                              , MathHelper.ToRadians(startRotations.X)
                                              , MathHelper.ToRadians(startRotations.Z))
                * Matrix.CreateScale(endScale.X, endScale.Y, 0)
                * Matrix.CreateTranslation((Origin.X + PositionRec.X + Offset.X) * endScale.X
                                         , (Origin.Y + PositionRec.Y + Offset.Y) * endScale.Y, 0);

        sp.Begin(SpriteSortMode.Deferred, null, null, null, null, null, rotM);
        sp.Draw(BackgroundTexture, Vector2.Zero, PositionRec, BackgroundColor * alpha);
        sp.End();

通常我使用这个顺序得到最好看的结果,但是如果我将比例更改为在旋转之前一切都会变得很奇怪,即使使用 (1.1.0) 比例,所以我只是得到原始大小。

让我们将比例固定为 1(不包括 Z),如果我将顶点与比例保持不变(我认为),它为什么/如何影响旋转?

例子:

平移->旋转->缩放->平移

http://imgur.com/ihdlepa

平移->缩放->旋转->平移

http://imgur.com/YpbOnqw

提前致谢, 罗杰

4

1 回答 1

0

好吧,经过一番思考,我想我明白了。

所以我在 3d 空间中绘制 2d 的精灵。旋转后 z 坐标具有值,因此使用 0 作为 z 比例会破坏该值。

由于我没有使用任何灯光或阴影,因此很难检查发生了什么。

这是正确的吗?

谢谢,罗杰

于 2013-12-13T12:10:00.057 回答