Avant de vouloir faire un rendu-photoréaliste il faut d'abord régler le problème de la boucle qui permet d'afficher des objets ça fait 2 ou 3 jours que j'ai abordé le problème.
Un arbre en billboard c'est quoi deux polygones qui forment uin triangle donc ça coûte quasiment rien au GPU surtout s'il y a 10 arbres.
C'est pas un problème de matrices plutôt ?
On est d'accord que si je veux afficher plusieurs objets dans une boucle soit le GPU soit le CPU vont travailler forcément ?
Donc si on prend une boucle qui parcourt ne serait-ce que 1000 objets même si on utilise la technique du View Frustum Culling bref calculer si l'objet est contenu dans une zone en 3d ça fait tout de même une boucle.
Non je dis des trucs au pif
Pourquoi je parle pas vraiment d'octrees pour son rendu , parce que je doute qu'il a un open world a afficher même une grosse map , moi je répond pour son rendu , et que son rendu , même si tu dis "octree" , ben ça permettra pas faire des ombres , des effets de lumiere ,du PBR et j'y passe.
et pour répondre à :
Je pense que ça reste quand même un niveau technique très élevé,c'est très compliqué , y'a tres peu de boite qui est capable de faire un rendu 3D proche de UE4.Pas jusque là mais quelque chose qui s'approche
(Et du coup si tu veux des collisions et un rendu proche de UE4 , ben je te conseille d'utiliser UE4 directement )
Je me suis renseigné sur les billboards mais une question me tracasse : Apparemment il s'agit de modéliser une surface de sorte à ce qu'elle soit toujours face à la caméra, mais dans ce cas si je regarde l'arbre de dessus il aura le même aspect que si je le regardais de côté, à moins de changer de texture mais dans ce cas il faut prévoir une texture pour la vue de face, de derrière, de droite, de gauche, de haut, sans compter les intermédiaires ... Est-ce que je me trompe ?
Non , le billboards , il faut juste faire une surface (un rectangle par exemple) qui est toujours tourné vers la caméra.
Alors comment on gère la texture dans les billboards pour donner l'impression qu'on regarde l'arbre de face, de dessus ...
ça c'est pas possible , enfin si , mais je vois pas comment ça peut être correct visuellement , je suis étonné qu'on t'ai dit de faire ça pour un arbre complet , à la limite quelque feuille (faire un peu des deux 3D et billboars )
Ben alors je vois pas de solution face à ce problème ...
eeehhh on veut bien vous aider mais d'une part il faudrait comprendre les techniques de base et bien les appliquer sinon ce fil de discussion commence à tourner en rond,j'écris juste ça en passant.
Le plus important c'est de procéder méthodiquement et pas-à-pas.
Avant de faire du rendu photo-réaliste si vous voulez afficher des billboards il faut appliquer la technique dont parle Kannagi c.a.d. calculer l'angle entre la caméra et l'objet pour qu'il soit orienté face à la caméra.
si l'aspect de l'arbre change c'est que vous avez un problème de dessiner un rectangle alors donc on en revient à la question du début on n'est pas plus avancé j'ai l'impression![]()
Alors pourquoi vous me parlez de billboards ? Ça sert à quoi ces billboards du coup ?
Laisse tomber les billboards. Affiche les arbres normalement, avec leur modèle 3d. Prend juste pas des arbres qui ont 10 millions de polygones et ce sera bon. https://www.turbosquid.com/3d-model/free/low-poly/trees
Si tu as une chute de performances en affichant 10 arbres, le problème n'est certainement pas dans OpenGL.![]()
Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
Un peu de programmation réseau ?
Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.
J'ai du retard dans la discussion et tant pis pour les octree Mr Mat.M.
Pour l'histoire des billboards, c'est que la technique n'est pas celle qui vous convient, si vous pouvez passer la caméra au dessus d'eux. Il faut comprendre que chaque technique répond à une, ou au maximum deux problématiques mais que comme c'est de la triche, il y aura évidemment des limites qui se régleront en : on ne laisse pas la possibilité à l'utilisateur.
Autrement dit, si vous avez des billboards, ne laissez pas passer la caméra par dessus.
Du coup, je rejoins Bousk : dessinez des arbres en modèles 3D. En plus, avec la technique d'instanciation, vous pouvez en faire encore plus et avec quelques variations de rotation/taille et modèle, ça ne se verra même pas. C'est ce qui se fait dans les jeux vidéos et les experts (et les observateurs) peuvent voir que l'on répète en effet, plein de fois le même modèle.
Maintenant, j'aimerai revenir sur votre méthodologie. Pour faire le photo réaliste... il faut mettre ensemble pas mal de technique. Je ne vais pas toutes les cités (car je vais en oublier), mais en voici quelques unes :
- shadow mapping (pour les ombres) et par la suite, shadow mapping répaties sur plusieurs surfaces (j'ai oublié le nom de la technique, pour faire le shadow mapping du soleil) ;
- lens flare
- si effet de jour et de nuit, un shader de teintage du rendu ;
- instanciation (pour avoir plein de modèle dans la scène) ;
- ... maintenant je vais voir la vidéo
- god rays ;
- bloom (c'est un shader) ;
Et tout ça, ça repose notamment sur :
- les shaders ;
- les FBO ;
- l'instanciation ;
- le frustrum culling ;
- les billboards ;
- du level of detail ;
- les particules ;
- skybox
- multi texturing.
On voit clairement dans la vidéo la réutilisation du même modèle pour le palmier et le caillou.
Aussi, ils n'ont pas de physique à gérer.
Maintenant, il faut une bonne organisation. Je ne sais pas si c'est la meilleure que je vais proposer, mais vous pouvez par exemple essayer chacune des techniques dans un projet bac à sable, pour la prendre en main et comprendre comment elle fonctionne et par la suite, vous pouvez l'intégrer à votre moteur.
Mais pour réussir un moteur... il faut avoir raté un moteur. C'est comme pour réussir un jeu vidéo, il faut en avoir déjà raté un ou plusieurs
. De chaque essai on apprend et à la prochaine itération, on construit mieux, on architecture mieux, afin que tous les éléments s'assemblent correctement.
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.
Merci pour cette explication. J'en profite pour vous dire qu'il y a des moments où je me demande si OpenGL ne se fout pas de moi ... Exemple : J'ai modélisé des routes dans mon projet grâce à Blender, j'en ai deux et cela fait 467200 triangles et le programme est fluide, je viens d'en ajouter une et cela fait 473200 triangles et bien résultat : Le programme fonctionne en une image toutes les trois secondes ... Je la retire et copie une route déjà présente, cela fait 669200 triangles soit bien plus, et là le programme redevient fluide. Je garde que deux routes dont celle que je viens d'ajouter et c'est fluide également. Impossible de tirer des conclusions de cela, le problème ne semble pas venir du nombre de sommets, ni du nombre de textures qui ne dépasse pas 32, ni des textures elles-mêmes ...
C'est quoi ce bordel ...
Partager