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 :

Affichage de texte en 3D


Sujet :

DirectX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 23
    Points
    23
    Par défaut Affichage de texte en 3D
    Bonjour,

    J'ai une application 3D représentant un terrain et je souhaiterais afficher des messages en 3D dans un coin de l'écran. Pour écrire des messages en 3D je n'ai pas de souci, en fonction de la valeur du EyePoint de ma caméra et de constante je modifie la taille de mes caractères ce qui permet de donner l'illusion pour l'utilisateur qu'ils ont toujours la même taille.

    J'affiche mes différents messages en 3D comme si ils étaient posés sur des marches d'escalier, du coup le message le plus haut, et donc le plus éloigné de ma caméra est le plus petit.

    Mais avec ma projection parallèle mes messages, que j'ai mis dans le coin haut gauche, ne sont plus aligné correctement les uns au dessus des autres.

    Je voudrais savoir si je peux créer une fenétre directx transparente, que j'afficherais dans ma fenètre principale, et dans laquelle j'afficherais mon texte 3D.

    Cette fenètre aurais sa propre caméra et ainsi mes messages seraient correctement plaçés les uns au dessus des autres.

    merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    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 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Salut peux-tu être plus précis ?
    le texte 3d c'est un mesh 3d avec des polygones ou bien c'est du texte 2d affiché avec D3DXFONT ?

    Citation Envoyé par hohenheim37 Voir le message
    Je voudrais savoir si je peux créer une fenétre directx transparente, que j'afficherais dans ma fenètre principale, et dans laquelle j'afficherais mon texte 3D.
    je crois que ce n'est pas possible ; la fenêtre de rendu pour D3d est unique

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Points : 968
    Points
    968
    Par défaut
    Il n'y a pas besoin d'avoir une autre fenêtre avec sa propre camera, il te suffit de changer la matrice de projection avant de dessiner ton texte. A moins que j'aie mal compris le problème.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Il me semble que au final j'ai fait comme math_lab disait, dans le callback OnFrameRender j'ai rajouté le code suivant :

    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
     
    pd3dDevice->SetRenderState( D3DRS_ZENABLE, FALSE);	
     
    D3DXVECTOR3 vEyePt( 0.0f, 125.0f,0.0f );
    D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
    D3DXVECTOR3 vUpVec( 0.0f, 0.0f, 1.0f );
    D3DXMATRIXA16 matView;
    D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
     
    pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
     
    D3DXMATRIXA16 matProj;
    D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI / 4, 1.0f, 1.0f, 100.0f );
    pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
     
    const D3DXVECTOR3 *CamEye = new D3DXVECTOR3() ;
     
    CamEye = g_Camera.GetEyePt();
     
    TextSize( pOuMat,2.f,2.f,2.f);
     
    TextRota(pOuMat,-90.0f,0.f,0.f);
     
    TextSetMove( pOuMat,0.f,25.f,0.f);
     
    pd3dDevice->SetTransform(D3DTS_WORLD,pOuMat);
     
    g_pMesh3DText->DrawSubset( 0 );
    Mon texte, que je crée avec la fonctionD3DXCreateText suit maintenant les mouvements de ma caméra.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Les captures d'écrans en pièce jointe décrivent mon problêmes, les 2 premières montrent ce que j'arrive a avoir, on voit bien sur la 2° mes soucis avec la projection parallèle. Le texte est décalé alors que je souhaiterais qu'il soient les uns au dessus de l'autre comme sur la 3° capture qui est en réalité un montage réalisé avec la 1° capture.

    Nom : 110117_mes_captures.png
Affichages : 44
Taille : 205,7 Ko

    Il faut surement que je modifie les matrices de vue et de projection que je crée pour mon texte 3D mais je ne sais pas comment faire. J'ai essayé la fonction D3DXMatrixTranslation mais je ne retrouve plus mon texte à l'écran du coup.

  6. #6
    Expert confirmé

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

    Informations forums :
    Inscription : Février 2006
    Messages : 2 382
    Points : 4 936
    Points
    4 936
    Par défaut
    pourquoi utilises tu une matrice perspective pour la projection du texte? (cf 2 posts au dessus)

    D3DXMatrixOrthoLH permet d'avoir une projection parallèle.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Je ne peux pas travailler avec une matrice orthogonale car cette derniére ne représentera pas l'éloignement des mes objets.

    Mes différents messages sont placés sur une sorte d'escalier, ils ont la même coordonnées en X mais différentes en Y et Z.

    Le message du bas est moins éloigné que le message du haut.

  8. #8
    Expert confirmé

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

    Informations forums :
    Inscription : Février 2006
    Messages : 2 382
    Points : 4 936
    Points
    4 936
    Par défaut
    je croyais que pour ça tu modifiais la taille de tes caractères?

    edit: j'arrive pas à comprendre ce que tu veux en fait, ta capture n'est pas assez explicite

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Non, mes 4 messages ont tous la même taille.

    Est ce que la fonction "D3DXMatrixPerspectiveOffCenterLGH()" pourrait m'aider ?

    Edit : je veux mettre mes message sur la droite et qu'il soit aligné les uns au dessus des autres sans que la projection parallèle ne déforme, les textes ne doivent pas être décalé les uns par rapport aux autres.

Discussions similaires

  1. Réponses: 10
    Dernier message: 08/06/2009, 11h30
  2. Affichage de texte
    Par Yellowmat dans le forum OpenGL
    Réponses: 2
    Dernier message: 15/12/2004, 12h25
  3. [C#] Affichage de texte vertical...
    Par AntiSAL dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/06/2004, 14h46
  4. Affichage de texte est mise à jour de l'écran
    Par Galdor_sp dans le forum OpenGL
    Réponses: 3
    Dernier message: 14/03/2004, 22h31
  5. [MX 2004] Affichage du texte dynamique
    Par caramel dans le forum Flash
    Réponses: 8
    Dernier message: 29/01/2004, 16h07

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