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 :

DirectX : Problème Material.


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut DirectX : Problème Material.
    Bonjour à tous.
    Je débute toujours avec C# et directX9.

    J'ai le problème suivant :Je souhaiterais afficher un cylindre bleu en utilisant un « Material ».
    //La ligne suivante est dans une procedure initGraphique : elle définit mon cylindre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    meshCyl =Mesh.Cylinder(device, 0.05f, 0.05f, 0.7f, 20, 2);
    La fonction suivante devrait préparer le Device à utiliser le Material.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    protected void SetupMaterials()
            {/* procédure qui devrait préparer le Device à l’affichage de mon cylindre*/
                Material mat = new Material();
                mat.Diffuse = Color.Blue;
                mat.Specular = Color.LightGray;
                mat.SpecularSharpness = 15.0F;
                device.Material = mat;
                device.RenderState.SpecularEnable = true;
            }
    /* la procédure render affiche un premier objet texturé.
    Mais ensuite le cylindre reste entiérement noir*/

    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
      protected void Render()
            {
                device.Viewport = MyViewport1;
                device.Clear(ClearFlags.Target | ClearFlags.ZBuffer,                                       Color.Azure,1.0F, 0);
     
                device.BeginScene();
                device.Transform.World = Matrix.Identity;
                SetupMatricesObservateur(1);//calcul matrive view
     
               sp.SphereTextured(18, 0.1f, direction.X, direction.Y, direction.Z, ref device, ref texture2);// Cette ligne fonctionne et affiche une « terre »   
     
                SetupMaterials();
                meshCyl.DrawSubset(0);// Problème mon cylindre reste noir !
                device.EndScene();
                device.Present();
     
                }
    Si vous avez une idée … Je suis preneur.

    D’avance Merci.
    PS : N'ayant pas trouvé comment ouvrir un nouvelle discussion. J'ai ajouté une réponse...

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu n'as pas défini de lumière. Vérifie aussi que ton cylindre a des normales bien définies.

    PS : N'ayant pas trouvé comment ouvrir un nouvelle discussion. J'ai ajouté une réponse...
    Il y a un gros bouton "nouvelle discussion" en haut à gauche lorsque tu es sur le forum.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut DirectX : Problème Material. Suite
    Bien vu ! On voit mieux avec de la lumière. (J'ai l'air malin...)

    Maintenant dans ma scène certains cylindres sont colorés : ce sont ceux que j’ai fabriqués avec petites mains et des Vertex(ou vertices) PositionNormalColored lorsque je ne savait qu’il existait des cylindres tout faits.( Mesh.Cylinder)

    Question :

    - Comment controler la normale de ces derniers pour qu’ils soient coloriés également ?

    - Est il possible de leur appliquer un texture ?

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    - Comment controler la normale de ces derniers pour qu’ils soient couloriés également ?
    meshCyl.ComputeNormals. A noter que si ta mesh n'en possède pas, il faudra la cloner avec le bon format de vertex.

    Tiré de la doc du SDK :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    pMesh = Mesh.FromFile("a_mesh_file.x", MeshFlags.Managed, device);
     
    if ((pMesh.VertexFormat & VertexFormats.Normal) == 0)
    {
        Mesh pTempMesh = pMesh.Clone(pMesh.Options.Value,
                                     pMesh.VertexFormat |
                                     VertexFormats.Normal, device);
        pTempMesh.ComputeNormals();
        pMesh.Dispose();
        pMesh = pTempMesh;
    }
    - Est il possible de leur appliquer un texture ?
    J'imagine que Mesh.Cylinder crée et calcule des coordonnées de texture correctes, donc oui. A vérifier tout de même.

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

Discussions similaires

  1. [Directx] Problème d'assembly
    Par lefty972 dans le forum C#
    Réponses: 1
    Dernier message: 23/01/2012, 14h23
  2. [DIRECTX] Problème création de texture dynamique
    Par caparenlive59 dans le forum DirectX
    Réponses: 2
    Dernier message: 04/06/2007, 12h54
  3. problème de warning en compilant win32 + directx
    Par madcode dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 17/10/2006, 16h58
  4. problème avec directx 9 et visual C++ 6
    Par 180degrés dans le forum MFC
    Réponses: 2
    Dernier message: 28/09/2005, 09h43
  5. [C#]Problème DirectX SDK & Sprite(Class)
    Par doccpu dans le forum DirectX
    Réponses: 3
    Dernier message: 16/06/2005, 13h30

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