[3D] Système de coordonnées de texture

Système de coordonnées de texture [3D] - Programmation

Marsh Posté le 24-05-2002 à 07:07:13    

Pour faire du per pixel lighting, j'ai besoin de pouvoir mettre le vecteur de direction d'une lumière dans le même système de coordonnées que celui des normales contenues dans la texture servant pour le bumb mapping.
 
J'ai lu sur www.direct3d.net qu'il fallait  obtenir pour chaque sommet un triple d'axe U, V et W avec lesquels on pouvait obtenir la transformation amenant le vecteur lumière du système monde au système de la texture de normales.
 
Mais voilà, à part pour l'axe W qui (je pense) est équivalent à la normale de chaque sommet, je ne sais pas comment obtenir les deux axes tangeants U et V. Pourriez-vous m'indiquer comment les obtenir?
 
Merci.

Reply

Marsh Posté le 24-05-2002 à 07:07:13   

Reply

Marsh Posté le 24-05-2002 à 14:29:42    

Personne n'aime l'éclairage par pixel?
 
P.S.: UP déguisé :D

Reply

Marsh Posté le 24-05-2002 à 14:46:47    

personne n'a de geforce3 :D
 
mais tu devrais trouver ton bonheur sur le site de nvidia ...

Reply

Marsh Posté le 24-05-2002 à 19:20:30    

youdontcare a écrit a écrit :

personne n'a de geforce3 :D
 
mais tu devrais trouver ton bonheur sur le site de nvidia ...  



J'ai trouvé de la doc sur le site de nVidia, c'est quand même une mine de renseignement leur site!
 
Alors voilà, pour créer la matrice monde->système de la texture, ils disent de résoudre 3 équations de plan du type:
 
Ax + Bs + Ct + D = 0
Ay + Bs + Ct + D = 0
Az + Bs + Ct + D = 0
 
où x, y et z représentent les coordonnées des vertex, et s et t les coordonnées de texture du bump mapping (comme u et v donc).
 
Ils disent qu'il faut sortir de ces équations 6 dérivées:
 
dsdx
dsdy
dsdz
 
dtdx
dtdy
dtdz
 
Alors j'ai pris un papier et un crayon et j'ai pu les résoudre si on admet à chaque fois que ds ou dt est nul dans chaque équation (j'ai lu ça sur un www.direct3d.net, mais je comprends pas pourquoi on pose ça, si quelqu'un pouvait m'expliquer), mais voilà ce que je trouve:
 
dsdx = - A / B
dsdy = - A / B
dsdz = - A / B
 
dtdx = - A / C
dtdy = - A / C
dtdz = - A / C
 
Mais est-ce juste? :D

Reply

Marsh Posté le 24-05-2002 à 19:36:23    

http://digischool.bart.nl/du/lexikon/afb/aspirin.jpg
 
 
 
 
 :D


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 24-05-2002 à 21:43:02    

Il y a pas de programmeur bon en math pour m'expliquer un peu et vérifier mes résultats?

Reply

Marsh Posté le 25-05-2002 à 00:47:01    

là désolé j'ai pas joué avec ça encore....
même si j'y compte bien...
 
sinon tu les as trouvé les sous-titres pour fast & furious :D ;)

Reply

Marsh Posté le 25-05-2002 à 01:09:58    

Reply

Marsh Posté le 25-05-2002 à 08:27:55    

Merci pour le lien bjone, je vais aller lire ça.
 
Ben piur Fast and Furious, nan j'ai pas trouvé les sous-titres alors j'ai regardé le film en français :D Bien que les voix soient pas terrible...

Reply

Marsh Posté le 25-05-2002 à 13:07:15    

Alload a écrit a écrit :

Merci pour le lien bjone, je vais aller lire ça.
 
Ben piur Fast and Furious, nan j'ai pas trouvé les sous-titres alors j'ai regardé le film en français :D Bien que les voix soient pas terrible...



 
pas pb, le film est a chier, alors ca passe tres bien :D

Reply

Marsh Posté le 25-05-2002 à 13:07:15   

Reply

Marsh Posté le 25-05-2002 à 16:50:12    

chrisbk a écrit a écrit :

 
 
pas pb, le film est a chier, alors ca passe tres bien :D  




 
:lol:
 
moa j'ai regardé les 5 premières minutes en divx....
j'ai fait "oki ça me fera de la plaçe..."
:D

Reply

Marsh Posté le 25-05-2002 à 17:06:55    

Bon, j'ai pigé comment ça marchait grâce à un programme de nVidia dont j'ai regardé le code source.
 
Mais pour le moment je suis pas chez moi, alors j'expliquerais demain soir.
 
Stay tunned :D En attendant vous avez qu'à regarder Fast And Furious, ça vous changera :D

Reply

Marsh Posté le 26-05-2002 à 18:45:18    

Bon alors voilà ce que j'ai compris.
 
On sait que le vecteur S^T pour un sommet est le même vecteur que celui de la normale à ce sommet.
 
Donc si on pose: S^T (A, B, C)
 
On peut en déduire une équation de plan du type: Ax + By + Cz + D = 0.
 
Ensuite, on peut remplacer ces coordonnées par:
 
_ x, s, t -> Ax + Bs + Ct + D = 0
_ y, s, t -> Ay + Bs + Ct + D = 0
_ z, s, t -> Az + Bs + Ct + D = 0
 
Là j'ai pas compris pourquoi mais bon, on admet que c'est bon :D
 
Ensuite en posant par exemple:
Ax0 + Bs0 + Ct0 + D = Ax1 + Bs1 + Ct1 + D
 
et ce pour les trois types d'équations, on peut trouver la valeur de dsdx, dsdy, dsdz, dtdx, dtdy, dtdz.
 
Et comme la matrice pour transformer le vecteur lumière en vecteur lumière dans le repère de texture est:
 
dsdx  dsdx  S^T.x
dsdy  dsdy  S^T.y
dsdz  dsdz  S^T.z
 
Ben le problème est résolu.

Reply

Sujets relatifs:

Leave a Replay

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