Question

Je veux dessiner un modèle dans XNA. J'ai Gona avance et produit dans Blender et Exporté vers FBX Format de fichier de sorte que le Content Pipeline peut travailler avec elle. Quel code dois-je ajouter à la méthode draw () de mon WindowsGame ()? J'ai essayé la suite de Tout ce que je reçois est un écran gris (gris pas bleu, qui est la couleur claire, vous l'esprit) Le modèle est importé avec content.Load, et cela jette aucune erreur, et je l'ai appelé « Bowl » .

Pouvez-Quelqu'un dire à mon pourquoi cela ne fonctionnera pas ici?

protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
            BasicEffect b = new BasicEffect (graphics.GraphicsDevice, new EffectPool ( ));
            foreach (ModelMesh m in Bowl.Meshes)
            {
                b.View = Cam.mView;
                b.Projection = Cam.mProj;
                b.World = mWorld;
                b.EnableDefaultLighting ( );
                b.Begin ( );
                m.Draw ( );
                b.End ( );
            }

            base.Draw(gameTime);
        }

Je viens de remarquer que cela équivaut à assassiner en termes d'efficacité, mais je l'ai essayé tant de choses, je dois juste travailler avant de l'optimiser.

Était-ce utile?

La solution

Une question vraiment commune lors de la première tentative de restitution de quelque chose est que la caméra ne regarde pas ce que vous pensez qu'il regarde. Une autre question possible est que le modèle n'est pas à l'échelle que vous attendez. Ainsi, par exemple, si l'appareil est de 5 unités de retour sur le z, mais le modèle est de 10 unités de largeur, votre appareil photo est effectivement à l'intérieur du modèle.

En ce qui concerne la question de rendu va, Microsoft a assez bonne documentation sur ce point: http://msdn.microsoft.com/en-us/library/bb203933.aspx

Vous pouvez utiliser cet extrait comme aide:

private void DrawModel(Model m)
{
    Matrix[] transforms = new Matrix[m.Bones.Count];
    float aspectRatio = graphics.GraphicsDevice.Viewport.Width / graphics.GraphicsDevice.Viewport.Height;
    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();
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top