【问题标题】:Using 3D Studio Max DirectX shader in XNA problem在 XNA 问题中使用 3D Studio Max DirectX 着色器
【发布时间】:2010-12-28 23:01:03
【问题描述】:

更新 2: 现在看来,这更像是一个建模问题,而不是编程问题。哎呀。

我是 XNA 开发的新手,尽管我有 C# 经验,但我已经坚持了两天。

情况:我在 3D Studio Max 2010 中创建了一个模型,它使用两种材质,都是 DirectX 着色器类型。模型无错误地导出到 FBX,Visual Studio 可以正确编译它。当我最初运行 Draw() 方法时,它在我的一个循环的“BasicEffect”部分引发了异常,表明(至少对我而言)它正在正确加载 .fx 文件,该文件必须嵌入到 FBX文件什么的。

问题: 使用以下代码时

    foreach (ModelMesh mesh in map.Meshes)
    {
        foreach (Effect effect in mesh.Effects)
        {
            effect.CurrentTechnique = effect.Techniques["DefaultTechnique"];
            effect.Begin();
            effect.Parameters["World"].SetValue(Matrix.CreateTranslation(Vector3.Zero));
            effect.Parameters["View"].SetValue(ActiveCamera.ViewMatrix);
            effect.Parameters["Projection"].SetValue(ActiveCamera.ProjectionMatrix);
            effect.Parameters["WorldViewProj"].SetValue(Matrix.Identity * ActiveCamera.ProjectionMatrix);
            effect.Parameters["WorldView"].SetValue(Matrix.Identity * ActiveCamera.ViewMatrix);

            foreach (EffectPass ep in effect.CurrentTechnique.Passes)
            {
                ep.Begin();
                // something goes here?
                ep.End();
            }

            effect.End();
        }

        mesh.Draw();
    }

唯一发生的情况是出现一个覆盖屏幕下半部分的白框,无论相机位置或角度如何。我得到了 Max 中指定的 default.fx 文件的效果参数名称(位于 [program files]\autodesk\3ds Max 2010\maps\fx)。

我感觉我设置了一个或所有这些不正确。我尝试查找教程并按照他们的代码进行操作,但似乎都不适用于我的模型。

有什么帮助或想法吗?

更新: 通过进行这些更改:

    effect.Parameters["WorldViewProj"].SetValue(Matrix.CreateTranslation(Vector3.Zero) * ActiveCamera.ViewMatrix * Conductor.ActiveCamera.ProjectionMatrix);
effect.Parameters["WorldView"].SetValue(Matrix.CreateTranslation(Vector3.Zero) * ActiveCamera.ViewMatrix);

模型能够绘制。然而,一切都是白色的:(

【问题讨论】:

    标签: xna effects shader 3dsmax


    【解决方案1】:

    不幸的是,尤其是在没有看到您的着色器和/或不知道您遇到了什么错误的情况下,很难找出这里出了什么问题。有很多事情可能会出错。

    我的建议是从更简单的测试开始。制作一个盒子,应用一个非常简单的着色器……然后进行渲染。然后,添加一些参数,(例如)将像素着色器的红色分量乘以传入的数量。并成功渲染。

    通过简化问题集,您可以了解最大导出的着色器的细微差别以及如何设置属性。在某个时候,您会意识到自己做错了什么,并且能够将其应用到更复杂的着色器中。

    我很想知道这是怎么回事……请确保在修复后对此发表评论,以便我看到结果。祝你好运! :-)

    【讨论】:

    • 昨晚进行了更多修改后,我发现我的代码或多或少都在工作,这是模型问题,而不是编码问题。所以一旦我弄清楚如何正确地做到这一点,我会发布结果:P
    猜你喜欢
    • 1970-01-01
    • 2014-08-05
    • 2011-11-27
    • 1970-01-01
    • 2014-08-29
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多