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 :

Réglage de la vue


Sujet :

DirectX

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2011
    Messages : 107
    Points : 66
    Points
    66
    Par défaut Réglage de la vue
    Bonjour,

    Je souhaite utiliser l'instance "world" de type Matrix pour régler la vue globale. J'utilise sharpdx.

    J'ai trouver des réponses en directX9, mais le code à changé avec direct11.

    Voici le Rendu:
    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
     
    public void Render(Form1 form)
            {
                if (graphic == null)
                    return;
                // Caméra
                float _alpha = (float)(alpha* (Math.PI / 180));
                float _beta = (float)(beta* (Math.PI / 180));
                float xO = (float)(rayonSphere * Math.Cos(beta) * Math.Cos(_alpha));
                float yO = (float)(rayonSphere * Math.Cos(beta) * Math.Sin(_alpha));
                float zO = (float)(rayonSphere * Math.Sin(_beta));
                Matrix view = Matrix.LookAtRH(new Vector3((float)(xCentre + xO), (float)(yCentre + yO), (float)(zCentre + zO)), new Vector3(xCentre, yCentre, zCentre), new Vector3((float)(-Math.Cos(_alpha)), (float)(-Math.Sin(_alpha)), 0.0f));
                Matrix world = projection * view;
                // Réglage de la vue avec world?
    	    ????
     
                // Dessin
                graphic.BeginDraw();
                graphic.Clear(SharpDX.Color.Black);
                graphic.EndDraw();
                swapChain.Present(0, PresentFlags.None);
            }
    J'ai déclarer mon device ainsi:

    public SharpDX.Direct3D11.Device device = null;

    et "projection" est une instance de type Matrix définie en amont dans mon code.

    Comment utiliser la matrice world?

    Merci de votre aide.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    février 2006
    Messages
    2 317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2006
    Messages : 2 317
    Points : 4 481
    Points
    4 481
    Par défaut
    bonjour,

    les 3 types de matrices utilisées en général en programmation 3D (si on peut dire "type", parce que ça serait plutôt quelles usages) sont :
    - la matrice de projection, qui consiste en la projection plane de la scène 3D, donc à partir d'une scène 3D on obtient une "scène 2D" ;
    - la matrice de vue, en gros c'est la position et l'orientation de la caméra dans la scène 3D ;
    - la matrice monde, ou plutôt les matrices, qui permettent de placer chacun des objets les uns par rapport aux autres dans une scène 3D.

    bref pour en revenir à ta question, je ne comprends pas ce que tu veux dire quand tu veux "utiliser" la matrice monde.

    ensuite je vois ça dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Matrix world = projection * view;
    je ne sais pas ce que tu comptes en faire, mais ça ne risque pas de te servir à grand chose.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2011
    Messages : 107
    Points : 66
    Points
    66
    Par défaut
    Oui, en effet, je me suis trompé en multipliant les matrices. Sinon, ce que je voulais dire, c'est comment exploiter ces matrices pour le rendu de la scène, mais

    j'ai compris qu'il fallait utiliser le type BasicEffect pour les exploiter sur internet, j'ai donc modifié mon code comme suit dans le Render*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Matrix projection=Matrix.PerspectiveFovRH(demiAngleOuverture, ratioLargeurSurHauteur, distanceFront, distanceBack);           
    Matrix view = Matrix.LookAtRH(new Vector3((float)(xCentre + xO), (float)(yCentre + yO), (float)(zCentre + zO)), new Vector3(xCentre, yCentre, zCentre), new Vector3((float)(-Math.Cos(_alpha)), (float)(-Math.Sin(_alpha)), 0.0f));            
     
    BasicEffect basicEffect = new BasicEffect(graphics.GraphicsDevc);
    basicEffect.World = Matrix.Identity;
    basicEffect.View = view;
    basicEffect.Projection = projection;
    Par contre, je ne sais pas comment trouver l'argument dans "new BasicEffect(...)", ni comment utiliser l'instance basicEffect pour la suite...

    Si vous avez une idée ?

    Voici le code complet:

Discussions similaires

  1. Développement de plug-in -> vue graphique!
    Par yassine_23 dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 01/04/2003, 19h04
  2. question (peut-être idiote) sur les vues
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/03/2003, 11h35
  3. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 21h22
  4. [Crystal Report] Utilisation des vues de sql serveur
    Par Olivierakadev dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/11/2002, 18h44
  5. compression de données du point de vue algorithmique
    Par GoldenEye dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 26/06/2002, 16h51

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