如何在XNA4.0的3d世界中渲染动画纹理2D
到目前为止,我已经学习了两种在xna中绘制的方法;使用spritebatch或将项目放置到3d世界上,然后使用摄影机进行渲染 目前,我正在开发我的2.5D游戏。我使用了一种机制,使更深的精灵转换得更慢,所以看起来游戏中有真正的深度 但是,考虑到效果(即后处理),如果我想将这些效果渲染到中等深度,即渲染到深度为0.5的角色上,而在深度为0.8的角色上有前景树,则可能会出现一些问题 因此,我正在考虑在真实的3D世界中渲染我的游戏 然而,由于我一直在寻找在3d世界中放置我的精灵并为其设置动画的方法,我还没有找到。(可能是因为我不知道正确的关键字。)我找到的最接近的主题是关于PointSprite的,它现在已从XNA4.0中删除,因此我无法以这种方式实现它 我的问题是,如何在3D世界中渲染动画精灵(即角色移动) 谢谢,如何在XNA4.0的3d世界中渲染动画纹理2D,xna,texture2d,Xna,Texture2d,到目前为止,我已经学习了两种在xna中绘制的方法;使用spritebatch或将项目放置到3d世界上,然后使用摄影机进行渲染 目前,我正在开发我的2.5D游戏。我使用了一种机制,使更深的精灵转换得更慢,所以看起来游戏中有真正的深度 但是,考虑到效果(即后处理),如果我想将这些效果渲染到中等深度,即渲染到深度为0.5的角色上,而在深度为0.8的角色上有前景树,则可能会出现一些问题 因此,我正在考虑在真实的3D世界中渲染我的游戏 然而,由于我一直在寻找在3d世界中放置我的精灵并为其设置动画的方法,我
Dome诀窍是准确地描述到目前为止您一直在做的事情,而不是使用spritebatch“直接”在屏幕上绘制,而是将2d图像绘制到3d世界中的平面“图纸”上(每个“图纸”由两个三角形组成,形成一个正方形)
我建议在create.msdn.com网站上查看用于构建四边形、纹理和可能的渲染目标的示例作为起点。在XNA 4.0中新增,SpriteBatch可与BasicEffect一起使用 。它还提供了一些示例代码,通过BasicFect模拟默认的SpriteBatch功能,但是您可以为3D世界传递自己的矩阵 特别是:您的“世界”矩阵将描述绘制精灵的平面在三维空间中的位置。“视图”矩阵将描述您相机的世界视图。“项目”矩阵将是一个3D投影矩阵(可能来自
matrix.CreatePerspective
)
顺便说一下,您描述的效果的名称是“视差滚动”。它与真实3D不同(2.5D也不同)
如果您只想将效果应用于场景中的某些层:您可以通过将带有像素着色器的效果传递给SpriteBatch.Begin,直接将效果应用于这些精灵。或者,如果效果确实是后期处理效果(即:应用于整个屏幕),则可以使用渲染目标在屏幕外渲染该特定层,然后使用效果将其渲染回屏幕