Texture UV inversée verticalement [Résolu]

Signaler
Messages postés
162
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
17 novembre 2010
-
Messages postés
14884
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
30 novembre 2020
-
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.

3 réponses

Messages postés
14884
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
30 novembre 2020
93
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...
Messages postés
162
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
17 novembre 2010

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
Messages postés
14884
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
30 novembre 2020
93
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...