Programmation 3D : rendu de mer/vagues

Programmation 3D : rendu de mer/vagues - Algo - Programmation

Marsh Posté le 10-09-2007 à 13:32:00    

Salut à tous/tes
Bon, je sais pas encore trop si ce message doit aller dans la section "Graphisme" ou "Programmation" puisque ça dépend de la réponse... En fait je cherche à rendre une mer pour un projet de jeu, et je ne sais pas trop sous quel angle aborder ce problème... et sans utiliser de shaders, hélas. Quelqu'un aurait des idée sur la question? Pour l'instant j'ai deux pistes :  
* "Animations UV" : j'en n'ai jamais fait, mais je suppose qu'il s'agit de dessiner une mer plate (ou en tout cas figée) et de manipuler les vecteurs U et V lors du rendu des textures, de façon à recréer une impression de mouvement
* Faire des vagues en 3D : à ce moment c'est plus de la modélisation que de la programmation... j'ai vu + ou - comment faire ça sous 3ds max mais j'ai peur que le rendu soit pauvre sans shader.
Evidemment y'a toujours la possibilité de combiner les deux.
 
Donc ma question, c'est de savoir si vous auriez des conseils à m'apporter étant donné que c'est la première fois que je programme un truc comme ça, voire si vous connaissez des algos tout prêts (on peut rêver  :)  ) ou des tutoriaux (ceux que j'ai trouvés utilisent des shaders)...

Reply

Marsh Posté le 10-09-2007 à 13:32:00   

Reply

Marsh Posté le 10-09-2007 à 14:19:05    

En 3D y'a pas des notions de texture de relief ? (normale)
 
C'est à dire, en raytracing par exemple, on dit "ah ben la normale de cette texture, c'est cette texture".
Ca permet, à partir d'un objet parfaitement plat, de gérer un relief parfaitement réaliste. Je pense qu'en D3D ou OpenGL ça existe aussi, non ?
 
Exemples de rendu d'eau avec PovRay :
http://www.imagico.de/pov/water/water05.html
 
A chaque fois, c'est un bête plan qui est utilisé.
Je doute qu'on ne puisse pas faire pareil en D3D, sans utiliser les shaders.


Message édité par MagicBuzz le 10-09-2007 à 14:19:25
Reply

Marsh Posté le 10-09-2007 à 16:46:15    

déjà D3D ou OGL ou les deux ? (ou autre)
 
en D3D et en OGL il est possible de faire du normal mapping limité avec les états classiques normalement, en D3D tu as l'opérateur D3DTOP_DOTPRODUCT3.
 
pour faire des vagues, si tu ne veux pas être dépendant du CPU, il faut y aller par keyframes, et donc là coté vieux D3D, ce serait le "Vertex Tweening".

Reply

Marsh Posté le 10-09-2007 à 17:40:29    

Merci pour les réponses
En fait j'utilise un middleware pour la PS2, donc ni DX ni GL, mais je ne pense pas que l'api change grand chose pour ce que je veux faire. Le lien que tu donnes MagicBuzz est intéressant, je vais approfondir ça...

Reply

Marsh Posté le 10-09-2007 à 17:52:21    

Ne creuse pas trop le lien que j'ai donné. C'était juste pour illustre le principe de la "normale" d'une texture.
 
Le Ray Tracing c'est... un peu extrêment lent, c'est ce qui sert à faire des rendus photo-réaliste, mais ça prend des heures pour une bête image ;) Pas trop adapté à un jeu quoi... :D
 
Sinon, pour ce qui est des API, si, elles seront à 100% dépendantes du framework utilisé, mais aussi du matériel. Par contre, effectivement, les principes restent les même, à condition d'être supportés ;)

Reply

Marsh Posté le 10-09-2007 à 17:55:52    

le raytraçing n'est pas une finalité en lui-même.
 
tu peux avoir un rendu plus photo-réaliste via un rasteriseur que par ray-tracer. (ça dépends comment tu alimente la chose)

Reply

Marsh Posté le 11-09-2007 à 09:51:16    

(pour "un rendu précis", oui, dans l'absolu pas d'accord, mais bon c'est une autre affaire)
 
ce que je voulais dire surtout, c'est surtout que c'est des techniques tellement différentes que ce que permet l'un est généralement impossible avec l'autre. pour le néophyte, il ne va pas y avoir de différence flagrande, mais c'est comme comparer un pad et une souris... bah pour un certain nombre de choses on s'en sort aussi bien avec l'un qu'avec l'autre, et pour d'autres choses... pas vraiment.
 
Dans tous les cas, autant pour faire des séquences cinématiques, le RayTracing sera un meilleurs outils que le "Rastering ?", autant pour faire un jeu bah... y'a pas à tortiller, le RayTracing servira à rien. 2 FPM en faisant un rendu pourri, c'est pas terrible :o
 
Par contre, là où ils peuvent être complémentaires, c'est pour la création de la scène, le choix des textures, etc. Effectivement, le RayTracing utilise généralement des textures procédurales (donc pas des images mappée) ce qui permet de faire des jeux de textures différentes pour chaque rendu sans se faire chier à les fabriquer à la main à chaque fois. Mais surtout, il va produire des effets de lumière, d'ombres et de brouillrad parfaitement photo réaliste, qui permettront d'assiter le graphiste à refaire la scène en Rastering, où ce genre d'effets sont... plus faits à la main qu'autrechose. (j'ai bidouillé un tout petit peut de D3D, c'est vraiment horrible les rendus de lumière... faut vraiment tout se pallucher à la main si on veut pas que toute la surface d'un plan devienne subitement saturée sans raison, ou qu'on voit apparaître les vertices un a un)

Reply

Marsh Posté le 11-09-2007 à 10:42:01    

là oui, effectivement le ray tracing a l'avantage certain au niveau de tout ce qui est optique, pas obligatoirement matériau, mais la partie réflection/refraction est quasi impossible a faire au niveau rasterisation sans hacks (et ce sera toujours inférieur au ray-traçcing).
 
par contre question éclairage, le raytracing n'est pas une garantie en soi: un rasteriseur alimenté par une solution d'illumination globale sera bien plus photo-réaliste que du ray-tracing seul.
 
le raytracing, sans solution d'illumination globale, bin ça aura le cachet de doom 3, du chimique bien dur (mais ça a son style).
 
je veux dire qu'on déjà eu des jeux plus photo-réalistes que pas mal de rendus ray-tracés.
(maintenant bien sûr le GI ça marche très bien avec un moteur raytracé :D, vu que ça a été fait d'abord pour du rendu haute-qualité)


Message édité par bjone le 12-09-2007 à 11:05:53
Reply

Marsh Posté le 11-09-2007 à 10:45:33    

bon bref Kremtak t'as trouvé ce que tu voulais ? (j'ai vu passer un PDF de normal mapping pour PS2 dans google :D)
 
ceci dit, il vaux mieux commençer d'abord par animer les vagues par interpolation ou autre technique (tu crées ta grilles et tu sin tes positions/normales)


Message édité par bjone le 11-09-2007 à 10:56:22
Reply

Marsh Posté le 11-09-2007 à 23:42:43    

Yep merci de t'inquiéter de mon sort, j'ai à peu près ce que je veux. Pour la ptite histoire j'ai fait les vagues dans 3ds max et en exportant un modèle animé, ce à quoi vient s'ajouter des ptites déformations UV sinusoïdales qui donnent un petit effet sympa, on fait ce qu'on peut quand on n'a pas de shader :) Je pense que je vais ajouter un peu de bruit (perlin?) à tout ça et ce sera bon

Reply

Marsh Posté le 11-09-2007 à 23:42:43   

Reply

Marsh Posté le 11-09-2007 à 23:53:42    

Sinon, en ce qui concerne la manipulation des normales des textures, si je me trompe pas il s'agit du bump-mapping et malheureusement la PS2 ne sait pas faire ça :(

Reply

Marsh Posté le 12-09-2007 à 10:36:54    

[:drapal]


---------------
Töp of the plöp
Reply

Marsh Posté le 12-09-2007 à 10:59:38    

Kremtak a écrit :

Sinon, en ce qui concerne la manipulation des normales des textures, si je me trompe pas il s'agit du bump-mapping et malheureusement la PS2 ne sait pas faire ça :(


 
tiens le pdf dont je parlais:
 
http://playstation2-linux.com/file [...] apping.pdf
 
maintenant tu tentes ou pas :D (a mon avis ça risque d'être très chiant)

Reply

Marsh Posté le 12-09-2007 à 12:04:18    

La PS2 doit quand meme pouvoir faire du multi texturing donc on peut toujours faire un bump map simple (voir Emboss bump map). Le probleme c'est que de toute façon, normal mapping ou pas, cette technique est a mon avis largement insuffisante pour créer une impression de mouvement d'eau puisqu'elle ne permet que de simuler des reliefs leger.
Ici je pense que dans les conditions imposées sans shaders, le rendu d'une vrai anim + anim UV est le mieux.

Reply

Marsh Posté le 12-09-2007 à 12:17:52    

bin les deux mon général, le normal mapping ne remplace pas (ou si peu) de la belle géométrie :D


Message édité par bjone le 12-09-2007 à 12:18:17
Reply

Marsh Posté le 12-09-2007 à 13:15:15    

Me suis mal exprimé, je voulais dire: emboss ou normal, ni l'une ni l'autre des techniques n'est adaptée. Je pense qu'on est d'accord sur ce point :)

Reply

Marsh Posté le 13-09-2007 à 10:43:46    

et bien ça dépends: dans les simus style IL2 le normal mapping sur l'eau est très efficace.
pareil farcry fait plus un traitement par shader normal-mappé et perturbation de la transparence.
 
maintenant sur PS2 :D
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed