Texture UV inversée verticalement [Résolu]

Messages postés
162
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
17 novembre 2010
- - Dernière réponse : BunoCS
Messages postés
14531
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 juin 2019
- 17 nov. 2010 à 15:32
Bonjour à tous,

Je modélise des objets 3D sur 3ds Max que j'exporte ensuite en ASCII (format .ASE) pour les utiliser dans un projet en C++ avec directX. Ces objets sont texturés.
Pour, par exemple, un cube, la texture est :


Sur 3ds Max, je fais ce cube, qui après un mapping UV donne ça :


Lorsque je le traduit sur mon programme directX, j'obtiens ça :


La texture a été inversée sur l'axe du haut (U). Ce n'est pas un problème de vertex, tous les points sont à leur place. Pour résoudre ce problème, il faudrait qu'un polygone aux UVs (0,1),(0,0),(1,0) ait ses UVs remplacés par (0,0),(0,1),(1,0).

Quel algo me faudrait-il ? Sachant que pour un objet complexe, inverser les deux premiers couples UV ne marche pas.
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
14531
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 juin 2019
88
3
Merci
Hello,
Par convention, les coordonnées d'images U,V débutent en haut à gauche.
Ce qui veut dire que "X = -U". Tu n'as, en théorie, qu'à inverser la coordonnée U

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 131 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BunoCS
Messages postés
162
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
17 novembre 2010
0
Merci
J'ai trouvé la solution. Tu as en partie raison :
La texture pour DirectX se coordonne ainsi :


Tandis que sur 3ds Max, elle est mappée comme ça :


La texture est retournée verticalement par le milieu, du coup c'est V qu'il faut inverser en le multipliant par -1, et le recadrer avec +1 :

V = V * -1 + 1

Ce qui donne pour 1 -> 0, pour 0.3 -> 0.7 et pour 0.5 (le milieu) -> 0.5
Commenter la réponse de Choumoumou
Messages postés
14531
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 juin 2019
88
0
Merci
Olala....mais je m'étais gourré!
Je voulais dire "Y = -V".
Mais bon, l'essentiel c'est que tu es résolu ton souci.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Commenter la réponse de BunoCS