RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Gestion des matrices

Forum : DIRECTX
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ DIRECTX

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM DIRECTX

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
arnolpourri
Nouveau membre
Inscrit : 27/03/2008
Messages : 1
Message
#151211
Posté le 27/03/08 à 09:55
Bonjour a tous,

Voila je suis débutant en directx, je travaille sous VB 2008 en C#, et malgrès les exemples que j'ai trouvé sur le net, j'ai énormément de mal à créer un environnement 3D assez simple, dans lequel on peut se déplacer, tourner autour des objets, etc...

Malgrès mes difficultés, j'ai quand même réussi a mettre en place un petit truc , mes déplacements fonctionnent, bouger la souris permet une visualisation des angles. Je suis capable d'afficher des rectangles, des droites, des meshs...

Mon application affiche à ce jour le repère x,y,z de mon graphe, et un mesh en forme de cube...

Cependant quelques problèmes dont le plus important:

l'utilisation des matrices : comment les utiliser exactement?

Il s'avère que j'en utilise dans le render pour la rotation du monde lors de déplacement, mais aussi pour la rotation des meshs, lors de la creation des meshs dans une fonction utilisée elle aussi dans le render, etc...Du coup je me doute forcement que la transformation du monde par les matrices à tors et a travers ne peux pas faire marcher le prog...

donc une question simple : comment utiliser les matrices intelligemment, pour que l'ensemble du monde fonctionne ?

voici quelques bout de mon code qui pourra surement vous aider un peu plus pour la compréhension

en tout cas je vous remercie d'avance, a plus


public void DessinerMesh3D2() { Mesh meme = Mesh.Box(this.dev, 1f * this.IndiceDeZoom, 1f * this.IndiceDeZoom, 1f * this.IndiceDeZoom);// on crée un mesh qui correspondra a une shere Material mat = new Material();// on crée un matérial qui correspondra à ce qui va recouvrir la sphère Graphe monGraphe = env.getGraphe(); //dessin de points for (int i = 0; i < monGraphe.size(); i++) { GNode n = monGraphe.getNode(i); this.dev.Transform.World = Matrix.Multiply(Matrix.Translation((float)(n.getX() * this.IndiceDeZoom), (float)(0 + this.y), (float)(n.getY() * this.IndiceDeZoom + this.z)), Matrix.RotationY(this.AngleX)); mat.Ambient = Color.Beige; //on affecte au material qui va recouviri la sphere la couleur de la boules concernée mat.Diffuse = Color.Beige;// pareil pour la couleur diffuse this.dev.Material = mat; meme.DrawSubset(0);//on indique que l'on dessine le mesh voir le tutorial 6 du SDK pour de plus ample indication sur l'index } } public void Render() { // On commence par tout vider et mettre du bleu en fond. this.dev.Clear(ClearFlags.Target, Color.Blue, 1.0f, 0); this.dev.BeginScene(); this.dev.SetStreamSource(0, this.vbuf, 0); this.dev.VertexFormat = CustomVertex.PositionColored.Format; // On créé une matrice pour le 1er triangle, // et on applique la transformation à cette matrice. Matrix matrixRotationX = Matrix.Identity; matrixRotationX = Matrix.RotationX(this.AngleY); Matrix matrixRotationY = Matrix.Identity; matrixRotationY = Matrix.RotationY(this.AngleX); Matrix matrixRotation = Matrix.Identity; matrixRotation = Matrix.Multiply(matrixRotationX, matrixRotationY); Matrix matrixTranslation = Matrix.Identity; matrixTranslation = Matrix.Translation(new Vector3(this.X * this.IndiceDeZoom, this.Y * this.IndiceDeZoom, this.Z * this.IndiceDeZoom)); // On dessine le triangle 1 qui commence au vertexe 0. //this.dev.DrawPrimitives(PrimitiveType.TriangleList, 0, 1); //this.dev.DrawPrimitives(PrimitiveType.TriangleList, 3, 1); this.dev.DrawPrimitives(PrimitiveType.LineList, 7, 3); //this.dev.DrawPrimitives(PrimitiveType.LineStrip, 13, 2); // On applique la matrice de rotation à notre monde. this.dev.Transform.World = Matrix.Multiply(matrixTranslation, matrixRotation); DessinerMesh3D2(); AjustementVue(); this.dev.EndScene(); // Fin de la définition this.dev.Present(); // Lancer l'affichage } public void AjustementVue() { // On précise comment est-ce que la caméra (la matrice View) regarde la scène : this.dev.Transform.View = Matrix.LookAtLH( new Vector3(0f, 0f, -4f), // position de la caméra. new Vector3(0f, 0f, 0f), // la direction du regard (l'origine où est centré le rectangle). new Vector3(0f, 1f, 0f)); // le vecteur directeur du regard (en face de soi) // Enfin, on applique une perspective à tout ca pour avoir notre rendu 2D : this.dev.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, 1.0F, 1.0F, 1000.0F); }

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 


    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.