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 :

Vertex à la fois coloré, texturé et normé


Sujet :

DirectX

  1. #1
    Membre actif Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Points : 248
    Points
    248
    Par défaut Vertex à la fois coloré, texturé et normé
    Bonjour,

    Je viens de poster dans la section C# du forum et on m'a conseillé de poster plutôt ici, dans la section Direct X au vu du type de problème, qui est le suivant.

    Je découvre actuellement Direct X en C# mais rencontre un souci pour lequel je ne trouve aucune réponse précise sur le web. Je souhaite créer des objets à partir de vertex, lesquels peuvent être colorés et/ou texturés. Jusque là aucun souci, j'utilise la structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CustomVertex.PositionColoredTextured.
    Je viens de m'attaquer maintenant à l'éclairage de ma scène et mes objets deviennent tout noir, en l'absence de normales définies sur les vertex. Je souhaite donc ajouter cette information mais je ne trouve aucun format qui accepte à la fois infos de couleur, de texture et de normale (dans l'idéal, je recherche un CustomVertex.PositionNormalColoredTextured mais évidemment, ça n'existe pas ).

    Savez-vous s'il existe un tel format ?

    Je m'étais aussi penché vers une solution qui permettrait de changer de type de vertex mais le format est défini à l'initialisation du device par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    device.VertexFormat = CustomVertex.PositionColoredTextured.Format;
    Je ne vois donc pas comment il serait possible de changer le format du device…
    Autre possibilité : passer par l'utilisation de plusieurs devices ? Là encore, mes recherches n'ont pas été très fructueuses donc si vous connaissez une documentation ou même un tuto qui traite ce genre de problème, je suis plus que preneur.

    Merci d'avance pour vos réponses.
    Chen norris
    C/C++, C#, Java, PHP & SQL coder
    Web developer

  2. #2
    Expert confirmé

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

    Informations forums :
    Inscription : Février 2006
    Messages : 2 376
    Points : 4 928
    Points
    4 928
    Par défaut
    bonjour, je crois qu'avec cette page, tu devrais pouvoir trouver ton bonheur :

    http://msdn.microsoft.com/en-us/library/bb976065.aspx

  3. #3
    Membre actif Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Points : 248
    Points
    248
    Par défaut
    Merci déjà pour cette première réponse, mais le lien traite plutôt de comment spécifier des normales sur des vertex, et non comment gérer plusieurs formats de vertex à la fois. Dans les exemples, on a des VertexPositionColoredNormal qui sont positionnés puis pour lesquels sont définies les normales.

    Mon problème est plutôt de gérer à la fois des infos de couleur, de normale mais aussi de texture (la notion de texture n'est pas abordée dans ton lien malheureusement). Bien sûr, il y a aussi la possibilité d'utiliser des VertexPositionTextureNormal mais cette fois, on perd l'info de couleur.

    Les deux solutions vers lesquelles je tente de m'orienter sont :
    • soit l'utilisation d'une structure de vertex contenant à la fois des infos de couleur, de texture et de normale
    • soit un changement du type de vertex manipulé avant d'effectuer le rendu de mon device


    Ne connaissant pas suffisament Direct X, je ne suis pas en mesure d'affirmer laquelle de ces deux solutions est réalisable (d'après la première réponse sur mon autre post, il semblerait que ce soit la seconde).
    Chen norris
    C/C++, C#, Java, PHP & SQL coder
    Web developer

  4. #4
    Expert confirmé

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

    Informations forums :
    Inscription : Février 2006
    Messages : 2 376
    Points : 4 928
    Points
    4 928
    Par défaut
    en fait il te manque un peu d'info concernant le fonctionnement de directx.

    mais bon, je vais directement passer à la solution, toi tu utilises PositionColoredTextured, en fait quand tu utilises ça, tu dis à directx que chaque des vertices de ton objet aura ça comme info :

    - une position
    - une couleur
    - une coordonnée de texture

    toi ce que tu veux c'est ça, si je comprends bien :

    - une position
    - une normale
    - une couleur
    - une coordonnée de texture

    vu que c'est pas défini de base dans c#, il faut que tu le fasses toi même, d'où le lien que je t'ai passé qui t'explique comment créer ce format.

    il y a aussi ce lien : http://msdn.microsoft.com/en-us/libr...02(VS.85).aspx

    le problème maintenant c'est que je n'ai que du code c++/directx sous la main pour illustrer une création complète, je pourrai le mettre si tu veux.

  5. #5
    Membre actif Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Points : 248
    Points
    248
    Par défaut
    OK, donc si je comprends bien, on n'utilise non plus des CustomVertex.<quelque chose> mais plutôt des VertexElement lesquels peuvent accueillir toutes les infos dont j'ai besoin (à savoir comme tu l'as très bien compris des infos de position, de normale, de couleur et de texture).

    En effectuant de nouvelles recherches sur le net avec ce que tu viens de me donner comme info, je suis tombé sur ça : http://www.gamedev.net/community/for...opic_id=424645. J'ai l'impression que ça correspond parfaitement à ce que je cherche. En résumé, tu me confirmes que :
    1. Je crée un tableau de VertexElement,
    2. Dans ce tableau, je déclare autant de VertexElement que je souhaite enregistrer d'informations (dans mon cas, quatre pour le moment),
    3. Inutile que j'initialise mon device puisque je travaille désormais directement avec la propriété VertexDeclaration de mon device


    Merci d'avance pour ta confirmation.

    Concernant le bout de code, je vais d'abord essayer de fouiller par moi-même pour voir si j'arrive à me débrouiller avec tes premières explications, mais si jamais je bloque, je serai preneur même pour du C++.
    Chen norris
    C/C++, C#, Java, PHP & SQL coder
    Web developer

  6. #6
    Expert confirmé

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

    Informations forums :
    Inscription : Février 2006
    Messages : 2 376
    Points : 4 928
    Points
    4 928
    Par défaut
    je pense que tu as tout bon, il me manque juste l'expérience en c#/dx pour confirmer à 100%.

  7. #7
    Membre actif Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Points : 248
    Points
    248
    Par défaut
    Je marque donc ce post comme résolu pour le moment.
    Merci pour tout.

    ___________ EDIT ___________

    Je profite de mon passage sur le forum pour confirmer que c'est bien de la manière que tu m'as indiqué qu'il faut procéder. Actuellement, j'ai pu mettre en place la déclaration d'un type de vertex customisé (infos de couleurs, de transparence, de texture, de position, de normales, …) et passer cette structure en paramètre lors du rendu de ma scène. La méthode DrawUserIndexedPrimitives remplit à merveille ce rôle.

    Pour les personnes intéressées, un exemple est disponible ici.
    Chen norris
    C/C++, C#, Java, PHP & SQL coder
    Web developer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OBJ] vertex texture
    Par Husqvarna dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 12/05/2006, 00h45
  2. Cube avec 8 Vertex + textures
    Par mister3957 dans le forum DirectX
    Réponses: 2
    Dernier message: 24/11/2005, 00h31
  3. Réponses: 2
    Dernier message: 26/02/2005, 10h26
  4. Color key d'une texture
    Par Freakazoid dans le forum DirectX
    Réponses: 9
    Dernier message: 07/07/2004, 17h48

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