更新 2:これは、プログラミングの問題というよりもモデリングの問題のようです。おっと。
私は XNA 開発に不慣れで、C# の経験があるにもかかわらず、2 日間にわたって 1 つの場所で立ち往生しています。
状況: 3D Studio Max 2010 で 2 つのマテリアルを使用するモデルを作成しました。どちらも DirectX Shader タイプです。モデルはエラーなしで FBX にエクスポートされ、Visual Studio は正しくコンパイルします。最初に Draw() メソッドを実行すると、ループの 1 つの「BasicEffect」部分で例外がスローされ、FBX に埋め込む必要がある .fx ファイルが正しくロードされていることが (少なくとも私には) 示されました。ファイルか何か。
問題: 次のコードを使用する場合
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 にあります)。
これらの 1 つまたはすべてを間違って設定しているように感じます。チュートリアルを調べてコードに従おうとしましたが、私のモデルではうまくいかないようです。
助けやアイデアはありますか?
更新: これらの変更を行うことにより:
effect.Parameters["WorldViewProj"].SetValue(Matrix.CreateTranslation(Vector3.Zero) * ActiveCamera.ViewMatrix * Conductor.ActiveCamera.ProjectionMatrix);
effect.Parameters["WorldView"].SetValue(Matrix.CreateTranslation(Vector3.Zero) * ActiveCamera.ViewMatrix);
モデルは描くことができました。ただし、すべてが完全に白です:(