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 :

[Débutant] Objet découpé et perspective


Sujet :

DirectX

  1. #1
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut [Débutant] Objet découpé et perspective
    Salut à tous

    Je suis nouveau sur ce forum (c'est plus Delphi pour moi ) et je programme actuellement un viewer de .stl...
    J'ai des petits soucis:
    Je crée mon objet et je place ma caméra...

    - Mon objet est comme coupé par un plan invisible parallèle au plan de l'écran. Comme 3DS MAx quand on s'approche trop d'un objet... Je veux bien qu'un effet pareil se produise mais pas si loin ... Comment modifier ça?
    - La perspective de ma vue est un peu trop accentuée et je voudrais la réduire. Comment dois-je faire?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    - Mon objet est comme coupé par un plan invisible parallèle au plan de l'écran. Comme 3DS MAx quand on s'approche trop d'un objet... Je veux bien qu'un effet pareil se produise mais pas si loin ... Comment modifier ça?
    L'un des plans de clipping est défini trop proche / loin. Soit le "near plane", soit le "far plane". Il suffit de choisir des valeurs plus adaptées lorsque tu initialises ta matrice de projection.

    - La perspective de ma vue est un peu trop accentuée et je voudrais la réduire. Comment dois-je faire?
    Essaye de jouer sur la valeur du champ de vision (FOV), toujours lorsque tu définis ta matrice de projection.

  3. #3
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Merci pour ta réponse
    Citation Envoyé par Loulou24
    Essaye de jouer sur la valeur du champ de vision (FOV), toujours lorsque tu définis ta matrice de projection.
    Je n'utilise pas ça... A moins que je ne le sache pas...
    J'utilise des composants qui encapsulent DirectX sous Delphi qui S'appellent DelphiX... Je place juste ma camera avec SetPosition() et l'orientation de ma caméra avec SetOrientation... Mais je ne vois pas de matrice de projection...

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ah, c'est embêtant ça. Il n'y a pas dans DelphiX des fonctionnalités plus proches de l'API, genre un Device.SetTransform ?

  5. #5
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Ah si effectivement, il doit y avoir ça... Pourquoi comment je fais avec ça?
    Excuse-moi, je viens à peine d'afficher des faces depuis hier ... Je suis très débutant...

    J'ai de plus un problème avec mes normales parce que à cause d'un bug de DelphiX, je ne peux pas assigner une normale à une ID3DRMFace...
    J'utilise AddFace de IDirect3DRMMeshBuilder. Est-ce que dans ce cas-là, il ajoute automatiquement les faces et vertices des faces ajoutés dans ce MeshBuilder?
    Note: DelphiX est en fait la traduction (très moyenne d'ailleurs ) de l'API DirectX en Delphi...

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Up!
    Vraiment personne ne peut m'aider?
    Que dois-je faire avec ce Device.SetTransform?

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Essaye déjà de lire la doc du SDK et les tutos de base sur Dx, ça doit être assez ressemblant avec DelphiX.

  8. #8
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Bon ben je vais voir alors... Le seul problème c'est que je ne sais pas vraiment ce que je cherche... Je vais essayer de voir du coté de SetTransform...

    Merci

  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je peux t'aider à clarifier un peu les choses

    Ce que tu veux, c'est modifier ta matrice de projection pour jouer sur le champ de vision et la profondeur. Pour faire ça, il te faut construire ta matrice correctement puis l'envoyer à DirectX via SetTransform. Donc t'as en fait deux missions là : initialiser ta matrice de projection (fonction D3DXMatrixPerspectiveFovLH en C++), et l'envoyer a l'API.

    Que la force soit avec toi 8)

  10. #10
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Citation Envoyé par Loulou24
    Que la force soit avec toi 8)
    Oui mon maître

    Mais je ne suis pas encore prêt pour les épreuves...
    Je vais essayer de voir D3DXMatrixPerspectiveFovLH....

    Merci

  11. #11
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    j'ai trouvé des fonctions qui s'appellent SetFront, SetBack... La doc DirectX me dit que ce sont des fonctions qui configure les plans de clipping... Donc c'est ce que je charchais... Mais je n'arrive pas à trouver des paramètres corrects...

    Par contre, je garde le même problème avec ma perspective déformée...

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    SetFront et SetBack ont l'air inconnues au bataillon dans la version C++ de Dx, je ne peux pas t'en dire plus.

    Pour la perspective, as-tu changé le FOV ?

  13. #13
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut

    Je ne trouve pas de fonctions correspondantes pour le FOV...
    Pour SetFront et SetBack, regarde sur le SDK, dans IDirect3DViewport (ou un truc comme ça) C'est là que je l'ai trouvé...

  14. #14
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    OK
    Après quelques recherches et tests, j'en ai conclu les choses suivantes:
    - SetFront: définit la distance entre la caméra et le Front Plane
    - SetBack: définit la distance entre la caméra et le BackPlane
    - SetField : définit la demi-hauteur de l'ouverture (FOV= Field Of View)

    Par contre, je n'arrive pas à les paramétrer correctement... J'ai toujours une perspective trop forte ou pas assez mais jamais comme il faut...

    Sur mon viewer je peux m'éloigner et me rapprocher en utilisant la roulette... C'est la caméra que je fais bouger... Donc je mets un Back Plane assez loin et je voudrais pouvoir m'approcher beaucoup de mon objet, donc je mets un Front Plane très près... Le seul problème c'est que je ne parviens pas à régler correctement mon FOV...
    Y a-t-il une règle simple à appliquer ou dois-je le régler manuellement?

  15. #15
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Typiquement le FOV se règle à 45° ou 90°, après si tu veux des effets de zoom tu peux le réduire (ou l'augmenter si tu veux d'autres effets moins classiques).

  16. #16
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut et merci pour tes conseils
    bon j'ai essayé comme tu m'as dit... Mais je ne comprends plus rien ...
    J'ai mis un curseur (TTrackBar) pour modifier la valeur du FOV...
    Lorsque j'en trouve une bien, il suffit que je fasse un zoom avant puis arrière et il ne marche plus...
    Comment ça se fait?
    N'existe-t-il donc pas de valeurs "standard" que je puisse appliquer?
    Parce que si mon FOV est bon, c'est mes clipping planes qui ne le sont plus...

    Pour te dire comment je m'y prends regarde dans le SDK DirectX 7 (j'ai que celui-là) dans la partie "The Viewing Frustum" qui m'a expliqué ces paramètres...

    Mais je dois être un peu stupide parce que je ne comprends pas comment régler ces paramètres de façon à avoir une vue "normale", pas déformée...
    Bref, je suis un peu perdu...
    Je peux t'envoyer l'executable (et les sources aussi si tu veux mais elles sont en Delphi :p ) pour que tu jettes un coup d'oeil parce que là, je sèche complètement...

    D'autre part, je règle ma caméra "à la main", c'est à dire, qu'à chaque cycle, je recalcule l'orientation de ma caméra (pour qu'elle regarde toujours mon objet) à partir de 3 angles qui sont modifiés par l'action
    de la souris...
    N'extiste-t-il pas de méthode un peu moins lourde (voir déjà faite ) qui permette de faire ça?

    Plus ça va, plus j'ai l'impression de m'y prendre comme un pied depuis le début...

    Merci d'avance

    PS : SetFront, SetBack ainsi que SetField sont membres de IDirect3DRMViewport2 dans le SDK DirectX 7...

  17. #17
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Personne?
    S'il vous plait,c'est important

  18. #18
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Mettre en ligne l'executable et les sources pourquoi pas oui, on ne sait jamais. Parce que là j'avoue que je suis un peu perdu moi aussi

    Dx7 c'est (très) vieux, là tu utilises des choses que presque plus personne ne connaît, il n'existe pas de version 8 ou 9 de DelphiX ? Ce serait vraiment plus simple.

  19. #19
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Citation Envoyé par Loulou24
    Dx7 c'est (très) vieux, là tu utilises des choses que presque plus personne ne connaît
    Ben oui je sais bien et encore, c'est mon SDK qui est pour Dx7... Je me demande si Delphi n'utilise pas un Dx encore plus vieux...
    Citation Envoyé par Loulou24
    il n'existe pas de version 8 ou 9 de DelphiX ? Ce serait vraiment plus simple
    Mais ça serait le rêve!
    Mais évidemment, faut pas rêver
    En effet, non seulement DelphiX implémente une (très) ancienne version de DirectX mais en plus, son développement a été arrêté...
    Malgré tout, je suis obligé de l'utiliser parce que c'est le seul que je connaisse qui n'utilise pas de DLL supplémentaires... C'est une obligation pour moi car ce viewer doit être distribuable facilement... (En fait un ActiveX sur une page HTML)...
    Donc je veux bien afficher du code, mais rappelle-toi, c'est du Delphi... Je voudrais pas faire mon cheveu sur la soupe dans ce forum ...

  20. #20
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    As-tu regarder les sites et les forums de delphi?

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/11/2008, 20h19
  2. [AJAX] Objet XMLHttpRequest, status ne retourne rien
    Par IanBussieres dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/03/2008, 10h54
  3. [Débutant] Objets non affichés dans ma fenêtre
    Par G_angel dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 30/01/2007, 13h03
  4. Réponses: 3
    Dernier message: 09/01/2007, 17h16
  5. [Débutant] Objet ou Attribut qui disparait
    Par Clark dans le forum C++
    Réponses: 16
    Dernier message: 22/05/2006, 16h24

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