IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XNA/Monogame Discussion :

Occlusion Culling ?


Sujet :

XNA/Monogame

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 59
    Points : 50
    Points
    50
    Par défaut Occlusion Culling ?
    Bonjour,

    Je rencontre un petit problèmes ces derniers temps, je suis en train de réaliser un petit projet en xna et pour l'instant je suis sur la partie "génération du terrain".
    J'ai donc unpetit terrain généré à l'aide d'une heightmap jusque la tout est normal. ^^

    Le problème est que je voie tout le relief de la "map" même lorsqu'une "colline" devrai me cacher la vue... exemple en image :

    Avec Texture :


    Alors qu'on voit bien en mode filiare qu'une partie devrai être cachée


    Vue de côté :


    Voilà j'ai regardé un peu l'occlusion culling mais cela s'applique plus entre des meshs différents (le second passe derrière le premier : on le cache) d'après se que j'ai compris...

    Des autres pistes ?

    Merci d'avance

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Je pense que c'est un problème de depth buffer.
    Fais tu le clear ( pour effacer l'ecran ) comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gdm.GraphicsDevice.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, backgroundColour, 1.0f, 0);
    ?
    gdm est le nom de mon GraphicsDeviceManager
    backgroundcolour est bien sur la couleur avec laquelle je remplit mon ecran lorsque j'efface
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Oui effectivement je ne l'avais pas fait, mais cela n'arrange pas le problème malheureusement.

    Voici des bouts de code si sa peut aider :

    Code dans Draw(GameTime g) de Game1.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                graphics.GraphicsDevice.Clear(ClearOptions.Target | ClearOptions.DepthBuffer, Color.CornflowerBlue, 1.0f, 0);
     
     
                //Draw Terrain
                terrain.Render(GraphicsDevice, camera.View, camera.Projection);
    Méthode Render de la classe terrain
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     public void Render(GraphicsDevice graphics, Matrix view, Matrix projection)
            {
                graphics.VertexDeclaration = new VertexDeclaration(graphics, VertexPositionNormalTexture.VertexElements);
                //graphics.RenderState.CullMode = CullMode.None;
     
                _effect.World = Matrix.Identity;
                _effect.View = view;
                _effect.Projection = projection;
     
                _effect.Begin();
                foreach (EffectPass pass in _effect.CurrentTechnique.Passes)
                {
                    pass.Begin();
     
                    graphics.DrawUserIndexedPrimitives<VertexPositionNormalTexture>(
                    PrimitiveType.TriangleList,
                    Vertices, 0, Vertices.Length, Indexes, 0, Indexes.Length / 3);
     
                    pass.End();
                }
                _effect.End();
            }
    Bon le terrain est composé de VertexPositionNormalTexture dont je n'ai pas renseigné la Normal pour l'instant.
    Ensuite tout les vertex sont dans le même tableau, pas forcément optimisé mais ce n'est pas le but pour l'instant

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Le problème peut aussi venir du texte 2D que tu affiche.
    Il faut faire un SpriteBatch.begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Deferred, SaveStateMode.SaveState);

    Entre autre cela permet de sauvegarder le mode précedent ( et de le restaurer lors de l'appel au end() ) ( voir doc )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Et ben la... chapeau c'était sa !
    J'y aurai jamais pensé, merci beaucoup pour ton aide, je vais essayer de comprendre le problème maintenant

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    C'est sur, c'est un truc qui n'est pas très facile à deviner. La première fois je l'avais lu dans un tuto. Là c'est l'espérience qui a parlé
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre régulier Avatar de LeonardL
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 57
    Points : 71
    Points
    71
    Par défaut
    A quand une FAQ XNA pour recenser ce genre de choses? :p

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    ça été proposé, maintenant il n'y a plus qu'a faire remonter les questions. ( il y a un début )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. L'occlusion culling en DirectX
    Par Clemsgc dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 14/06/2007, 15h11
  2. Occlusion query : résultats étranges
    Par missroot dans le forum OpenGL
    Réponses: 14
    Dernier message: 12/12/2005, 11h56
  3. Occlusion Testing
    Par Fry dans le forum DirectX
    Réponses: 1
    Dernier message: 26/07/2005, 00h51
  4. Probleme avec du frustum Culling
    Par zlamouche dans le forum OpenGL
    Réponses: 13
    Dernier message: 18/03/2004, 08h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo