Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
829 connectés 

  FORUM HardWare.fr
  Programmation

  Probleme d'illumination sous Direct3D

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme d'illumination sous Direct3D

n°156082
Ace17
Posté le 10-06-2002 à 19:31:41  profilanswer
 

J'ai une liste de triangle qui forment une surface plane. A la base c'est pour faire le rendu d'un terrain, donc ca ne va pas rester plat. En fait j'espérais atténuer justement les variations de terrain en m'aidant du Gouraud Shading et des vertex normals. Mais je me suis rendu compte que meme quand le terrain était plat il y avait le probleme, donc les vertex normals ne semblent pas en cause.
 
Voici le probleme : en fait on distingue la séparation entre les triangles grace a la différence d'illumination. Voici un screenshot:
 
http://acecorp.free.fr/land.jpg
 
J'ai rajouté ici des lignes rouges qui indiquent dans quel sens est le quadrillage
 http://acecorp.free.fr/land2.jpg


Message édité par Ace17 le 06-10-2002 à 19:50:01
mood
Publicité
Posté le 10-06-2002 à 19:31:41  profilanswer
 

n°156085
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-06-2002 à 19:34:21  profilanswer
 

C'est genial pour illustrer un phénomène de l'oeil humain : on voit nettement mieux les triangles sur la 1ère image si on a regardé la 2ème image juste avant :crazy:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°156097
Ace17
Posté le 10-06-2002 à 19:49:44  profilanswer
 

LOL c'est vrai, j'avais pas fait gaffe! :-)
(up déguisé :-D)

n°156178
youdontcar​e
Posté le 10-06-2002 à 21:45:01  profilanswer
 

gouraud = calcul de l'intensité lumineuse à chacun des sommets du triangle, puis interpolation linéaire entre les trois sommets lors de l'affichage. c'est donc une grossière approximation, l'éclairage d'une surface produisant une fonction non linéaire.
 
solution bourrin qui marche bien : subdiviser ton terrain.
 
solution bourrin optimisée localement : subdiviser le bout de ton terrain qui est affecté par la lumière.
 
solution teste autre chose avant de poster : une fois que tu auras mis une texture ça se verra déjà beaucoup moins.
 
solution esthétique : tu n'auras a priori jamais d'éclairage aussi violent / localisé sur ton terrain. arrête tes couleurs de coder et fait du joli.
 
solution texture : tu réalises l'éclairage par une lightmap, ici une texture concentrique blanc au centre -> noir sur les côtés que tu affiches sur ton terrain au bon endroit, la couleur étant réalisée par les vertex colors. pour chaque light, tu détermines les triangles qu'elle affecte, ça te donnera un carré à remplir. tu blend les lights en additif, puis la texture par-dessus en multiplicatif.

n°156261
thunderbir​d54
Posté le 10-06-2002 à 23:20:45  profilanswer
 

la question du newbie, ou as tu appris a programmer direct 3D?

n°156277
Ace17
Posté le 10-06-2002 à 23:46:46  profilanswer
 

thunderbird54 a écrit a écrit :

la question du newbie, ou as tu appris a programmer direct 3D?  




sur Internet, principalement
 

youdontcare a écrit a écrit :

solution teste autre chose avant de poster : une fois que tu auras mis une texture ça se verra déjà beaucoup moins.




Négatif, tu penses bien que ce n'est pas la premiere fois que je mets de la lumiere dans une appli D3D. J'ai déja essayé les textures!


Message édité par Ace17 le 06-10-2002 à 23:49:05
n°156303
LeGreg
Posté le 11-06-2002 à 00:18:02  profilanswer
 

ben les solutions proposées me paraissent convenable,
de toute facon tu n'arriveras a rien de mieux (qualitativement) avec le Gouraud shading donc soit tu subdivises plus (pour approcher le per pixel lighting), soit tu utilises des lightmaps (si ta source de lumiere eclaire toujours de maniere spherique ou cylindrique notamment), soit tu fais du vrai per-pixel lighting comme propose sur les sites de nVidia ou MSDN.
 
