Bonjour,
j'ai modèlisé une table (basique) avec Blender que j'ai texturé et importé avec Irrlicht. Tout va bien, sauf que les textures ne sont pas chargées correctement. En fait au lieu d'avoire une vraie texture de bois j'ai seulement la couleur marron.
Comment faire pour avoir une vrai texture ? Merci.
Hors ligne
Bonjour Lagiol, bienvenu.
Sinon, j'ai eu le même genre de problème. Je l'ai résolu en jouant avec les paramètres d'échelle des textures. Mes textures étaient trop dilatées,...
node->getMaterial(i).getTextureMatrix(j).setTextureScale( scale.x , scale.y ); node->getMaterial(i).getTextureMatrix(j).setTextureScaleCenter( scaleCenter.x , scaleCenter.y ); node->getMaterial(i).getTextureMatrix(j).setTextureTranslate( translate.x , translate.y ); node->getMaterial(i).getTextureMatrix(j).setTextureTranslateTransposed( translateTransposed.x , translateTransposed.y );
Hors ligne
Peux tu indiquer quel type de fichier importe tu dans irrlicht et inscrire le bout de code qui te permet de charger ton mesh, merci
Hors ligne
Gehogor, il manque une partie de code non ? par ce que là ça plante un peu il manque les "scale" et les autres "scaleCenter", "translate", etc, et i, j, y, x sont s32 ou int ?
thoced, c'est un .obj.
Hors ligne
En effet, les variables non précisées sont des variables de mon programme, il faut que tu mets les tiennes ou des valeurs fixes si tu préfères. En ce qui concerne s32 ou int, je ne sais plus, il faut regarder la doc !
Aller, juste pour le délire...
int materialCount = node->getMaterialCount(); // On récupère le nombre de matière de l'objet 3D for(int i=0;i<materialCount;i++) { node->getMaterial(i).MaterialType = EMT_SOLID /*Tes paramètres*/; node->getMaterial(i).ZBuffer = /*Tes paramètres*/; node->getMaterial(i).Wireframe = /*Tes paramètres*/; node->getMaterial(i).PointCloud = /*Tes paramètres*/; node->getMaterial(i).AmbientColor = /*Tes paramètres*/; node->getMaterial(i).EmissiveColor = /*Tes paramètres*/; node->getMaterial(i).SpecularColor = /*Tes paramètres*/; node->getMaterial(i).DiffuseColor = /*Tes paramètres*/; node->getMaterial(i).Thickness = /*Tes paramètres*/; node->getMaterial(i).Shininess = /*Tes paramètres*/; node->getMaterial(i).Lighting = /*Tes paramètres*/; node->getMaterial(i).BackfaceCulling = /*Tes paramètres*/; node->getMaterial(i).FogEnable = /*Tes paramètres*/; node->getMaterial(i).GouraudShading = /*Tes paramètres*/; node->getMaterial(i).NormalizeNormals = /*Tes paramètres*/; node->getMaterial(i).ZWriteEnable = /*Tes paramètres*/; node->getMaterial(i).AntiAliasing = /*Tes paramètres*/; //********************************* Gestion des textures *************************************** for(int j=0;j<4;j++) // Pour Irrlicht... c'est 4, mais on peut changer, il faut demander à Tmyke pour ça ! { node->getMaterial(i).getTextureMatrix(j).setTextureScale( /*Tes paramètres*/ , /*Tes paramètres*/ ); node->getMaterial(i).getTextureMatrix(j).setTextureScaleCenter( /*Tes paramètres*/ , /*Tes paramètres*/ ); node->getMaterial(i).getTextureMatrix(j).setTextureTranslate( /*Tes paramètres*/ , /*Tes paramètres*/ ); node->getMaterial(i).getTextureMatrix(j).setTextureTranslateTransposed( /*Tes paramètres*/ , /*Tes paramètres*/ ); } // ********************************************************************************************* }
Dernière modification par Gehogor (21-11-2011 19:09:41)
Hors ligne
Marche toujours pas, j'ai beau mettre des valeurs énormes comme minuscules, marche pas !
Hors ligne
Ok, si j'ai bien compris, ça compile, ça ne plante pas mais par contre tu as toujours du marron comme rendu de texture. Je suis désolé, je n'avais que ça en réserve ! Bon courage.
Il y a bien un mec trop balaise qui va t'aider...
Dernière modification par Gehogor (23-11-2011 01:28:26)
Hors ligne
j'ai suivit un peut le topic tapis dans l'ombre .. :]
ce que tu ne presice pas c'est esque tu utilise les texture vectoriel de blender ?
si c'est le cas navré pour toi ça ne passe pas à l'exporte, on a juste une colorisation des vertices
il te faut faire une uvmap, crée ta texture en externe et importer la texture dans blender pour l'appliquer
à partir de la normalement tu charge ton model et il charge automatiquement la texture ( ça depend du format, au pire tu load la texture en manuel )
sinon uvmap incorect, shader ?, probleme d'exportation (essaye un autres formats), etc ... je peut voir ça si tu m'upload ton .blend
Hors ligne
Magun, ça prend plus de temps l'UV Mapping, non ?
J'envoie mon modèle comme demandé, et les textures qui vont avec.
http://hotfile.com/dl/135880659/1a592a5/table.zip.html
Dernière modification par Lagiol (24-11-2011 15:58:10)
Hors ligne
d'aprés ce que j'ai vue ça viens de l'uv map ... par contre sa passe pas a l'export en wavefront (.obj), sinon sa semble fonctionner en .x
Hors ligne
On ne peux pas exporter en .x, si ?
Hors ligne
Coucou, Tu va tout en bas à gauche et tu selectionne UV/imageEditor
Tu clique sur image->New Image, ensuite tu coche la case uv test grid
Après tu va dans la colone de droite, tu clique sur l'onglet Render, en bas tu as l'otion bake, tu selectioone le mode"textured" et tu clique sur bake.
Voilà en principe tu vera la texture du bois dans la partie uv/imageeditor
j'ai testé ta table et une partie de la texture est tourné de 90°, à toi de rectifier le problème
pour cela tu va dans la colonne de gauche tu clique sur unwrap et sa va redefinir la decoupe de ton objet, ensuite tu reclic sur bake
Hors ligne
Lorsque je clique sur "bake", j'ai un message d'erreur "no objects or images found to bake to"
Hors ligne
Bah ça veut dire ce que ça veut dire
soit l'objet n'est pas selectionné soit tu n'a pas créer de nouvelle image, je pense que c'est plutôt la premiere solution, selectionne ton objet en mode "object" puis passe en "edit" mode.
ps:courage il faut du temps pour s'habituer à blender
Hors ligne