Texture UV inversée verticalement

Résolu
Choumoumou Messages postés 162 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 17 novembre 2010 - 15 nov. 2010 à 13:25
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 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.

3 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
17 nov. 2010 à 10:04
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...
3
Choumoumou Messages postés 162 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 17 novembre 2010
17 nov. 2010 à 15:12
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
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
17 nov. 2010 à 15:32
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...
0
Rejoignez-nous