LeGreg

n°156361
Ace17
Posté le 11-06-2002 à 08:14:16  profilanswer
 

Effectivement, quand je divise par 10 les dimensions des triangles, la ca devient parfait au niveau du rendu. Les perfs, par contre...:-)
Et le per pixel lighting ca marche comment? Direct3D implémente ca ou il faut que je le programme moi meme?
Je crois cependant que je vais opter pour le lightmap. Quels sont les inconvénients du lightmap?


Message édité par Ace17 le 06-11-2002 à 08:22:16
n°164180
thunderbir​d54
Posté le 23-06-2002 à 20:18:52  profilanswer
 

tu n'aurais pas des liens a me communiquer Ace pour que j'apprenne?

n°164250
Ace17
Posté le 23-06-2002 à 22:33:58  profilanswer
 

Pas de probleme jeune padawan  ;)  
 
Pour commencer (en francais) :
http://membres.lycos.fr/jcomgl/home1.php3
 
Ensuite, sur des questions plus précises tu as une multitude d'articles sur GameDev :
http://www.gamedev.net/reference/l [...] egoryid=24
 
Et je ne peux que te recommander de te procurer le SDK de DirectX 8 qui contient les programmes d'exemple ainsi que le manuel de DirectX 8 au format chm - il est absolument indispensable.
 
Bonne chance :-)
 
Au fait connais tu d'autres API dans le genre ou c'est la premiere fois que tu t'attaques a la 3D?

mood
Publicité
Posté le 23-06-2002 à 22:33:58  profilanswer
 

n°164253
Alload
Posté le 23-06-2002 à 22:42:59  profilanswer
 

Passes au per pixel lighting, nan?

n°164258
thunderbir​d54
Posté le 23-06-2002 à 22:56:26  profilanswer
 

c la premiere fois ke je m'attak a la 3D
 
avant je n'ai fait ke des prog en C sous dos
et kom le dos ca fe chier ben fo ke j'apprenne autre chose!

n°164264
Ace17
Posté le 23-06-2002 à 23:05:52  profilanswer
 

thunderbird54 a écrit a écrit :

c la premiere fois ke je m'attak a la 3D




 
Mhhh et bien j'espere que tu n'as pas peur des maths
Et sinon il parait que Direct3D est beaucoup trop compliqué par rapport a ce qu'il permet de faire... je te conseille donc de peut etre opter pour OpenGL


Message édité par Ace17 le 23-06-2002 à 23:06:49
n°164265
thunderbir​d54
Posté le 23-06-2002 à 23:09:02  profilanswer
 

alors pour les maths g le niveau bac+1 ca ira?
 
sinon le site ke tu m'as donne parle d'opengl aussi donc je regarderais, j'espere ke j'arriverais a kelke chose.

n°164268
Alload
Posté le 23-06-2002 à 23:10:05  profilanswer
 

thunderbird54 a écrit a écrit :

alors pour les maths g le niveau bac+1 ca ira?



Suffit de lire des docs et de comprendre, pas besoin d'être un boss en maths.

n°164272
Ace17
Posté le 23-06-2002 à 23:14:14  profilanswer
 

thunderbird54 a écrit a écrit :

alors pour les maths g le niveau bac+1 ca ira?




 
Hey j'ai pas dit qu'il fallait etre bon :-)
(Je l'ai pas encore mon bac moi! (enfin dans quelques jours j'espere! ;) ))
 
Non, comme le dit Alload, suffit juste d'etre capable de comprendre la doc, et vu que c'est principalement des maths, ca marche mieux si on aime ca...


Message édité par Ace17 le 23-06-2002 à 23:15:32
n°164274
Ace17
Posté le 23-06-2002 à 23:17:39  profilanswer
 

