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 :

Problème avec le rendu de sphère


Sujet :

DirectX

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 68
    Points : 34
    Points
    34
    Par défaut Problème avec le rendu de sphère
    Bonjour,

    Je continue mon planétarium...

    J'ai un problème assez bizarre avec le rendu des sphères :

    Ici Mars :



    La ligne de séparation entre la partie éclairée et la partie dans l'ombre ne suit pas une "courbe" parfaite mais semble zigzaguer bizarrement.

    J'ai pensé qu'il s'agissait peut être d'un nombre trop faible de polynômes constituant cette sphère (il y en a 100 ici) mais le fait d'en rajouter n'améliore pas le rendu.

    Voici mes paramètres de RenderStats et SamplerState

    _device->SetRenderState( D3DRS_DITHERENABLE, TRUE);
    _device->SetRenderState( D3DRS_SPECULARENABLE, FALSE );
    _device->SetRenderState( D3DRS_ZENABLE, TRUE );
    _device->SetSamplerState(0,D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
    _device->SetSamplerState(0,D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);

    Une autre information. La sphère a étré générée par Studio Max 2 (fichier x).

    Quelqu'un a-t-il une idée ?

    Merci...

    Franck

  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
    Les normales non normalisées peut-être ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 68
    Points : 34
    Points
    34
    Par défaut
    J'utilise aussi la commande :

    _device->SetRenderState( D3DRS_NORMALIZENORMALS, TRUE );

    (j'avais oublié de le signaler ça)

    Et j'ai calculer les normales de l'objet avec Studio Max...

    Franck

  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
    En fait, ton problème c'est que l'ombre "zigzag", ou qu'elle passe directement de "blanc à noir" ? Si c'est le 1er (comme j'ai cru le comprendre en relisant ton post), c'est le nombre de polygones, reessaye avec un nombre vraiment + élevé, ou regarde en wireframe. Mais d'un autre coté si c'est pas le 2, ton éclairage me parait louche du coup.

  5. #5
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 99
    Points : 115
    Points
    115
    Par défaut
    Bizarre... Elle est fabriquee comment cette ombre ? Eclairage directionnel ? Ombre volumetrique ? Stencil ?

  6. #6
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 99
    Points : 115
    Points
    115
    Par défaut
    S'il s'agit d'eclairage directionnel, je parierai bien que les normales sont foireuses. Normalisees mais pas vraiment normales. Si le modele est charge via un IMesh, tenter de recalculer les normales au moment du chargement.

  7. #7
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Tu n'as pas besoin de normaliser les normales
    si elles sont deja unitaires.
    (de plus ce n'est pas supporté par toutes les cartes donc si ce
    n'est pas le cas des données exportées ou si tu modifies les normales de manieres non regulieres tu peux avoir à les recalculer à la main..)

    Sinon tu peux essayer simplement d'éclairer une sphère que
    tu construis à la main. Pour rappel la normale en un point d'une sphère passe simplement par son centre donc c'est vraiment trivial à calculer (contrairement à d'autres surfaces).

    LeGreg

  8. #8
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Il n'y a peut-etre pas de problemes avec tes normales ou ton eclairage.
    si tu as une lumiere trop forte comme j'ai l'impression, ton eclairage va etre bitone soit noir soit blanc et une fine frontiere grisatre entre les vertex blancs et les vertex noirs.
    Cette frontiere va epouser les courbes de ton modele anguleux, donc la solution c'est peut-etre de rendre l'éclairage plus doux en baissant son intensité ou de rajouter des polygones sur ton modele en subdivisant suffisamment ta sphere (ou de passer a un eclairage par pixel).

    LeGreg

  9. #9
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 99
    Points : 115
    Points
    115
    Par défaut
    Sous DX, il est necessaire de normaliser les normales des que l'on fait un scale.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 68
    Points : 34
    Points
    34
    Par défaut
    Merci pour toutes ces précisions, c'est vraiment sympa...

    J'utilise une sorte de lumière de type "point".

    C'est vrai que je n'ai pas essayé de renormer les normales après un scale. Cela peut venir effectivement de cela...
    Mais comment recalculer les normales avec un objet de type mesh chargé à partir d'un fichier x ?

    Avec mes remerciements,

    Franck

  11. #11
    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
    Y a pas à chercher loin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    D3DXComputeNomals(Mesh, NULL);

Discussions similaires

  1. [MVC] Problème avec URL rendue
    Par delph1983 dans le forum Spring Web
    Réponses: 0
    Dernier message: 24/07/2009, 16h25
  2. Petit problème avec rendu partiel
    Par Tazzz dans le forum Ruby on Rails
    Réponses: 4
    Dernier message: 14/01/2008, 09h21
  3. Réponses: 6
    Dernier message: 14/11/2006, 17h58
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 17h10

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