• Accueil forums
  •  » Import
  •  » Comme fonctionne le chargement de texture à partir d'un fichier 3DS
#1 

09-06-2009 16:46:54

knightking
Membres
Date d'inscription:
Messages: 5
IP: 194.254.104.254
Courriel

Bonjour,

en tant que néophyte, je vais certainement poser une question évidente, mais je n'arrive pas à charger les textures d'un modèle .3ds.de véhicule. Et je ne comprends pas clairement la façon dont le chargement est effectué.
Tout en détails Le modèle 3DS se trouve sous la forme des répertoires suivants (Linux) :

 
vehicule/monmodele/vehicule.3ds
vehicule/mestextures/echappement.png
vehicule/mestextures/roues.png
vehicule/mestextures/carrosserie.png
vehicule/mestextures/plaque.png
......

De sorte que j'ai donc plusieurs fichiers de texture (fichiers PNG au format 8 bits) pour différents éléments (une douzaine) de mon véhicule lequel est représenté par un seul fichier 3DS.

J'ai réutilisé le code de l'exemple 01.HelloWorld fourni avec Irrlicht.
Je pensais naivement qu'il fallait simplement, à l'instar d'OpenSceneGraph, donner le nom du fichier 3DS, pour que le modele mesh et les textures associés soient affichées automatiquement. Mais cela n'a pas l'air d'être le cas : j'obtiens ainsi mon véhicule, mais tout en blanc, sur fond violet !! Il semble qu'il faille utiliser
node->setMaterialTexture()

Mais j'ai l'impression que cela ne fonctionne que s'il n'y a qu'UN SEUL fichier de texture associé au mesh, non ?!

Je pensais que le poste
http://www.developpez.net/forums/d680787/applications/developpement-2d-3d-jeux/moteurs-3d/irrlicht-utiliser-mesh-plusieurs-textures/
répondait à ce problème. Mais il semble, après les tests que j'ai fait, que celui-ci parle d'avantage de textures multicouches sur un mesh.
D'autant plus que la valeur maximale de
 VAL

, fixée dans les fichiers headers, dans
node->setMaterialTexture(VAL, driver->getTexture("lvl/cube1_e2.bmp"));

est de 4 ! Donc je ne vois pas comment je pourrais mettre 12 fichiers !

Je suis donc allé sur d'autres forums qui semblent indiquer qu'il faille utiliser les paramètres node->setMaterielFlag, pour adapter la lumière, mais ce n'est pas clair du tout. Et cela ne dit pas si je dois ou non spécifier le nom des différents fichiers de texture!

Si quelqu'un à une réponse lumineuse, je suis preneur.
Merci.


Hors ligne


#2 

10-06-2009 14:44:29

knightking
Membres
Date d'inscription:
Messages: 5
IP: 194.254.104.254
Courriel

La solution est simple, le fichier 3DS contient le nom des fichiers de textures, Or après analyse de ce fichier à l'aide de Khexedit, les fichiers ne possèdent pas, dans leur chemin relatif au fichier 3DS, le répertoire

vehicule/mestextures/

Ce qui implique que pour charger les textures, ces fichiers doivent directement se trouver dans le répertoire du fichier 3DS à savoir :
vehicule/monmodele/vehicule.3ds
vehicule/monmodele/echappement.png
vehicule/monmodele/roues.png
vehicule/monmodele/carrosserie.png
vehicule/monmodele/plaque.png


Hors ligne


#3 

10-06-2009 16:04:35

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 90.56.250.151
Courriel

Cool, tu fais les réponses à tes propres questions smile


Force et sagesse...

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
172 invités en ligne
membre en ligne: -
RSS Feed