Texture UV inversée verticalement [Résolu]

Choumoumou 162 Messages postés jeudi 30 septembre 2004Date d'inscription 17 novembre 2010 Dernière intervention - 15 nov. 2010 à 13:25 - Dernière réponse : BunoCS 14091 Messages postés lundi 11 juillet 2005Date d'inscription 20 septembre 2018 Dernière intervention
- 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 

Votre réponse

3 réponses

Meilleure réponse
BunoCS 14091 Messages postés lundi 11 juillet 2005Date d'inscription 20 septembre 2018 Dernière intervention - 17 nov. 2010 à 10:04
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...

Merci BunoCS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de BunoCS
Choumoumou 162 Messages postés jeudi 30 septembre 2004Date d'inscription 17 novembre 2010 Dernière intervention - 17 nov. 2010 à 15:12
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
BunoCS 14091 Messages postés lundi 11 juillet 2005Date d'inscription 20 septembre 2018 Dernière intervention - 17 nov. 2010 à 15:32
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.