1

XNA4.0が3DFBXモデルを正しく表示しないという問題があります。

友人がモデルを作成しました。これをFBXViewerで開くと、正しく表示されます https://docs.google.com/open?id=0B54ow8GRluDUYTBubTQ4bjBramM

しかし、XNAにロードして[実行]をクリックすると、 https://docs.google.com/open?id=0B54ow8GRluDUSE14TWMxcnBJWWcと表示されます。

The code that i have for the drawing is
foreach (ModelMesh mesh in model.Meshes)
{
    foreach (BasicEffect effect in mesh.Effects)
    {
         effect.Projection = projection;
         effect.View = view;
         effect.World = Matrix.CreateScale(1.0f) * Matrix.CreateRotationX(90) * Matrix.CreateTranslation(position);
         effect.EnableDefaultLighting();
     }
     mesh.Draw();
 }

これを修正するための助けは非常に高く評価されます。

ありがとう。

4

1 に答える 1

2

各メッシュにはボーンがあり、それを使用してメッシュを適切な場所に配置する必要があります...このコードは Microsoft からのものです

private void DrawModel(Model m)
{
    Matrix[] transforms = new Matrix[m.Bones.Count];
    float aspectRatio = graphics.GraphicsDevice.Viewport.AspectRatio;
    m.CopyAbsoluteBoneTransformsTo(transforms);
    Matrix projection =
        Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f),
        aspectRatio, 1.0f, 10000.0f);
    Matrix view = Matrix.CreateLookAt(new Vector3(0.0f, 50.0f, Zoom),
        Vector3.Zero, Vector3.Up);

    foreach (ModelMesh mesh in m.Meshes)
    {
        foreach (BasicEffect effect in mesh.Effects)
        {
            effect.EnableDefaultLighting();

            effect.View = view;
            effect.Projection = projection;
            effect.World = gameWorldRotation *
                transforms[mesh.ParentBone.Index] *
                Matrix.CreateTranslation(Position);
        }
        mesh.Draw();
    }
}

http://msdn.microsoft.com/en-us/library/bb203933(v=xnagamestudio.40).aspxで見つけることができます。

于 2012-11-08T23:40:13.980 に答える