C# 如何将3ds max中的.fbx正确导出到xna

C# 如何将3ds max中的.fbx正确导出到xna,c#,3d,xna,3dsmax,fbx,C#,3d,Xna,3dsmax,Fbx,好的,我正在尝试得到一个立方体来渲染一个UV纹理。我认为问题出在多维数据集的Draw()中: foreach (BasicEffect effect in mesh.Effects) { effect.EnableDefaultLighting(); effect.Texture = cubeUV; effect.TextureEnabled = true; effect.World = transforms[mesh.ParentBone.Index] * Ma

好的,我正在尝试得到一个立方体来渲染一个UV纹理。我认为问题出在多维数据集的
Draw()
中:

foreach (BasicEffect effect in mesh.Effects)
{
    effect.EnableDefaultLighting();
    effect.Texture = cubeUV;
    effect.TextureEnabled = true;
    effect.World = transforms[mesh.ParentBone.Index] * Matrix.CreateRotationY(g.modelRotY) * Matrix.CreateRotationX(g.modelRotX) * Matrix.CreateTranslation(g.geoPos);
    effect.View = cam.camera;
    effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f), aspectRatio, 1.0f, 10000.0f);
}
特别是这两条线

effect.Texture = cubeUV;
effect.TextureEnabled = true;
当我运行此命令时,我收到此错误

当前顶点声明不包括当前顶点着色器所需的所有元素。缺少纹理坐标0

我的UV贴图像普通的
纹理2D
一样加载。My.FBX是使用以下步骤从3ds Max 2015导出的

  • 打开3ds Max 2015,创建新项目

  • 做一个立方体

  • 使用展开UVW修改器并选择整个立方体

  • 进入UV贴图编辑器并展平贴图

  • 获取地图并在外部图像编辑器中为其着色

  • 打开精简材质编辑器,单击拱门设计按钮,选择默认,单击图像按钮,选择位图,浏览并选择我的彩色地图

  • 将贴图材质应用于长方体

  • 文件导出为.FBX

  • 选中“嵌入媒体”

  • 如果有人能告诉我我错过了什么,我将不胜感激。我认为这与我如何导出.FBX有关。我知道我已经很接近了,我真的很兴奋能最终找到答案。谢谢你的帮助

    编辑: 使用上面相同的过程,我创建了一个立方体并将其导出为.FBX。然后我去导入了我刚刚导出的文件。展开UVW修改器现在从修改器列表中消失。这是我的问题吗?这与我在.FBX导出菜单上选择的复选框有关吗

    编辑2: 如果有帮助的话,我会尝试做与本教程中描述的相同的事情

    编辑3:
    好吧,我取得了一些进展。我发现.FBX必须是文本格式。我比较了从上面的多维数据集过程中得到的.FBX和编辑2教程中得到的.FBX。我发现“纹理”一词出现在“编辑2”的版本中,而没有出现在立方体版本中。因此,我认为我的出口不正确。有人有什么建议吗?

    XNA默认情况下不会附加纹理。查看如何制作自定义XNA内容管线该错误意味着网格中的当前顶点声明与预期效果不匹配。i、 也许你应该使用或可能。是的,我以前见过这个例子。这是否意味着我必须对我拥有的每一个多边形进行这个过程?我见过一些项目,比如微软的例子,你只需要把.FBX和纹理放在同一个目录中。感谢您的回复。XNA将导入“与纹理位于同一目录中的FBX”,但它会忽略3ds尝试导出的任何着色器-所有内容都将重置为
    basicefect
    (我怀疑这在您的情况下并不重要)。无论如何,正如我所说的,看起来3ds没有导出每个vertice的纹理信息。可能会显示“3ds导出”对话框的屏幕截图,显示您正在使用的设置。我想这就是我遇到的。我相信这与我出口.FBX的过程有关。我发现,MS示例和上面链接的示例中的.FBX文件可以用Visual Studio打开和读取,而3ds Max生成的文件则不能。实际上,我找到了.FBX中与纹理位置相关的部分,并成功地按住ctrl+F键,将ond纹理位置的所有实例替换为新的纹理位置,并使用新纹理进行渲染。