IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Texture mapping with Assimp


Sujet :

C++

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 28
    Par défaut Texture mapping with Assimp
    Bonjour les programmeurs,

    j'ai de nouveau besoin de vos compétences. Je sais maintenant créer un fichier .OBJ. Celui-ci représente un rectangle simple. Avant son export j'aimerais plaquer une image sur sa surface. Cette image devra faire partie du fichier (lors de son ouverture avec MeshLab par exemple, l'image sera présente sur mon rectangle). J'ai vu qu'il était possible de modifier à la main le fichier .mtl (fichier joint au fichier .OBJ qui contient les données sur les matériaux), or je souhaite rendre la chose complètement transparente.

    Merci d'avance !

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Bonjour!

    Ou se situe exactement le probleme?
    Arrives-tu a exporter ton modele avec ses coordonnees de texture?
    Si tu souhaites integrer l'image a ton modele, le mieux est de zipper tes 3 fichiers (.obj, .mtl et image) car si tu essaies d'integrer les donnees de l'image au fichier mtl (si j'ai bien compris), il te faudra ecrire un parser pour extraire celle-ci avant de donner ton modele a Assimp.

    EDIT:
    Desole pour les accents, clavier QWERTY.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 28
    Par défaut Je progresse
    Merci pour ta réponse.

    J'arrive à exporter mon modèle oui. A l'ouverture, MeshLab (mon viewer 3D) me montre bien ce que je veux voir (un rectangle simple).

    Auparavant, j'ajoutais manuellement la commande suivante à mon fichier .mtl pour que image.png (ma texture) soit collé à mon rectangle : map_Ka path/image.png

    Depuis, j'ai trouvé quelque chose d'intéressant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
         // Chemin jusqu'à l'image
        aiString pathPicture = aiString("path/image.png");
     
        // Chargement de la texture
        scene->mMaterials[pMesh->mMaterialIndex]->AddProperty(&pathPicture, AI_MATKEY_COLOR_AMBIENT, aiTextureType_AMBIENT);
    Grâce à cela, j'écris automatiquement dans mon fichier .mtl la commande suivant : map_ka path/image.png (j'approche du but mais ce n'est pas tout à fait exacte: k!=K).
    Cette fois-ci MeshLab ne m'affiche rien d'autre que mon rectangle. Il ne digère pas les "k" minuscules.

    Des idées sur les bonnes propriétés à passer en argument à AddProperty ? J'essaye toutes les combinaisons possibles en ce moment même mais sans succès.

    Merci d'avance. J'espère que lancer cette discussion aidera du monde !

  4. #4
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Deja, je ne mettrais pas en ambient, mais en diffuse, et j'utiliserais ceci: AI_MATKEY_TEXTURE( aiTextureType_DIFFUSE, 0 )
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 28
    Par défaut
    J'essaye dès que possible. Je suis victime d'une erreur de compilation. Merci à toi.

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 28
    Par défaut
    Bonjour !

    Tu as l'air de bien connaître cette bibliothèque. Je n'avais pas encore remarqué qu'on pouvait faire comme cela. Voici donc mon morceau de code modifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        // Chemin jusqu'à l'image
        aiString pathPicture = aiString("path/image.png");
     
        // Chargement de la texture
        scene->mMaterials[pMesh->mMaterialIndex]->AddProperty(&pathPicture, AI_MATKEY_TEXTURE(aiTextureType_DIFFUSE,0));
    Par contre, j'obtiens toujours la même chose (un "k" minuscule).

  7. #7
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    En fait je ne suis pas particulierement etonne aue ca ne corrige pas ton probleme.
    Ca semble refleter un probleme du cote d'Assimp...
    Et en regardant le code du fichier ObjExporter.cpp, je vois qu'effectivement ils ne mettent pas de majuscule au 'k' alors que dans la specification du format, c'est bien 'K'...

    A toi de voir ce que tu veux maintenant faire:
    • Modifie ton code pour qu'il soit case insensitive
    • Ecris ton propre exporteur (ca m'a pris une heure quand je l'ai fait, ici)
    • Modifie l'exporteur d'Assimp, pas grand chose a faire, mais il te faudra fournir ta version d'Assimp avec ton appli...
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  8. #8
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 28
    Par défaut Problème résolu
    Its OK !

    Problème de version... Sous Eclipse faire un "Search" de "map". Vous trouverez le fichier ou le programme écrit dans le .mtl. Changé "map_ka" par "map_Ka", "map_kd" par "map_Kd"...

    It's no difficult !

    Bon courage pour la suite. Je ferme cette conversation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OpenGL 2.x] Assimp : Chargement de texture map Quake fichier PK3
    Par qnop dans le forum OpenGL
    Réponses: 2
    Dernier message: 31/05/2013, 13h10
  2. Texture mapping et raytracer
    Par pouletchu dans le forum Projets
    Réponses: 8
    Dernier message: 03/06/2008, 08h57
  3. problème de texture mapped font - tuto Nehe
    Par clairouch dans le forum OpenGL
    Réponses: 1
    Dernier message: 28/06/2006, 12h02
  4. Texture mapping multiple
    Par kikoland dans le forum OpenGL
    Réponses: 2
    Dernier message: 11/04/2006, 11h50
  5. Texture Mapping
    Par EsKa68 dans le forum OpenGL
    Réponses: 1
    Dernier message: 06/04/2005, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo