AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-40%
Le deal à ne pas rater :
-40% sur le Pack Gaming Mario PDP Manette filaire + Casque filaire ...
29.99 € 49.99 €
Voir le deal

 

 [Résolu] vecteur normal dans une fonction d3d

Aller en bas 
3 participants
AuteurMessage
ypcman
Plutôt bien
ypcman


Messages : 42
Projet Actuel : Genèse 3d.

[Résolu] vecteur normal dans une fonction d3d Empty
MessageSujet: [Résolu] vecteur normal dans une fonction d3d   [Résolu] vecteur normal dans une fonction d3d EmptyJeu 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) ?
Revenir en haut Aller en bas
nicoulas
*Excellent utilisateur*
nicoulas


Messages : 6030
Localisation : Dordogne
Projet Actuel : Croustaface Tower Defense [Résolu] vecteur normal dans une fonction d3d Panicpr9

[Résolu] vecteur normal dans une fonction d3d Empty
MessageSujet: Re: [Résolu] vecteur normal dans une fonction d3d   [Résolu] vecteur normal dans une fonction d3d EmptyJeu 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 :

[Résolu] vecteur normal dans une fonction d3d Fig2

Mêmes normales sur les trois points d'un triangle = flat shading
Normales "lissées" (moyenne des produits vectoriels) : smooth shading
Revenir en haut Aller en bas
http://blithe.nd.free.fr/
ypcman
Plutôt bien
ypcman


Messages : 42
Projet Actuel : Genèse 3d.

[Résolu] vecteur normal dans une fonction d3d Empty
MessageSujet: Re: [Résolu] vecteur normal dans une fonction d3d   [Résolu] vecteur normal dans une fonction d3d EmptyJeu 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.
Revenir en haut Aller en bas
nicoulas
*Excellent utilisateur*
nicoulas


Messages : 6030
Localisation : Dordogne
Projet Actuel : Croustaface Tower Defense [Résolu] vecteur normal dans une fonction d3d Panicpr9

[Résolu] vecteur normal dans une fonction d3d Empty
MessageSujet: Re: [Résolu] vecteur normal dans une fonction d3d   [Résolu] vecteur normal dans une fonction d3d EmptyJeu 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 :

[Résolu] vecteur normal dans une fonction d3d OpenGLV4


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).
Revenir en haut Aller en bas
http://blithe.nd.free.fr/
ypcman
Plutôt bien
ypcman


Messages : 42
Projet Actuel : Genèse 3d.

[Résolu] vecteur normal dans une fonction d3d Empty
MessageSujet: Re: [Résolu] vecteur normal dans une fonction d3d   [Résolu] vecteur normal dans une fonction d3d EmptyJeu 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 ...
Revenir en haut Aller en bas
Invité
Invité




[Résolu] vecteur normal dans une fonction d3d Empty
MessageSujet: Re: [Résolu] vecteur normal dans une fonction d3d   [Résolu] vecteur normal dans une fonction d3d EmptyJeu 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 tord maintenant je comprend mieux comment faire pour avoir du gouraud shading pour mon terrain

merci encore super

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
Revenir en haut Aller en bas
nicoulas
*Excellent utilisateur*
nicoulas


Messages : 6030
Localisation : Dordogne
Projet Actuel : Croustaface Tower Defense [Résolu] vecteur normal dans une fonction d3d Panicpr9

[Résolu] vecteur normal dans une fonction d3d Empty
MessageSujet: Re: [Résolu] vecteur normal dans une fonction d3d   [Résolu] vecteur normal dans une fonction d3d EmptyJeu 23 Juil 2009 - 20:19

lol shm, je fais ça pour aider, pas pour montrer mes skills noel

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)
Revenir en haut Aller en bas
http://blithe.nd.free.fr/
ypcman
Plutôt bien
ypcman


Messages : 42
Projet Actuel : Genèse 3d.

[Résolu] vecteur normal dans une fonction d3d Empty
MessageSujet: Re: [Résolu] vecteur normal dans une fonction d3d   [Résolu] vecteur normal dans une fonction d3d EmptyJeu 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 script

les 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.
Revenir en haut Aller en bas
nicoulas
*Excellent utilisateur*
nicoulas


Messages : 6030
Localisation : Dordogne
Projet Actuel : Croustaface Tower Defense [Résolu] vecteur normal dans une fonction d3d Panicpr9

[Résolu] vecteur normal dans une fonction d3d Empty
MessageSujet: Re: [Résolu] vecteur normal dans une fonction d3d   [Résolu] vecteur normal dans une fonction d3d EmptyJeu 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)).
Revenir en haut Aller en bas
http://blithe.nd.free.fr/
ypcman
Plutôt bien
ypcman


Messages : 42
Projet Actuel : Genèse 3d.

[Résolu] vecteur normal dans une fonction d3d Empty
MessageSujet: Re: [Résolu] vecteur normal dans une fonction d3d   [Résolu] vecteur normal dans une fonction d3d EmptyJeu 23 Juil 2009 - 22:23

Merci Nicoulas !
il suffisait effectivement de mettre d3d_set_lighting(enable) sur true ...
Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
[TheDarkTiger]


Messages : 7420
Localisation : Essonne

[Résolu] vecteur normal dans une fonction d3d Empty
MessageSujet: Re: [Résolu] vecteur normal dans une fonction d3d   [Résolu] vecteur normal dans une fonction d3d EmptyVen 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.

_________________
Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^
[Résolu] vecteur normal dans une fonction d3d U3dfr2[Résolu] vecteur normal dans une fonction d3d Sign l'antique
Bienvenue au 2629eme utilisateur : Mike Jones !
Revenir en haut Aller en bas
http://www.tdms.fr
Contenu sponsorisé





[Résolu] vecteur normal dans une fonction d3d Empty
MessageSujet: Re: [Résolu] vecteur normal dans une fonction d3d   [Résolu] vecteur normal dans une fonction d3d Empty

Revenir en haut Aller en bas
 
[Résolu] vecteur normal dans une fonction d3d
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Resolu] Orienter un vecteur 2D avec un angle avec cosinus et sinus.
» [RESOLU] bug dans ma lib
» [Résolu]Son dans une zone
» [RESOLU] String dans tableau
» [Résolu] ds_list dans un script.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: