更新2:現在看來,這比模擬問題更像一個建模問題。哎呦。在XNA問題中使用3D Studio Max DirectX着色器
我是新來的XNA開發人員,儘管我有C#經驗,但我一直堅持在一個地方繼續工作兩天。
情況:我在3D Studio Max 2010中創建了一個模型,它使用了兩種材質,都是DirectX Shader類型。該模型無錯輸出到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文件的效果參數的名稱(位於[程序文件] \ autodesk \ 3ds Max 2010 \ maps \ fx中)。
我感覺我正在設置一個或所有這些不正確。我試着查看教程並遵循他們的代碼,但是沒有一個似乎適用於我的模型。
任何幫助或想法?
UPDATE: 進行這些更改:
effect.Parameters["WorldViewProj"].SetValue(Matrix.CreateTranslation(Vector3.Zero) * ActiveCamera.ViewMatrix * Conductor.ActiveCamera.ProjectionMatrix);
effect.Parameters["WorldView"].SetValue(Matrix.CreateTranslation(Vector3.Zero) * ActiveCamera.ViewMatrix);
該模型能夠得出。但是,一切都是完全白色的:(
昨天晚上經過了更多修補之後,我發現我的代碼或多或少地工作,這是一個模型問題,而不是編碼問題。所以一旦我找出如何正確地做到這一點,我會公佈結果:P – 2009-12-22 18:29:33