好的,我最近一直在尝试很多新事物,而且我有一些停止点。我决定离开3d,因为我认为我只是没有,也无法理解所涉及的编码,但我很擅长数学,所以我想我会再给它一次。
我正在尝试用c#学习3d XNA,我最近研究了2d并希望继续前进,我的问题是(在我看来)最基本的3d形状,一个立方体,我遇到问题,成功地从blender导出我的立方体(在第7次尝试> _>之后)并将其导入XNA,我无法在立方体上正确显示纹理,所以我从示例源代码文件下载了一个立方体模型,并试图使用它,以及它的默认纹理,我仍然有问题。
基本上,绘制多维数据集的代码是:
foreach (ModelMesh mesh in model.Meshes)
{
GraphicsDevice.RasterizerState = RasterizerState.CullClockwise;
foreach (BasicEffect effect in mesh.Effects)
{
effect.TextureEnabled = true;
//effect.Texture = texture;
effect.World = world;
effect.View = view;
effect.Projection = projection;
effect.LightingEnabled = false;
}
mesh.Draw();
}
RenderState和LightingEnabled是新的,尝试修复自己,当我使用自己的纹理时,纹理看起来像被拉伸,并且不显示立方体上的整个图像,但所有面看起来都一样,所以它不包装它。
此外,要查看所有面孔,我会像以下一样旋转立方体:
position -= new Vector3(0, 0.00f, 0.0100f);
angley += 0.01f;
anglez += 0.01f;
world = Matrix.CreateScale(1.5f) * Matrix.CreateRotationZ(anglez) * Matrix.CreateRotationY(angley) * Matrix.CreateTranslation(position);
z变化是我可以测试另一种理论。
默认纹理是一种淡淡的纹理,我不确定它是否适合它,因为它几乎是一种纯色,但盒子本身似乎有奇怪的代表(看起来好像我可以通过近面看到,我看起来在对方的背后)
我希望有人可以帮我一把,看起来它应该更简单一点似乎是,绘制一个简单的纹理立方体,而且大多数在线教程都来自旧版本的XNA,所以代码没有匹配,我试图用当前代码替换它时迷路了(在教程中,在代码中创建一个多维数据集,而不是模型。)
无论如何,谢谢你的回答。
EDIT 使用CreateOrthographic绘制此立方体使其看起来正确(第一个使用透视)但仍然没有纹理爱:(
EDIT2 当我使用我的立方体时它被拉伸,当我使用来自源的那个时,它是一个纯色。
EDIT3
如果我提到我正在使用字体/ spritebatch显示FPS,我可能会早点得到答案,当我找出它为什么不起作用,并将它与DID工作的样本进行比较时,我发现它,现在,有谁知道如何做到这一点?
答案 0 :(得分:6)
对我自己以及其他遇到此问题的人>。<
您使用的是:
SpriteBatch.begin()
在您的代码中执行任何操作?如果是这样,这搞砸了程序在3d中渲染的方式,请查看此链接(对于pre XNA 4.0):
http://blogs.msdn.com/b/shawnhar/archive/2006/11/13/spritebatch-and-renderstates.aspx
如果您使用XNA 4.0,请使用此链接:
解决此问题的特别是:
GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap;
在foreach循环之前添加,为我修复了这个问题,但你可能需要尝试那篇文章中的其他内容
对于其他读这篇文章的人来说,祝你的XNA梦想好运:D