2010-12-17 106 views
0

我正在XNA的正投影中绘制一些几何图形,用于sidescroller类型的游戏。我想要做的是在透视投影中渲染背景几何。XNA中的透视/正交投影转换?

但是,我明显需要背景几何来与前景“排列”,即如果在透视中,我将3D模型的位置设置为300,30,然后在正交投影中它排成300,30。

有没有办法我可以做到这一点?我一直在寻找世界来筛选投影,但不知道我是否在正确的轨道上。

感谢您的帮助!

回答

1

嘿,这里躺着怪物......这说起来容易做起来难吗:-)是的,你在世界/屏幕投影的正确轨道上。你需要做的是选择一个“Z”平面,你将渲染所有2D透视投影。那么你所做的就是将你感兴趣的任何给定的点转换到该“Z”平面上来屏幕坐标,并在该点渲染正投影。

1

乔尔是对的,如果你可以结合2D和3D,这将是理想的。 2D用作正视图,3D用于透视图。 使用多个2d精灵进行正交视图的2D渲染。 对于几何您最好的选择将是,使用矩阵结构的辅助功能..类似的东西,

Matrix view = Matrix.CreatePerspective(.......) 

和其他类似的静态辅助功能....

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.matrix_members.aspx

除了通过缩放,旋转,平移来转换模型,还可以通过矩阵结构本身来实现。

Matrix oldWorld = Matrix.CreateWorld(...); 

// something happens ; next update 

Matrix scaleMat = Matrix.CreateScale(...); 
Matrix rotXMat = Matrix.CreateRotationX(...); 
Matrix rotYMat = Matrix.CreateRotationY(...); 
Matrix rotZMat = Matrix.CreateRotationZ(...); 
Matrix translationMat = Matrix.CreateTranslation(...); 

Matrix newWorldMat = scaleMat*rotXMat*rotYMat*rotZMat*translationMat*oldWorldMat;