Creation d'un repere 3D

Résolu
survcopt
Messages postés
224
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
13 mai 2022
- 19 nov. 2008 à 11:37
survcopt
Messages postés
224
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
13 mai 2022
- 19 nov. 2008 à 14:25
Salut,
Je cherche à créer un repère avec 3 axes à 90° (pour représenter l'espace sur 3axes) et sur chaque axes avoir une flèche qui simule les efforts sur chacun de ces axes, avec un visu à 45° (iso 3D).
A l'origine du repère je voudrais mettre une sphère .
Actuellement je suis parti sur directx , j'ai crée ma fenêtre et mes axes et ma sphére

        private Mesh Sphere;
        private Mesh axeXP;
...
            Sphere = Mesh.Sphere( device, 5.0f, 10, 10 );
            Mesh tempMesh = Sphere.Clone( Sphere.Options.Value, Vertex.FVF_Flags, device );
            Vertex[] vertData = (Vertex[]) tempMesh.VertexBuffer.Lock( 0, typeof(Vertex),LockFlags.None,tempMesh.NumberVertices );            for( int i 0; i < vertData.Length; ++i ) vertData[i].color Color.Yellow.ToArgb();
            tempMesh.VertexBuffer.Unlock();
            Sphere.Dispose();
            Sphere = tempMesh;

            axeXP = Mesh.Cylinder(device, 0.2f, 0.2f, 100f, 10, 1);
            tempMesh = axeXP.Clone(axeXP.Options.Value, Vertex.FVF_Flags, device);
            vertData = (Vertex[]) tempMesh.VertexBuffer.Lock( 0, typeof(Vertex),LockFlags.None,tempMesh.NumberVertices );            for( int i 0; i < vertData.Length; ++i ) vertData[i].color Color.Blue.ToArgb();
            tempMesh.VertexBuffer.Unlock();
            axeXP.Dispose();
            axeXP = tempMesh;

pareil pour l'axe Y et Z
et dans la routine Render j'affiche mes meshs

            Sphere.DrawSubset(0);
            axeXP.DrawSubset(0);
            d3dDevice.Transform.World = Matrix.RotationX(90); 
            axeYP.DrawSubset(0);
            d3dDevice.Transform.World = Matrix.RotationY(90);
            axeZP.DrawSubset(0);
Mais la  ça ne marche pas bien l'axe X n'apparait que lorsque je rafraichis la fenêtre en modifiant la taille avec la souris et mes axes ne partent pas du centre de mon repère.
Merci pour votre aide

www.survey-copter.com

3 réponses

survcopt
Messages postés
224
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
13 mai 2022
1
19 nov. 2008 à 14:25
3
survcopt
Messages postés
224
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
13 mai 2022
1
19 nov. 2008 à 11:47
J'ai résolu l'affichage de l'axe X en ajoutant
d3dDevice.Transform.World = Matrix.RotationX(0);

www.survey-copter.com
0
survcopt
Messages postés
224
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
13 mai 2022
1
19 nov. 2008 à 13:26
Apparement mes axes ne sont pas à 90° les uns des autres
pourquoi ?
0