LANDSCAPE GL : GÉNÉRATION DE PAYSAGE EN 3D

houmiak Messages postés 44 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 27 août 2003 - 27 août 2003 à 13:33
KoniKoni88 Messages postés 1 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 6 février 2011 - 6 févr. 2011 à 18:05
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/11286-landscape-gl-generation-de-paysage-en-3d

KoniKoni88 Messages postés 1 Date d'inscription mercredi 26 mai 2010 Statut Membre Dernière intervention 6 février 2011
6 févr. 2011 à 18:05
Salut,

J'ai pas mal étudié ton programme, et j'ai aussi un problème pour "colorier" le paysage montagneux. En fait j'utilise une fonction pour que la couleur varie avec l'altitude mais je n'arrive pas à obtenir une texture ...
DedeSurf Messages postés 156 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 23 novembre 2011
21 mai 2004 à 14:05
Salut,
Il faut dire que sa vaut le coup d'oeil
je mettrai 8/10 a 9/10, j'y réfflaichirais !
Thyraël
Maegis Messages postés 101 Date d'inscription vendredi 15 février 2002 Statut Membre Dernière intervention 6 août 2007
18 nov. 2003 à 23:23
kidpigeyre je t'ai envoyé la réponse en MP
kidpigeyre Messages postés 96 Date d'inscription mardi 3 juillet 2001 Statut Membre Dernière intervention 2 novembre 2006
18 nov. 2003 à 16:09
Bonjour,

J'ai longuement regardé ton programme car je dois réaliser un logiciel de modélisation et statistiques en un ensemble de montagne 3D.

Cependant, lors de l'éxécution de ton programme, je trouve un problème d'affichage. En effet certain point lors d'une rotation par les fleches de mouvements ne sont plus reliés par des filaments, on ne les voit plus, ainsi lorsque j'ai essayé d'y rajouter les textures, j'ai des plaques noires ou il y a rien.

Je n'ai aps bien compris ton système pour dessiner les vecteurs dans la fonction draw.

Tu pourrais me l'expliquer? Jpense que ça vient d'ici mais je ne suis pas sur.

Mci.

Romain
houmiak Messages postés 44 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 27 août 2003 2
17 sept. 2003 à 08:38
en groupant tes donnée localement, tu as de grandes chances de retrouver dans ton cache la donnée que tu vas utiliser au prochain step de ton prog (les ram et les caches L2 des CPU transfèrent souvent des bloc, pas une donnée) donc avec un tel tableau (a condition de le parcourir inteligemment), ce que tu perd en multiplication, tu le gagne largement en latence mémoire.
de plus, si tu commence a envisager des calcul vectoriel, une telle organisation est indispensable pour de bonnes performances.
a bientot ;o)
Maegis Messages postés 101 Date d'inscription vendredi 15 février 2002 Statut Membre Dernière intervention 6 août 2007
16 sept. 2003 à 22:34
A daccord j'avais pas pensé à ça. Bon faire un seul tableau ça évite les pointeurs sur pointeurs mais tu fais une multiplication à chaque fois... je ne sais pas si l'on s'y retrouve
En tout cas merci
houmiak Messages postés 44 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 27 août 2003 2
16 sept. 2003 à 20:43
bien sur, il y a ca:
http://www.gameprogrammer.com/fractal.html

et un article sur l'excellent site flipcode:
http://www.flipcode.com/tfiles/alexc06.shtml

pour les différent algo, je pense que google trouvera mieu que moi.

quand aux tableau, pour qu'il soient rapides, il vaut mieu grouper les données, donc eviter les doubles pointeur(catastrophique pour les caches).

donc un tableau a deux dimension : int tab2D[dim1][dim2];
ou encore (ce qui est équivalent) int tab2D[dim1*dim2];
pour accéder a la case (x,y):
tab2D[x][y];
ou encore
tab[x + y*dim1];

sinon, pour voir comment je gere mes tableaux, va voir ma source:
http://www.cppfrance.com/article.aspx?Val=2531
voili :o)
Maegis Messages postés 101 Date d'inscription vendredi 15 février 2002 Statut Membre Dernière intervention 6 août 2007
16 sept. 2003 à 19:46
Si tu a regardé dans le zip (et c'est même inscrit tout en haut) , j'ai fait ce prog suite a un article dans un magazine avec le code en ADA.
Il y avait une explication de la méthode et il était dit qu'une méthode récursive était très longue et moins adaptée pour des tableaux un peu grand.
Si j'aurais eu a faire tout cela de moi même, j'aurais certainement utilisé une méthode recursive.
Par contre pour l'histoire des tableaux 2d, je serait intéresé de savoir comment tu stocke les differentes hauteurs.
Et si tu as un line vers une page contenant cette méthode récursive,....
houmiak Messages postés 44 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 27 août 2003 2
3 sept. 2003 à 17:11
c'est une implementation du "diamond square algorithm", neanmoin, ta facon de coder est quelque peu 'particuliere'. j'ai eu du mal a comprendre tes tableaux 2d, qui se revelent etre peu efficaces et pas optimisées. par contre, une version recursive existe de l'algorithme, qui est nettement plus efficace. je fais des tests et je te tient au courant...
Maegis Messages postés 101 Date d'inscription vendredi 15 février 2002 Statut Membre Dernière intervention 6 août 2007
27 août 2003 à 21:52
Ok pas de probleme
houmiak Messages postés 44 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 27 août 2003 2
27 août 2003 à 13:33
salut!
j'aimes bien ton prog, le paysage généré est pas mal :o)
j'ai actuellement un debut d'embryon de moteur de paysage en DirectX qui genere un paysage, mais a partir d'un Heighmap.
le paysage est texturé et l'eclairage est géré.
je vais essayer d'integrer ta génération a mon programmes si tu es d'accord
a bientot
Rejoignez-nous