【问题标题】:Matrix Create scale, what is happening here?矩阵创建规模,这里发生了什么?
【发布时间】:2013-12-13 09:33:04
【问题描述】:

我正在尝试使用 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

提前致谢,罗杰

【问题讨论】:

    标签: matrix scale transformation monogame spritebatch


    【解决方案1】:

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

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

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

    是这样吗?

    谢谢,罗杰

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 2010-12-14
      相关资源
      最近更新 更多