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

DirectX Discussion :

Taille d'un objet


Sujet :

DirectX

  1. #1
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut Taille d'un objet
    Voilà mon problème concerne les fichiers .X et est assez étrange
    Avant j'utilisais les objets de base du SDK et tout marchait a merveille mais je me suis décidé a construire mes propres modeles ( compréhensible ) et j'ais donc trouvé un modeleur simple mais efficace et pouvant exporter en .X : DeleD... Je me suis immédiatement retrouvé face a un problème étrange : mes modèles ( et ceux fournis avec le logiciel ) apparaissaient dans le mesh viewer mais pas dans mon application... j'ais pensé a un problème de taille ( jeu de mot là ) et j'ais donc essayé d'augmenter et de réduire la taille de mon objet dans mon jeu... cela n'a donné de résultat qu'à partir de 8000000 comme facteur de mise a l'échelle et encore, on ne voyait qu'un objet très déformé... innexploitable...
    Comment peut on faire pour connaitre la taille d'un objet ( je sais que ce n'est pas très clair , c'est pour cela que j'ais fais ce roman ) ? Puisque le mesh viewer affiche tout très bien, est-ce que mon application peut aussi le faire ?

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je ne sais pas si les .x comportent un champ indiquant l'échelle du modèle, mais tu peux toujours parcourir toi-même tous les vertices de ta mesh et trouver sa taille approximative.
    Tu as D3DXComputeBoundingSphere qui peut faire ça pour toi, tu n'auras ensuite plus qu'à récupérer le rayon calculé.

    Mais ça me paraît bizarre, je ne suis pas sûr que ce soit un problème d'échelle.

  3. #3
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut
    D3DXComputeBoundingSphere me semble une bonne chose mais bizarrement, alors que j'ais des NumVertices et des dwStride différents selon les modèles, il me renvoit toujours -0.0013270393 comme rayon de la sphère
    Est-ce que quelqu'un sait avec ces deux informations comment calculer le rayon de la sphère ( on peut se passer de D3DXComputeBoundingSphere j'imagine )

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Est-ce que tu peux poster le bout de code qui utilise D3DXComputeBoundingSphere ?

  5. #5
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ( m_pLocalMesh->RestoreDeviceObjects(pd3dDevice) == S_OK )
    	{
    		DWORD dwStride = D3DXGetFVFVertexSize(m_pLocalMesh->m_pLocalMesh->GetFVF());
    		DWORD dwNumVertices = m_pLocalMesh->m_pLocalMesh->GetNumVertices();
    		D3DXComputeBoundingSphere(NULL, dwNumVertices, dwStride, NULL, &m_SphereSide);
    		return S_OK;
    	};
    PS: J'ais testé la fonction avec le paramètre un et le paramètre quatre avec des vrais valeurs ( sans NULL ) et ca ne marche pas mieux
    PS2:Quand il y a cela, le premier est un CD3DMesh du AppWizard et le deuxième un LPD3DXMESH.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_pLocalMesh->m_pLocalMesh->

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Hmm normal qu'il ne te trouve rien si tu ne lui donnes pas un pointeur sur tes vertices (1er paramètre). Enfin j'espere que ça fait partie des "vraies valeurs" que tu as essayées. Pour ce qui est du 4ème, tu peux le laisser à NULL lui vu que tu ne veux que le rayon.

  7. #7
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut
    Citation Envoyé par Loulou24
    Hmm normal qu'il ne te trouve rien si tu ne lui donnes pas un pointeur sur tes vertices (1er paramètre).
    Dans la doc ils disaient
    Pointer to first position.
    Je me suis donc dit que ca ne servait qu'à calculer le centre de la sphère et quand je dis que j'ais essayé, j'ais mis &D3DXVECTOR3(0.0f, 0.0f, 0.0f) car c'est la position de mon objet a ce moment...

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    C'est un pointeur sur le tableau de vertices de ton modèle. Parce qu'en spécifiant juste le nombre de vertices et leur taille en octet, la fonction ne peut pas savoir où aller les chercher...

    Il faut que tu verrouilles le vertex buffer de ton modèle et que tu donnes à manger à D3DXComputeBoundingSphere le pointeur récupéré.

Discussions similaires

  1. Changer la taille d'un objet dynamiquement
    Par SkwiZ dans le forum Flash
    Réponses: 0
    Dernier message: 28/04/2008, 01h41
  2. Connaitre la taille d'un objet BYTEA
    Par arnaud036 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 21/09/2007, 14h33
  3. Réponses: 1
    Dernier message: 08/06/2006, 11h30
  4. Pb pour changer la taille d'un Objet TImage dans une Form
    Par Gouyon dans le forum C++Builder
    Réponses: 10
    Dernier message: 06/06/2006, 18h01
  5. Taille d'un objet en mémoire
    Par dr23fr dans le forum Général Java
    Réponses: 1
    Dernier message: 23/05/2006, 11h39

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