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 :

Coexistence de mesh 3D et de linelist


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Par défaut Coexistence de mesh 3D et de linelist
    Bonjour,



    Voila je me suis rendu compte d'un petit problème dont voici le contexte :
    petit oubli : je travaille en C# sous VS2008

    J'affiche 3 droites qui correspond a mon repere, placé de 0f à 30f sur chaque axe. Celles-ci sont immobiles normalement. Cela me permet notamment de me déplacer et de comprendre ou je place mes objets...

    Je veux ensuite afficher 3 cubes de couleurs différentes a différentes coordonnées. J'utilise donc les meshs qui sont assez pratiques. Cependant les contructeur de meshs ne permettent pas de placer des objets à des coordonnées spécifiques (enfin je ne crois pas, j'ai cherché dans la doc, j'ai pas trouver de fonction qui correspondrait). Donc pour placer un objet à une coordonnée différente de (0,0,0), il faudrait d'abord exécuter une translation de matrice pour se placer au bonne coordonnées, puis placer l'objet, et revenir au coordonnées (0,0,0)
    Ceci fonctionne chez moi, ce n'est peut etre pas la stratégie la plus facile, ni la plus facile a comprendre, mais c'est celle que j'utilise...

    Probleme: le fait que je fasse des transform.world pour placer mes meshs influent sur les dessin de mes axes, qui ne sont plus placés au bonnes coordonnées

    En conséquence, je cherche une solution me permetant de soit :

    - placer des meshs à des coordonnées spécifiques sans executer de transform.world, une autre stratégie quoi :s

    - eviter a mes droites d'etre déplacée lorsque j'effectue des transform.world...

    Voila j'espere que certain d'entre vous pourront m'aider, j'ai l'impression d'etre pres de la solution, mais de ne pas pouvoir la toucher lol, je vous remercie en tout cas de vous interesser a mon cas

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Par défaut
    Bonjour,

    bon ben je n'ai toujours pas avancé sur ce point, donc je vais reformuler ma question et j'espere ensuite debattre avec vous sur le meilleur moyen de résoudre mon problème...

    Comment faites vous pour placer des meshs 3D à des coordonnées précises du monde 3D ?

    merci pour vos réponses...a bientot j'espere

  3. #3
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 537
    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 537
    Par défaut
    J'ai le SDK de Direct X Managed sous les yeux et effectivement on ne peut pas gérer la position d'une classe mesh

    Regarde l'exemple EnhancedMesh du SDK \Samples\Managed\Direct3d on charge l'objet Dwarf.x et on effectue des transformations de la même manière dont tu parles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    path = Utility.FindMediaFile("dwarf\\dwarf.x");
     
                // Change the current directory to the mesh's directory so we can
                // find the textures.
                string currentFolder = System.IO.Directory.GetCurrentDirectory();
                System.IO.FileInfo info = new System.IO.FileInfo(path);
                System.IO.Directory.SetCurrentDirectory(info.Directory.FullName);
     
                systemMemoryMesh = Mesh.FromFile(path, MeshFlags.SystemMemory,
                    e.Device, out adjacencyBuffer, out materials);
     
                // Find the mesh's center, then generate a centering matrix
                using(VertexBuffer vb = systemMemoryMesh.VertexBuffer)
                {
                    using (GraphicsStream stm = vb.Lock(0, 0, LockFlags.NoSystemLock))
                    {
                        try
                        {
                            objectRadius = Geometry.ComputeBoundingSphere(stm,
                                systemMemoryMesh.NumberVertices, systemMemoryMesh.VertexFormat, out objectCenter);
     
                            worldCenter = Matrix.Translation(-objectCenter);
                        }
                        finally
                        {
                            vb.Unlock();
                        }
                    }
                }

    LeGreg n'a-pas une idée ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Par défaut up up !!!
    bonjour,

    bon ben je n'ai malheureusement moi non plus aucune solution à ce problème, je suis toujours en train de chercher, c'est un des seuls point ou je n'ai pas avancé depuis la semaine derniere...

    Si jamais une idée lumineuse vous vient à l'esprit, je serais heureux de la tenter...

    Merci a vous, a bientot

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    Ben....

    Tu fais un transform.world pour tes mesh...............
    et un autre transform.world pour tes droites...................

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 87
    Par défaut ALLELOUIAH MES FRERES:D
    Ca y est !!! ça marche !!!

    Je n'avais pas bien saisis le fonctionnement du transform.world !!! Je pensais que celui-ci faisait des translations de valeur x, y et z, alors qu'il place le nouveau repere au point x,y,z !!!

    Ok c'est vrai je suis pas fort, mais quelle satisfaction de voir quelque chose marcher ^^ Apres avoir passé une batterie de 348 tests, de la sueur et des larmes (lol), j'ai enfin un prog qui fonctionne plutot pas mal, je suis content, et mon prof me tapera pas sur les doigts (lol) !!

    ps: par contre, si c'est pas ça, j'ai bien l'air de rien lol, mais bon peu importe, ça fonctionne !!!!

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

Discussions similaires

  1. Meshes clignotantes ! (2)
    Par Francky033 dans le forum DirectX
    Réponses: 11
    Dernier message: 17/08/2003, 01h38
  2. Un autre débutant ... désoler - Les mesh
    Par oxor3 dans le forum DirectX
    Réponses: 4
    Dernier message: 15/08/2003, 18h41
  3. Meshes clignotantes !
    Par Francky033 dans le forum DirectX
    Réponses: 3
    Dernier message: 30/07/2003, 15h19
  4. Gestion mémoire des Meshes (LPD3DXMESH)
    Par [Hideki] dans le forum DirectX
    Réponses: 1
    Dernier message: 08/07/2003, 20h34
  5. Mesh & Light
    Par MAx44 dans le forum DirectX
    Réponses: 4
    Dernier message: 27/04/2003, 11h11

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