【发布时间】:2010-02-26 14:20:32
【问题描述】:
一个相当令人困惑的问题困扰着我。在对我的游戏进行了相当多的编程并且它正常工作之后,我遇到了一个模型,当我渲染它时它不会出现在关卡中。我试过放大、缩小、旋转它、检查并仔细检查它的渲染矩阵位置,但它似乎没有渲染。我已经以完全相同的功能实现了其他模型,并且它们呈现完美。我不认为模型有问题(顺便说一句,我的所有模型都是“.X”文件),因为当通过 DxViewer 打开模型时,它会完美显示。所以我不确定是什么导致了这个问题的发生。
我用来检查模型在游戏中的外观的临时代码示例:
static public void RenderTmp(Model model, float scale)
{
foreach (ModelMesh mesh in model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.PreferPerPixelLighting = true;
effect.World = Matrix.CreateScale(scale) * Matrix.CreateTranslation(0, 0, 0);
effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(90), Globals.g_Device.Viewport.AspectRatio, 1, 1000);
effect.View = Matrix.CreateLookAt(new Vector3(0, 50, 0), new Vector3(0, 0, 0), Vector3.Forward);
}
mesh.Draw();
}
}
我现在认为这可能是 3DS Max 本身的导出问题,我一遍又一遍地检查了代码,但我不认为这是问题所在。
【问题讨论】:
-
你能发一些代码给我们看看
-
嘿伙计们,嗯,我很确定法线正朝着正确的方向,因为它在 DxViewer 中看起来是正确的(有没有其他方法可以检查顶点的法线???)。是的,模型正在使用的纹理正在与应用程序一起编译(如果找不到模型的纹理,c# 将无法编译)。