afficher un terrain correctement
#1
Posté 04 mars 2010 - 07:53
je suis en train de m'arracher les cheveux sur comment trouver un moyen d'afficher proprement des terrains avec director
j'entends par là:
- on doit pouvoir voir la totalité du terrain, pas de limite de profondeur de champ
- le premier plan doit être détaillé plein pot alors que l'arrière plan doit être très simplifié
donc je devrais en théorie constemment mettre à jour un gros model en fonction de la position de la camera... problème en lingo c'est trop lent pour être refait à chaque frame, il faut étaler ça sur un double buffer et il y'a donc un gros retard des mises à jour, ce qui fait que je ne peux pas gérer le frustum culling, on fa
#2
Posté 04 mars 2010 - 08:02
on fait donc juste une mise à jour basée sur le centre camera... j'arrive donc à un model énorme et le frustum culling de shockwave en bave
donc j'aimerais optimiser ça en découpant mon gros model en plusieurs models afin de profiter du culling de frustum de shockwave 3d
mais ça pose un nouveau probleme... du fait que je dois pouvoir voir toute la map je ne peux pas la découper en un grand nombre de models car shockwave n'aime pas en afficher trop
4*4 c'est déjà pas mal, 8*8 ça fait déjà trop de models dans le champ de vision et ça commence à ramer
donc j'ai mon terrain coupé en 16 sous-terrains... mais je peux pas aller très loin, juste mettre en version hi-poly les 4 cases où se trouve la camera, et les 12 cases restantes en low-poly... ça marche mais la réduction polygonale est pas trop et ça manque beaucoup de précision
connaissez-vous une meilleure technique pour afficher une heightmap ?
#3
Posté 04 mars 2010 - 08:17
j'ai pensé aussi, pour avoir plus de précisions je peux approfondir le quadtree en redécoupant en 16 les 4 models proches de la camera et reappliquer le meme principe, mais à un niveau de profondeur supplémentaire ça me fait déjà 28 models, c'est déjà un peu limite pour shockwave, et visuellement la précision n'est guere meilleure... si je descends un niveau de profondeur en plus la précision commence à devenir bonne mais y'a trop de models dans la camera, argh...
difficile de trouver un bon compromis entre le nombre de models et la réduction de détails
#4
Posté 05 mars 2010 - 09:40
Aurais-tu des images à nous montrer pour voir l'étendue de ton terrain stp ?
#5
Posté 07 mars 2010 - 04:05
c'est bon j'ai trouvé la solution, il suffit d'appliquer la méthode d'affichage classique sur les 4 models détaillés
si la source t'intéresse j'essayerai de vous faire une petite démo pour le wiki si j'ai un peu de temps
Modifié par papwal, 07 mars 2010 - 04:06 .
#6
Posté 07 mars 2010 - 09:57
papwal, le 07 mars 2010 - 04:05 , dit :
papwal, le 07 mars 2010 - 04:05 , dit :
http://www.alesk.fr/demo/geo/
ça c'est une demo d'une ancienne version de mon code, ça permet d'afficher un terrain "infini" (il suffit de rajouter des données de hauteur où on veut pour rajouter du relief)
des trucs plus avancés :
http://www.alesk.fr/...geo/terrain.rar
http://www.alesk.fr/...eo/terrain2.rar
les contrôles sont un peu zarbi (pour l'ile, il faut maintenir le clic droit pour pivoter et maintenir en même temps le clic gauche pour avancer)
si ça interesse du monde je pourrais expliquer ma méthode, mais pas livrer le code source...
#7
Posté 07 mars 2010 - 01:06
t'as utilisé l'undoc nextShader() ou t'as réussi à t'en sortir sans undoc?
j'avais fait un premier essai de terrain mais c'est pourri, juste un bête scrolling avec du fog pour cacher la misère, mais c'est pas comme ça qu'il faut faire en fait il faut se débrouiller pour que la profondeur de champ n'ait aucune limite, qu'on puisse vraiment voir au loin à fond
et y'a un pseudo splatting hideux avec un masque rvb parce que l'undoc j'aime pas trop
[attachment=1230:test_heightmap.zip]
mais c'est bon je crois que j'ai à peu près compris comment on fait ça correctement
#8
Posté 09 mars 2010 - 02:23
papwal, le 07 mars 2010 - 01:06 , dit :
t'as utilisé l'undoc nextShader() ou t'as réussi à t'en sortir sans undoc?
papwal, le 07 mars 2010 - 01:06 , dit :
faut rester réaliste, tu pourras pas faire ça avec shockwave pour un terrain immense... faudra utiliser du fog quoi qu'il arrive
la seul alternative à ce souci (quand on utilise un moteur limité) que j'avais trouvé est expliquée ici : http://www.bruno-urb...ing_of_sotc.pdf (pages 10/11)
J'avais tenté de refaire la même chose en shockwave, c'est possible, mais ça rame car on a pas de fonction pour gérer le "render to texture" correctement et de façon optimale.
#9
Posté 09 mars 2010 - 03:27
En effet les exemples d'Alexx sont très intéressants ! Moi je dis chapeau
Je me demandais cependant si vous n'aviez pas rencontré les mêmes problèmes que dZastreux avec nextShader :
http://director.medi...indpost&p=52328
#10
Posté 10 mars 2010 - 12:53
glurp > oui j'avais lu ces infos donc je préfère utiliser les vieux bricolages multiply/add en jouant sur les channels... faudrait tester simplement avec des tiles sur un seul layer pour voir
1 utilisateur(s) li(sen)t ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)









