2013-12-13 1 views
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

입어 사전, Roger

답변

0

글쎄, 나는 그것을 이해했다고 생각했다.

그래서 저는 3d 공간에서 스프라이트 2d를 그립니다. 회전 후 z 좌표는 값을 가지므로 z 축척을 0으로 사용하면 해당 값이 삭제됩니다.

전 조명이나 음영을 사용하지 않았으므로 무슨 일이 일어나고 있는지 확인하기가 어려웠습니다.

이게 맞습니까?

감사합니다. Roger