Forums Développement Multimédia

Aller au contenu

afficher un terrain correctement

Director

9 réponses à ce sujet

#1 papwal

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 201 messages

Posté 04 March 2010 - 20:53 PM

bonjour,

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 papwal

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 201 messages

Posté 04 March 2010 - 21:02 PM

(erreur de manip mon post va être coupé en deux désolé)

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 papwal

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 201 messages

Posté 04 March 2010 - 21:17 PM

rajout:

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 Alexx

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 343 messages

Posté 05 March 2010 - 10:40 AM

Salut

Aurais-tu des images à nous montrer pour voir l'étendue de ton terrain stp ?

#5 papwal

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 201 messages

Posté 07 March 2010 - 05:05 AM

le terrain fait 1024*1024 ... j'ai une petite démo d'affichage pour l'instant mais elle est pas terrible


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 March 2010 - 05:06 AM.


#6 Alexx

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 343 messages

Posté 07 March 2010 - 10:57 AM

Voir le messagepapwal, le 07 March 2010 - 05:05 AM, dit :

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
heu, c'est à dire ?

Voir le messagepapwal, le 07 March 2010 - 05:05 AM, dit :

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
merci, mais en ce qui me concerne, j'ai déjà un truc pour gérer les terrains ^^
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 papwal

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 201 messages

Posté 07 March 2010 - 14:06 PM

c'est intéressant ta deuxième démo... ça m'interesserait de savoir comment tu as réussi à faire le texture splatting

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 Alexx

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 343 messages

Posté 09 March 2010 - 15:23 PM

Voir le messagepapwal, le 07 March 2010 - 14:06 PM, dit :

c'est intéressant ta deuxième démo... ça m'interesserait de savoir comment tu as réussi à faire le texture splatting
t'as utilisé l'undoc nextShader() ou t'as réussi à t'en sortir sans undoc?
nope, c'est du nextShader()... désolé ^^

Voir le messagepapwal, le 07 March 2010 - 14:06 PM, dit :

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

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 glurp

    Modérateur

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1260 messages

Posté 09 March 2010 - 16:27 PM

Hello,

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 papwal

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 201 messages

Posté 10 March 2010 - 13:53 PM

alexx > tiens j'avais essayé le coup du render to texture... ça donnait des perf acceptables sous directx si j'étalais le rendu sur un nombre de petits crop important, par contre sous opengl c'était lent... par ailleurs je l'ai testé sur diverses machines et le rendu en texture dans director ne marche pas correctement avec toutes les cartes vidéo donc j'ai laissé tomber

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)