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

OpenGL Discussion :

Dessiner seulement ce qui est devant la camera


Sujet :

OpenGL

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut Dessiner seulement ce qui est devant la camera
    Bonjour,

    Est ce que OpenGL fait le trie entre ce qui se trouve devant la camera et donc nécessite un calcul de rendu (rotation, lumière...) et ce qui se trouve derrière et donc ne nécessite pas de calcul.

    Ou bien est ce que je dois moi même calculer avant d'envoyer à OpenGL.

    Par exemple, si je me trouve dans un parking de voiture, c'est pas la peine d'envoyer à OpenGL les donnés pour les 300 voitures qui sont dans mon dos !

    Autre question que je me pose, c'est que si je dois effectivement faire moi même le tri, ce qui ne m’étonnerai pas, je dois calculer rapidement ce qui est visible (donc se trouve dans le cône de vision de la camera).
    Plutôt que de parcourir l'ensemble des objets et de voir si leur centre X Y est dans le champs de la camera est ce qu'il n'existe pas un moyen de ranger (une structure de donnée) les références des objets en fonction de leur position dans l'espace ?

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Août 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 29
    Points : 38
    Points
    38
    Par défaut
    salut

    OpenGL fait ce qu'il lui demande (en fait, ce que le code lui dit de faire). Si tu dis pas de faire ça, il le fera pas. (mot clé pour google : culling)

    Ensuite, il y a un point que tu n'as pas compris avec le gpu. Une grosse partie du temps perdu, c'est le transfert de données entre le cpu et le gpu. Il est possible de faire le culling sur le gpu, mais cela veut dire que tu transfères beaucoup de données pour rien.

    Pour optimiser, il faut organisé dans une structure de découpage de l'espace. Un autre mot-clé-google : quadtree

    Bon courage

  3. #3
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 225
    Points : 10 168
    Points
    10 168
    Par défaut
    Il y a une page wikipedia http://fr.wikipedia.org/wiki/D%C3%A9...s_cach%C3%A9es .
    Ce que tu veux faire c'est de Viewing frustum culling culling , c'est pas une méthode très compliqué et elle est efficace si on découpe bien le monde.
    La méthode la plus simple pour implémenté c'est que chaque objet est une sphere , si cette sphère est dans angle de la camera alors on affiche sinon non , comme le dit Fintuiron ça permet éviter de renvoyer chaque objet au GPU ,et le faire en GPU c'est même pas raisonnable en terme de perf .

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 874
    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 874
    Points : 219 223
    Points
    219 223
    Billets dans le blog
    122
    Par défaut
    Bonjour,

    Pour éviter de dessiner ce qui n'est pas devant la caméra, la technique s'appelle : frustrum culling.
    C'est "simplement" de tester si un objet est, ou n'est pas dans le parallélépipède de la vue.
    Voir la FAQ : http://jeux.developpez.com/faq/3d/?p...ULLING_frustum
    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 confirmé

    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 311
    Points : 545
    Points
    545
    Par défaut
    Citation Envoyé par Kannagi Voir le message
    La méthode la plus simple pour implémenté c'est que chaque objet est une sphere , si cette sphère est dans angle de la camera alors on affiche sinon non , comme le dit Fintuiron ça permet éviter de renvoyer chaque objet au GPU
    Pourquoi renvoyez-vous des buffers en VRAM à chaque Rendu ?
    Vous utilisez le frustum culling pour charger et décharger vos objets, si ceux-ci sortent du champ ? … pourtant l’espace mémoire des cartes graphique récentes, est plus que confortable.

    Si la scène tient intégralement en VRAM, n’est il pas plus performant de tous charger au début et , dans la boucle de rendu , utiliser le frustum culling que pour déclencher ou non le traçage des objets ?
    ShaderElement : Bénéficier de l’accélération graphique simplement par une nouvelle balise HTML <shader>
    ODE.js : portage JavaScript du célèbre moteur physique 3D Open Dynamics Engine

  6. #6
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 225
    Points : 10 168
    Points
    10 168
    Par défaut
    Citation Envoyé par p3ga5e Voir le message
    Pourquoi renvoyez-vous des buffers en VRAM à chaque Rendu ?
    Vous utilisez le frustum culling pour charger et décharger vos objets, si ceux-ci sortent du champ ? … pourtant l’espace mémoire des cartes graphique récentes, est plus que confortable.

    Si la scène tient intégralement en VRAM, n’est il pas plus performant de tous charger au début et , dans la boucle de rendu , utiliser le frustum culling que pour déclencher ou non le traçage des objets ?
    méa culpa , je devrais préciser mais si en utiliser les VA en renvoie a chaque frame , avec les VBO effectivement ce n'est pas nécessaire.

    Mais oui tu as raison
    Oui la VRAM est plus que confortable de nos jours mais même sur une VRAM limité il est plus intéressante utilisé les VBO (sauf qu'en se permettra moins de polygon sur une mémoire VRAM plus limité).

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 082
    Points : 7 993
    Points
    7 993
    Par défaut
    D'un autre coté, meme si la quantité de ram augmente, la quantité de besoin aussi en général donc les problèmes ne changent pas ^^
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 362
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 362
    Points : 20 391
    Points
    20 391
    Par défaut
    Citation Envoyé par Alec6 Voir le message
    Bonjour,

    Est ce que OpenGL fait le trie entre ce qui se trouve devant la camera et donc nécessite un calcul de rendu (rotation, lumière...) et ce qui se trouve derrière et donc ne nécessite pas de calcul.
    Open GL ne fait rien c'est à toi de le faire..il faut utiliser la technique du Frustrum Culling comme mentionné par mes prédecesseurs
    Si tu ne veux pas te casse la tête il faut prendre un "moteur 3d" tout fait comme Irrlicht par exemple
    Mais l'avantage de programmer directement Open GL c'est que tu comprends ce que tu fais contrairement à Irrlicht où tout est encapsulé dans des classes

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    Ça me semble un défi interessant d'inplémenter le frustrum culling.

    Ça m'amène à la question: où puis je trouver le frustrum culling pour les nulles ?

    Merci

  10. #10
    Inactif
    Profil pro
    Inscrit en
    Août 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 29
    Points : 38
    Points
    38
    Par défaut
    Sur google ? Dans les livres sur les techniques de 3D ?

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    Non je cherche juste un bon tutoriel (un article par exemple), facile à comprendre.

    C'est pour dégrossir

  12. #12
    Membre averti
    Profil pro
    Responsable technique
    Inscrit en
    Février 2006
    Messages
    363
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Février 2006
    Messages : 363
    Points : 353
    Points
    353
    Par défaut
    Tu peux regarder le code source du lien suivant:

    http://www.paulsprojects.net/opengl/q3bsp/q3bsp.html

    Il inclut du frustrum culling.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 15/11/2014, 11h54
  2. Réponses: 4
    Dernier message: 27/03/2013, 14h56
  3. script qui affiche l'image seulement si elle est dans sur le serveur
    Par smookyone dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 22/02/2012, 18h55
  4. [Réseau sans-fil] Connecter une camera ip sur le port éthernet de mon pc qui est connecté à internet en wifi
    Par Coussati dans le forum Achat et Conseils
    Réponses: 2
    Dernier message: 31/08/2011, 14h28
  5. Une table qui existe mais qui est inconnu! ?
    Par Nino dans le forum InterBase
    Réponses: 6
    Dernier message: 13/06/2003, 11h47

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