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

Python Discussion :

Impossible d'ouvrir un fichier format .obj


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 9
    Par défaut Impossible d'ouvrir un fichier format .obj
    Bonsoir.

    J'ai téléchargé et installé pywavefront afin de pouvoir ouvrir des fichiers au format .obj avec Python.

    J'ai mis le bon PATH dans Spyder, j'ai mis ce que j'ai téléchargé du répertoire site-packages de Python vers le répertoire pkgs de Spyder, j'ai fait l'installation de pywavefront avec python-m pip install pywavefront dans l'invite de commande, et j'ai juste écrit dans un nouveau fichier sur Spyder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import pywavefront
    scene=pywavefront.Wavefront("nom du fichier.obj")
    J'ai pris soin de mettre le chemin complet du fichier (avec un r devant pour changer le sens des slashs) et pas simplement son nom, de mettre l'obj et mon code dans le même répertoire et de taper os.listdir() dans le shell pour m'assurer encore une fois que le fichier obj est bien dans le répertoire courant.

    Et le résultat est :
    [Errno2] No such file or directory : 'C.:\\Users\\...\\Nom du fichier.mtl'
    Je ne comprends pas et je ne vois pas pourquoi il dit ne pas trouver un fichier mtl alors que je veux ouvrir un fichier obj. Pywavefront sait traiter les 2 normalement mais je ne comprends pas la confusion ici.

    Sur Pyzo c'est pareil.
    Sur l'IDLE par contre, j'ai la même erreur mais c'est bien le fichier obj qui est cité dans le no such file or directory.

    J'ai essayé avec différents obj qui viennent de différentes sources pour être sûr que ce n'est pas une question d'obj corrompu.
    Avec l'un de fichiers j'obtiens la même erreur dans l'IDLE mais dans Spyder pas d'erreur. Cependant rien ne se passe et le shell passe à la ligne suivante après avoir affiché runfile etc... Donc là ça semble déjà plus positif mais je ne sais pas pourquoi rien ne s'affiche. Ils disent sur pypi que le seul pré-requis est d'avoir pyglet et je l'ai.

    Je vous remercie d'avance pour vos analyses et conseils.

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je ne connais pas "pywavefront", mais l'adresse du fichier mentionnée dans le message d'erreur comporte une anomalie: le point entre le "C" et le ":".

    Par ailleurs, le r devant les guillemets n'inverse pas le sens des anti-slash, mais empêche Python d'interpréter l'anti-slash quand il lit une chaîne de caractères du code source. Par exemple, r"\n" représente bien les 2 caractères "\" et "n". Ce n'est pas le cas de "\n" qui est traduit par le caractère de passage à la ligne. Autre solution pour que l'anti-slash ne soit pas interprété sans le r devant: doubler les anti-slash comme dans 'C:\\Users\\...\\Nom du fichier.mtl'.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 9
    Par défaut
    Veuillez m'excuser, le point en trop est dû à une frappe involontaire lorsque j'ai écrit mon message.

    Les problèmes seraient-ils dûs au fait que les fichiers au format .obj soient trop volumineux (40 000 à 60 000 lignes...)? Ou encore que les données ''vertices'' qui représentent les sommets de l'objet ont leurs valeurs x, y et z uniquement séparées par un espace et pas par une virgule et que ça peut causer un problème de lecture de fichier ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Citation Envoyé par MSL12 Voir le message
    Je ne comprends pas et je ne vois pas pourquoi il dit ne pas trouver un fichier mtl alors que je veux ouvrir un fichier obj. Pywavefront sait traiter les 2 normalement mais je ne comprends pas la confusion ici.
    Peut être qu'un fichier MTL doit être associé à un fichier OBJ?

    Côte Python, remplacez l'appel à pywavefront.Wavefront par un simple open s'il trouve le fichier, c'est que le soucis est dans l'utilisation de Wavefront et que l'aide sera à chercher dans un forum d'utilisateurs de cette bibliothèque (ou dans du temps passé à comprendre comment elle fonctionne).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 9
    Par défaut
    Voilà j'ai fait un simple open et j'obtiens le résultat suivant :

    <_io.TextIOWrapper name='Test2.obj' mode='w' encoding='cp1252'>
    Quelqu'un peut m'expliquer ce que ça signifie ?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Citation Envoyé par MSL12 Voir le message
    Quelqu'un peut m'expliquer ce que ça signifie ?
    Ca signifie que le fichier a été ouvert (donc trouvé) et qu'il va falloir passer du temps à apprendre à utiliser Wavefront (si vous avez besoin de vous en servir...)

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 226
    Par défaut
    hello,
    je ne suis pas spécialiste de wavefront mais ton problème est peut être dû au fait que ton fichier .obj fait référence à un fichier mtl qui n'est pas présent :

    The Wavefront Material Template Library (MTL) file is a companion file for one or more Wavefront OBJ files. Like the OBJ format, the MTL format was used and documented by Wavefront Technologies in the 1990s in association with its Advanced Visualizer software. The ASCII-based MTL file describes surface appearance properties to be applied to polygonal facets or freeform curved patches defined in an OBJ file. The MTL file is a "library" that can contain one or more named material definitions, each of which can specify color, texture, and reflection characteristics. For example, the definition for a material might specify RGB values for the material's diffuse, ambient, and specular reflectivity, along with other characteristics such as index of refraction and transparency. An OBJ file refers to the MTL file in an mtllib declaration and definitions for objects (polygonal or freeform) within the OBJ file can refer to a particular named material definition with a usemtl statement.
    An MTL file contains a sequence of material definitions, each beginning with the keyword newmtl and a name for the material.
    Ami calmant, J.P

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/04/2016, 14h28
  2. Réponses: 20
    Dernier message: 27/01/2016, 18h24
  3. Réponses: 1
    Dernier message: 10/01/2014, 14h59
  4. Réponses: 1
    Dernier message: 10/12/2010, 18h49
  5. IE : impossible d'ouvrir un fichier
    Par alexixlebaulois dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 23/12/2005, 11h08

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