Alload a écrit a écrit :

Passes au per pixel lighting, nan?  




 
En deux mots ca consiste en quoi, et est-ce que c'est pris en charge par Direct3d ou il va falloir que je fasse ca en software?

n°164276
thunderbir​d54
Posté le 23-06-2002 à 23:23:26  profilanswer
 

merde a toi alors ace
 
kel bac? j'ai passe le mien l'année derniere, bac S
 
enfin je ne v po trop t'embeter parce que on s'ecarte de ton sujet! lol

n°164280
Alload
Posté le 23-06-2002 à 23:32:01  profilanswer
 

Ace17 > en fait, tu peux faire du per pixel lighting en réécrivant la fonction qu'exécute la carte graphique avant d'écrire les données d'un pixel dans le tampon, c'est ce qu'on appelle un pixel shader. Il existe aussi les vertex shaders, là on change la fonction appliquée à chaque sommets.
 
Cherches du côté de la SDK de DirectX ou ici: www.direct3d.net
 
Sinon, moi aussi je passe le BAC S cette année :D

n°164281
chrisbk
-
Posté le 23-06-2002 à 23:37:51  profilanswer
 

Ace17 a écrit a écrit :

 
 
Mhhh et bien j'espere que tu n'as pas peur des maths
Et sinon il parait que Direct3D est beaucoup trop compliqué par rapport a ce qu'il permet de faire... je te conseille donc de peut etre opter pour OpenGL




 
 
(je m'eleve discrement mais néanmoins violemment contre cette affirmation totalement fausse :O)

n°164283
youdontcar​e
Posté le 23-06-2002 à 23:47:16  profilanswer
 

chrisbk a écrit a écrit :

(je m'eleve discrement mais néanmoins violemment contre cette affirmation totalement fausse :O)


[:totoz]
 
...
 
+1 :D

n°164284
Ace17
Posté le 23-06-2002 à 23:51:02  profilanswer
 

thunderbird54 a écrit :

 
kel bac?



Bac S quelle question! ;)

alload a écrit :

 
Sinon, moi aussi je passe le BAC S cette année :D




Bonne réussite a toi (ou merde, au choix!) :hello:  

chrisbk a écrit a écrit :

 
(je m'eleve discrement mais néanmoins violemment contre cette affirmation totalement fausse :O)  




Ah? Quelqu'un soutient Direct3D? C'est rare ici :-)
Je n'ai rien contre Direct3D! J'ai eu beaucoup d'echos sur la complexité de D3D par rapport a la simplicité d'OpenGL. Mais personnelement, je ne peux pas vraiment juger car je n'ai jamais essayé sérieusement essayé OpenGL pour le moment ... Peut etre pourrais-tu m'éclairer? (sans que ca parte en troll! :D)


Message édité par Ace17 le 23-06-2002 à 23:57:07
n°164286
youdontcar​e
Posté le 24-06-2002 à 00:04:35  profilanswer
 

Ace17 a écrit a écrit :

J'ai eu beaucoup d'echos


[:marteau]
 
dx a commencé comme une grosse bouse infâme, puis a rattrapé opengl, puis est devenu + 'simple' et + complet. tape du code de multitexture sous gl et sous dx, puis compare. essaye de faire des shaders sous gl et sous dx, puis compare. etc.

n°164287
Ace17
Posté le 24-06-2002 à 00:08:20  profilanswer
 

Héhé, ok j'ai compris!
Et c'est a partir du 8.1 je suppose que c'est devenu mieux?

n°164288
youdontcar​e
Posté le 24-06-2002 à 00:11:32  profilanswer
 

c'est devenu équivalent vers le 5 je crois (ou le 6 ? non je crois bien que c'est le 5). en fait, à partir du moment où DrawPrimitive() est apparu. avant, c'était vraiment la merde pour afficher ne serait-ce qu'un triangle à l'écran.
 
à partir du 7, c'est devenu mieux (apparition de la lib d3dx & co).

