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

Développement 2D, 3D et Jeux Discussion :

limites de la librairie lib3ds


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut limites de la librairie lib3ds
    Bonjour,

    Je manipule une structure 3D perso, où je peux charger par exemple des modeles issus de fichiers .3ds grace a la lib3ds, et ecrire un nouveau fichier .3ds grace à la même librairie.
    Je voulais savoir si vous étiez au courant d'une limite concernant le nombre maxi de points par mesh. Je m'explique : dans mesh.c à la fonction point_array_write, on trouve la ligne de code suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ASSERT(mesh->points<0x10000);
    ce qui signifie qu'on ne peut pas ecrire un fichier .3ds valide si un des meshs du modele contient plus de 10000 sommets! Ca me parait bizarre etant donné que la même lib arrive à charger le modele (1 mesh de 22000 faces pour 64000 sommets)

    Quelqu'un est-il au courant d'un "workaround" pour ce probleme ?

    merci

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Totem, le format 3ds est un format "vieillissant" d'ailleurs sur la page de lib3ds on fait référence à 3d studio 3,4 des programmes qui tournaient jadis sous ms-dos.
    Maintenant c'est 3ds Max avec le format MAX qui permet de manipuler des meshes plus complexes.
    Donc le format 3ds se limite à des objets 3d assez simples avec un Level Of Detail faible..

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    oui merci vu le code C je vois bien que c'est pas un truc tout jeune

    donc... pas de solution c'est ça ?

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Essayer de changer le "assert" avec une valeur plus élevée

  5. #5
    Invité
    Invité(e)
    Par défaut
    Euh, je voudrais pas être méchant, mais 0x10000, c'est pas 10000... 0x<num> en C, c'est une notation pour une contante en hexa... donc, ça fait plutôt 16^5 (1048576) ce qui est plutôt raisonnable...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par bibi.skuk Voir le message
    Euh, je voudrais pas être méchant, mais 0x10000, c'est pas 10000... 0x<num> en C, c'est une notation pour une contante en hexa... donc, ça fait plutôt 16^5 (1048576) ce qui est plutôt raisonnable...


    bien vu (edit: meme si c'est 16^4)

    Donc voilà une limite de la lib3ds : on peut pas avoir plus de 65534 sommets par mesh.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Et mince, je me suis encore fait avoir par un truc qui commence à zero ou à 1... désolé.

    Autant, ça avait l'air raisonnable, autant là, ça commence à faire peu... mais ça reste utilisable.

    Tu peux essayer de le commenter, mais tu vas peut-être avoir des problemes derriere avec un short qui traine dans un coin pour le stockage...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    C'est exactement ça : les indices des vertex sont stockes dans des short, donc le probleme s'arrete là. J'en ai parlé sur la mailing list du developpement de la lib, et apparemment ça pourrait venir même du format 3ds lui-même, pas que de la librairie

  9. #9
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par totem Voir le message
    C'est exactement ça : les indices des vertex sont stockes dans des short, donc le probleme s'arrete là. J'en ai parlé sur la mailing list du developpement de la lib, et apparemment ça pourrait venir même du format 3ds lui-même, pas que de la librairie
    Ce document (d'autodesk) semble dire le contraire.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  10. #10
    screetch
    Invité(e)
    Par défaut
    ce document dit que le nombre de vertex et de faces est stocké sur un short.

  11. #11
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par screetch Voir le message
    ce document dit que le nombre de vertex et de faces est stocké sur un short.
    Je me suis laissé abuser par la vétuseté du document, qui dit que le nombre de vertex dans un objet est stocké sur un unsigned int de 2 bytes... hum (idem pour le nombre de poly par objet).

    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/12/2002, 22h23
  2. [GTK]PB Librairie GTK+ sous dev-c++
    Par wozzy dans le forum Dev-C++
    Réponses: 15
    Dernier message: 05/11/2002, 14h55
  3. Comment limiter les mouvements du curseur??
    Par scorpiwolf dans le forum C++Builder
    Réponses: 9
    Dernier message: 07/07/2002, 22h09
  4. [Comparatifs] Limites nombres tables et quantité de données
    Par benj63 dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 13/06/2002, 21h31
  5. compatibilité des librairies directX8
    Par Freakazoid dans le forum DirectX
    Réponses: 3
    Dernier message: 23/05/2002, 21h33

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