Historique des modifications - Message

Message #8432

Sujet: Plusieurs questions avec les .3ds


Type Date Auteur Contenu
Création du message 02-08-2010 15:49:37 darktux72
Je ne m'attendait pas à une réponse aussi rapide ^^

Merci beaucoup wink

nabouill Ecris:

Salut
Problème N°1: je pense qu'il y a 2 façon de réglé ce problème
a) un peu bourrin: tu renomme tes fichier selon majuscule/minuscule en fonction de comment il sonts déclaré dans le fichier 3ds. exemple, pour ton fichier a.bmp, tu le renomme en A.BMP tel que le fichier 3ds le déclare. Ce que je n'aime pas dans ce genre de méthode, c'est que tu va te retrouvé avec des fichier en maj et d'autre en min, ce qui ne fait pas très organisé.
B) plus soft et organisé, tu ouvre ton fichier 3ds avec un éditeur 3D, tu modifie le nom de la texture et tu ré enregistre.

C'est la solution que j'ai utilisé pour mes tests mais le problème c'est que les nombreux mods prévus pour le jeu actuel ont ce problème de nom, donc ça voudrai dire qu'un utilisateur devrait renommer plusieurs dizaines de textures à chaque installation de terrain ou de bus, donc c'est pas vraiment envisageable hmm Il faudrait vraiment trouver un moyen pour ignorer la casse lors de l'ouverture des fichiers.

nabouill Ecris:

Problème N°2:
j'imagine rapidement

Code c++ :


ISceneNode * porteAvant = smgr->addAnimatedMeshSceneNode(smgr->getMesh("porteAvant.3ds"));
bool boutonOuverturPorteEstAppuye = false;
//blablabla...code...
if(boutonOuverturPorteEstAppuye)
{
      porteAvant->setRotation(vector3df(0.0, 90.0, 0));
}

J'ai du mal m'exprimer, en fait il n'y a qu'un seul modèle 3ds, et le 3ds en question est séparé en plusieurs objets, exemple :
bus.3ds
  • -- carrosserie
  • -- vitre
  • -- porteAvant
  • -- porteArriere


Ça sera beaucoup plus simple si tous les objet était chacun dans un 3ds différent mais ce n'est pas le cas sad

nabouill Ecris:

Problème N°3: tu peut charger ton modèle avec les texture qui lui sont attribué dans le modèle, mais tu peut très bien les changé par la suite

Code c++ :


//je charge un model de bus bleu par défaut; qui contient 2 textures a.bmp et b.bmp, qui sont (generalement) dans le meme dossier que le model
ISceneNode * monBus = smgr->addAnimatedMeshSceneNode(smgr->getMesh("bus.3ds"));

//puis je le change de couleur en chargeant a la place les texture de bus Rouge
//on notera ici en 1er parametre l'ID de la texture
monBus->setMaterialTexture(0, driver->getTexture("busRouge/rougeA.bmp"));
monBus->setMaterialTexture(1, driver->getTexture("busRouge/rougeB.bmp"));

//et si ça me chante, je rechange de couleur en chargeant a la place les texture de bus Vert
monBus->setMaterialTexture(0, driver->getTexture("busVert/vertA.bmp"));
monBus->setMaterialTexture(1, driver->getTexture("busVert/vertB.bmp"));


Bon courage A+
A+

En fait c'est un peu plus compliqué que ça car je ne peux pas connaitre à l'avance le nom des fichiers des textures, tout ce que je sais c'est que les textures dans les différents dossiers on le même nom (voir mon exemple dans mon message précédent), et il n'y a pas de texture par défaut qui serai dans le même dossier que le 3ds wink
Je vais essayer de bosser ta solution, je vais voir si après le chargement du 3ds, on peu récupérer les nom des textures, si c'est possible, je ne devrais pas avoir trop de mal à m'en sortir pour rajouter le dossier qui correspond devant smile

En tout cas, encore merci pour ta réponse wink

Retour

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
155 invités en ligne
membre en ligne: -
RSS Feed