| [Résolu] vecteur normal dans une fonction d3d | |
|
|
Auteur | Message |
---|
ypcman Plutôt bien
Messages : 42 Projet Actuel : Genèse 3d.
| Sujet: [Résolu] vecteur normal dans une fonction d3d Jeu 23 Juil 2009 - 11:12 | |
| bonjour, je ne comprend pas comment fonctionne la normale à un vertice. En mode tracé de triangle, on fournit des triplés de vertices ayant chacun une normale. Que ce passe t'il si on ne donne pas la même valeur pour les 3 normales (le produit vectoriel des 2 vecteurs formé par les 3 points) ? |
|
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: [Résolu] vecteur normal dans une fonction d3d Jeu 23 Juil 2009 - 14:01 | |
| Si tu donne les trois mêmes normales à un triangle, l'éclairage se fera se façon plate, si tu ne donne pas les mêmes normales à chaque point (par exemple en faisant la moyenne du produit vectoriel de deux triangles adjacents), ton éclairage sera différent, et dans le cas entre parenthèses, l'éclairage se fera se manière plus "lisse" : ton modèle aura une apparence d'arrondi en quelque sorte. EDIT : Mêmes normales sur les trois points d'un triangle = flat shading Normales "lissées" (moyenne des produits vectoriels) : smooth shading |
|
| |
ypcman Plutôt bien
Messages : 42 Projet Actuel : Genèse 3d.
| Sujet: Re: [Résolu] vecteur normal dans une fonction d3d Jeu 23 Juil 2009 - 15:53 | |
| Merci, c'est très clair. le vecteur normal doit-il être normé (de norme 1 ...)? Je galère pour allumer une lumière et pouvoir ainsi visualiser le shading. As-tu un script basic ?, je n'ai rien trouvé dans ton répertoire de script. |
|
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: [Résolu] vecteur normal dans une fonction d3d Jeu 23 Juil 2009 - 17:07 | |
| Alors : Oui les normales doivent être de norme 1 (enfin pour avoir un éclairage "par défaut", car si tu veux que l'objet soit éclairé plus fort, augmente la norme du vecteur, si au contraire tu veux qu'il soit peu affecté par les lumières réduis la norme du vecteur). Ensuite pour allumer une lumière tu as deux étapes avec deux types de lumières différentes : 1ère étape : définir soit une "lumière ponctuelle" soit une "lumière directionnelle", grâce aux fonctions d3d_light_define_point() et d3d_light_define_direction(). 2ème étape : activer la lumière définie par l'une des fonctions ci-dessus grâce à la fonction d3d_light_enable(); L'id à définir dans toutes ces fonctions (le premier argument) est un nombre entier quelconque, il sert juste à activer et désactiver les lumières. La "lumière ponctuelle" est définit par son identifiant, ses coordonées (x,y,z), sa portée et sa couleur, alors que la "lumière directionnelle" est définie par son indentifiant, les coordonées de son vecteur et sa couleur. Pour illustrer ces deux types de lumières : Seule différence avec cette image, dans GM, les lumières traversent tous les objets et toutes les faces, vertex, etc. EDIT : Pour simuler un éclairage de soleil, il vaut mieux utiliser des lumières directionnelles car on peut supposer que le soleil est situé à une distance infinie des objets à, éclairer. De plus, une lumière ponctuelle va peu éclairer les objets lointains, même si sa portée est très élevée (la portée ne modifie pas la puissance de la lumière). |
|
| |
ypcman Plutôt bien
Messages : 42 Projet Actuel : Genèse 3d.
| Sujet: Re: [Résolu] vecteur normal dans une fonction d3d Jeu 23 Juil 2009 - 18:28 | |
| je comprend toujours bien la théorie, mais it doesn't works !!! ci dessous mon script minimal dans un draw d'objet : draw_set_color(c_green); draw_set_alpha(1); d3d_draw_ellipsoid(300,300,50, 500,400,150, -1,0,0,24);
dans les settings de la room0 : d3d_start(); d3d_light_define_direction(1,100,100,100,c_white); d3d_light_enable(1,true); d3d_set_shading(true); et ça ne veut rien shadder ... |
|
| |
Invité Invité
| Sujet: Re: [Résolu] vecteur normal dans une fonction d3d Jeu 23 Juil 2009 - 19:02 | |
| heu t'a pas besoin de définir les normales pour les formes basiques :ange2: pis lol nicoulas qui saisit la moindre chance pour montrer ses compétances en 3D maintenant je comprend mieux comment faire pour avoir du gouraud shading pour mon terrain merci encore edit : non pour etre honnete je connaissais déja la technique oui: http://gmc.yoyogames.com/lofiversion/index.php/t421485.html
Dernière édition par shm31 le Jeu 23 Juil 2009 - 23:14, édité 2 fois |
|
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: [Résolu] vecteur normal dans une fonction d3d Jeu 23 Juil 2009 - 20:19 | |
| lol shm, je fais ça pour aider, pas pour montrer mes skills Pour Ypcman : Qu'est ce que tu entend par "ça ne veut rien shadder" ? Que l'éclairage ne fonctionne pas ou que les faces de ta shape sont en flat shading (pas lissées) ? (si tu pouvais joindre une screen pour illustrer le problème ce serait bien aussi) |
|
| |
ypcman Plutôt bien
Messages : 42 Projet Actuel : Genèse 3d.
| Sujet: Re: [Résolu] vecteur normal dans une fonction d3d Jeu 23 Juil 2009 - 20:31 | |
| je vois parfaitement l'ellipsoïde mais à plat ie sans face ayant une couleur variant en fonction de sa normale à la direction de la lumière. mon scriptles seuls lignes de code sont : dans le draw d'objet : draw_set_color(c_green); draw_set_alpha(1); d3d_draw_ellipsoid(300,300,50, 500,400,150, -1,0,0,24); dans les settings de la room0 : d3d_start(); d3d_light_define_direction(1,100,100,100,c_white); d3d_light_enable(1,true); d3d_set_shading(true); Il doit manquer un truc tout con, mais je sèche. |
|
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: [Résolu] vecteur normal dans une fonction d3d Jeu 23 Juil 2009 - 20:49 | |
| Tu as oublié d'activer l'éclairage : d3d_set_lighting(true);
À placer soit dans draw soit dans le create event de ta room. De plus tu auras besoin d'utiliser une projection 3D afin d'afficher ton monde 3D d'ailleurs que vu de dessus et pour pouvoir avoir une vue 3D réaliste (avec perspective).
Cherche dans l'aide du coté de la fonction d3d_set_projection() (à mettre dans le draw d'un objet qui servira de caméra (cet objet devra avoir sa depth plus élevée que celle de n'importe quel autre objet)). |
|
| |
ypcman Plutôt bien
Messages : 42 Projet Actuel : Genèse 3d.
| Sujet: Re: [Résolu] vecteur normal dans une fonction d3d Jeu 23 Juil 2009 - 22:23 | |
| Merci Nicoulas ! il suffisait effectivement de mettre d3d_set_lighting(enable) sur true ... |
|
| |
[TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: [Résolu] vecteur normal dans une fonction d3d Ven 24 Juil 2009 - 5:34 | |
| Bwarf, à cause des horaires canadiens, j'ai pas pu répondre -_-'
tant pis, les réponses ont été données, c'est l'essentiel. |
|
| |
Contenu sponsorisé
| Sujet: Re: [Résolu] vecteur normal dans une fonction d3d | |
| |
|
| |
| [Résolu] vecteur normal dans une fonction d3d | |
|