n°164309
LeGreg
Posté le 24-06-2002 à 00:48:23  profilanswer
 

Citation :

Ah? Quelqu'un soutient Direct3D? C'est rare ici :-)


 
non ce n'est pas rare mais c'est une source de trolls infames
 

Citation :

Je n'ai rien contre Direct3D! J'ai eu beaucoup d'echos sur la complexité de D3D par rapport a la simplicité d'OpenGL. Mais personnelement, je ne peux pas vraiment juger car je n'ai jamais essayé sérieusement essayé OpenGL pour le moment ... Peut etre pourrais-tu m'éclairer? (sans que ca parte en troll! :D)


 
Les developpeurs PC ont clairement fait le choix de Direct3D.
Les raisons sont diverses et variees, mais c'est peut etre lié au volontarisme de Microsoft par rapport a ceux qui font evoluer OpenGl. (et peut etre a la "fausse" simplicité d'OpenGl qui plait aux débutants mais moins aux programmeurs serieux).
 
LeGreg

n°164482
ITM
Avatar peint à la main
Posté le 24-06-2002 à 12:19:23  profilanswer
 

Arretez, de cracher sur l'OpenGL. Il est quand même issu du monde professionnel et plus vieux que D3D.
De plus, l'openGL est portable est devient par le même coup la seule alternative sur Linux, raison de plus de s'y mettre.
L'OpenGl est généralement plus rapide que D3D pour des travaux similaires.
 
(je vois toujours pas en quoi du code multitextures serait compliqué sous openGL??)


---------------
iteme.free.fr | Mon feedback
n°164523
chrisbk
-
Posté le 24-06-2002 à 13:12:37  profilanswer
 

ITM a écrit a écrit :

Arretez, de cracher sur l'OpenGL. Il est quand même issu du monde professionnel et plus vieux que D3D.
De plus, l'openGL est portable est devient par le même coup la seule alternative sur Linux, raison de plus de s'y mettre.
L'OpenGl est généralement plus rapide que D3D pour des travaux similaires.
 
(je vois toujours pas en quoi du code multitextures serait compliqué sous openGL??)  




 
ceci est faux avec les cartes modernes, pour une raison toute con : l'impossibilité de stocker les vtx en ram video (avec l'ogl "de base" ). Pour ca faut passer par de fines extension proprietaire, ce qui limite la portabilité. glbegin, glEnd, c simple a utiliser, mais niveau performance c'est zero complet. glVertexArray (ou je sais plus quoi), c'est deja mieux, mais a priori les vtx se baladent tjs via l'agp a chaque appel....
Ensuite, une fois ceci fait, il n'y a pas franchement aucune raison pour que l'un ou l'autre aille plus vite...
 
le multitex n'est pas supporté par l'opengl1.1 en standart (le seul ogl dispo sous win), il faut a nouveau passer par des extensions. et il faut le dire, les extension, c'est clairement pas le pied a utiliser
 
(j'ai l'impression que je me repete un peu au fil des mois :D)

n°164535
LeGreg
Posté le 24-06-2002 à 13:20:32  profilanswer
 

cette discussion est inutile et recurrente..
c'est toujours les memes arguments qui reviennent
donc une recherche sur le forum ou Google
sur "d3d vs opengl" devrait satisfaire
les amateurs de mauvaise foi.
 
LeGreg

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Probleme d'illumination sous Direct3D

 

Sujets relatifs
probleme avec l'instalation de phpbbGros probleme avec Access
Probleme avec copier coller.[C++] Problème de compilation d'une appli en C++
probleme lors de la creation de mon site ( avec namo webeditor)[VC++.NET] probleme de linkage
[php] probleme avec MkDirProblème requete SQL
probleme de boutons reactifs sous golive 5probleme avec mon forum phpbb
Plus de sujets relatifs à : Probleme d'illumination sous Direct3D


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR