CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Texture, Lumiere et OpenGL

arnaud81
arnaud81
Niveau 7
21 mai 2003 à 00:46:05

voila, g une superbe scene texturé avec un effet jour/nuit.

Le probleme, pourl´effet jour/nuit, j´utilise un glColor3f(x,x,x); pour controler la luminosité globale de la scene. Ca, ca marche.

le pb, c que ca marche pas avec les lumieres.
( je peux pas changer les couleurs des textures avec les lumieres)
Exit donc mes lampadairs que je voulais mettre.

Quelqu´un aurait une idée pour que je puisse faire cohabiter luminosité globale etlumiere ?

Kelios
Kelios
Niveau 8
21 mai 2003 à 02:34:39

? ??

Je dois être surement fatigué, m´enfin bon...
Je ne comprend pas ton affaire de glColor3f : comment t´arrives à controler la luminosité de la pièce avec ça?

" ( je peux pas changer les couleurs des textures avec les lumieres) "
Vraiment, ça doit être une surdose d´octets ( ;P), je ne comprend plus rien:
Tu controlait les couleurs des textures avec un glColor3f, et, rendu avec les lumières, tu ne peut plus changer ces couleurs?

Holà, senor, il faut soit que tu m´expliques, ou que quelqu´un réponde à ma place ^^

Kelios
---------

arnaud81
arnaud81
Niveau 7
21 mai 2003 à 03:22:41

yeap.

tu affiche ta texture pepere:

glBind(GL_TEXTURE_2D,idtexture);
glColor3f(x,x,x); //x controle la luminosité
AfficheObjetAvecTexture();

mais des que tu fais un
glEnable(GL_LIGHTING)

mon glColor3f ne fonctionne plus.

Je pouvais avant attribuer une teinte verte a une texture ce qui est pluspossiblequand la lumiereest activé

hs_dino
hs_dino
Niveau 9
21 mai 2003 à 16:40:33

Sauf erreur de ma part, ton glColor doit définir la couleur de tes vertex, c´est pour ca que ca donne l´impression d´une lumiere ambiante. Ce principe est à proscrire.

Si tu veux utiliser les lumieres dynamiques, il y a plusieurs choses a prendre en compte.

1 - Définir correctement tes lumieres avec un glLight ( Position, Couleur, etc... ) .
2 - Definir correctement tes materiaux avec un glMaterial
3 - Vérifier que tes vertex ont des normales et qu´ils sont " normalizés".

Pour ta lumiere ambiente, utilise glLight avec comme parametre GL_AMBIENT.

Voila

J´espere avoir répondu un peu à ta question.

Quelqu´un veut s´engueuler avec moi? ; )

Dino
The Zythum Project
http://www.zythum-project.com

djromainfr
djromainfr
Niveau 4
21 mai 2003 à 20:27:31

Moi dino moi lol

Effectivement dino a raison glColor change uniquement la couleur et n´a rien a voir avec la lumière ambiante... mais il me semble plus juste de préciser la lumière ambiante comme ceci:
glLightModelfv(GL_LIGHT_MODEL_AMBIENT,GLenum ambient);

Voila moi perso j´utilise ça ce qui est plus juste a mon sens que d´utiliser une lumière que l´on utilise comme lumière ambiante... m´enfin jme trompe peu être hein ; )

Kelios
Kelios
Niveau 8
21 mai 2003 à 21:33:06

Bon, ben au moins, ça m´indique que c´était normal que je trouve bizzare de gérer des lumières avec un glColor....

Sinon, y´a quelquechose qui me tripotte: lumières dynamiques? Qu´es-ce que vous entendez par là? À ce que je sache, une lumière est toujours statique, quoique l´on puisse donner l´impression de la faire bouger entre les frames, comme on animerait un model...

Sinon, je dois comprendre un peu ton affaire de glColor avec des textures:
Tu renderait d´abord ton objet avec un gouraud Shading de glColor, qui controlait clair-foncé, après, GL bindait la texture selon les coordonnées de textures spécifiées, et à l´aide d´une opération de Blending spéciale, la texture venait à se ´Blender´ avec la couleur des vertices? Ma théorie serait-elle juste?

Kelios
---------

arnaud81
arnaud81
Niveau 7
21 mai 2003 à 22:20:10

Peut etre qu´OpenGL effectue cette opération Kelios. Ou alors, le blending est effectué lors de la lecture de la texture.

mais dans le prog, si je n´active pas la lumiere,

glColor3f(1,0,0);
glBindTexture(GL_TEXTURE_2D,tatexture);
monobjet();

ce code affiche mon objet texturé, mais qu´avec la composante rouge de la texture.

J´ai voulu n´utiliser que des lumiere des dynamique, mais l´effet n´est pas credible, car certains de mes vertex sont a 90° par rapport a mon soleil de midi et sont completement noirs alors qu´en réalité, ces vertex seraient éclairés par la lumiere renvoyées par les autres objets.

pour les normales, j´ai eu des pb qui sont maintenant réglés, mais pourla normalisation, un glEnable(GL_NORMALIZE) suffit ? ( ou GL_AUTO_NORMAL, je c plus)

Je vais essayer ce que propose djromainfr. La commande me parait adaptée. Je vais tester. Avec toutes ces options, je ne retrouvais plus cette commande : p

Kelios, une lumiere dynamique c une lumiere qui intervient directement sur un vertex et qui tient compte de parametres tels ques la distance lumiere-vertex, couleurs dela lumiere, couleur delasurface, et parametre de la surface(shininess, reflexion, . ..)
alors qu´une lumiere statique serait juste une Lighmap appliqué a un vertex.

Dans la lightmap, tout ces calculs ont déja été fait, alors que dans lalumiere dynamique, tous ces calculs sont reprisa chaque rendu. ( c le processeur qui est dynamique dans le rendu de cette lumiere lol)

Kelios
Kelios
Niveau 8
21 mai 2003 à 23:27:22

" tous ces calculs sont reprisa chaque rendu. "
Pauvre GPU... je le plaint!

" Peut etre qu´OpenGL effectue cette opération Kelios. Ou alors, le blending est effectué lors de la lecture de la texture. "
Ptêt bien, ptêt bien...

" glEnable(GL_NORMALIZE) suffit ? ( ou GL_AUTO_NORMAL"

  • Se lève et va chercher sa bible de l´OpenGL*
  • Ouvre le livre*

Ha hum... Alors nous disons,

GL_AUTO_NORMAL: Génère automatiquement les normales, sans avoir à les pré-spécifier avec glNormal

GL_NORMALIZE: Normalise les vecteurs normaux... oulah, elle était dure à comprendre celle là ; P

Ils indiquent aussi de toujours activer GL_NORMALIZE pour les lumières, à moins que les vecteurs ne soient déjà normalizés...

  • Ferme son livre d´un coup sec*

En tout cas, merci pour la leçon des lumières dynamiques...

Kelios
---------

arnaud81
arnaud81
Niveau 7
22 mai 2003 à 01:33:25

Yeap! le probleme est solvé !

bon, maintenant, mon skydome est vraiment moche ( surtout les étoiles)...Mais ca fera l´objet d´un objet topic : p

djromainfr
djromainfr
Niveau 4
22 mai 2003 à 14:56:55

ah lol je le savais même pas que OpenGL pouvais calculer automatiquement les normales ^^ ( GL_AUTO_NORMAL). ça doi être plus rapide de la faire soit même non? ( rassurez moi jme suis pas emmerder a les calculer moi même lol). Sinon GL_NORMALIZE évite de l´utiliser c´est une commande plutôt lente mieux vaut normalizer tes vecteurs normaux toi-même.

hs_dino
hs_dino
Niveau 9
22 mai 2003 à 15:25:52

Malheureusement djromain, tu n´as rarement le choix pour tes normales...

GL_NORMALIZE normalize les normales après transformation.

Tu en as besoin lorsque tu scales un objet ( donc tu scales les normales) et comme tu laisses faire les projections a l´API et bien tu n´as plus acces aux normales transformées pour les normaliser ensuite, d´ou le GL_NORMALIZE qui demande a l´API de faire cette opération post-projection.

Dino
The Zythum Project
http://www.zythum-project.com

JeanYvesYves
JeanYvesYves
Niveau 10
22 mai 2003 à 15:28:45

nehe.gamedev.net

tutoriaux magnifiques

djromainfr
djromainfr
Niveau 4
22 mai 2003 à 19:03:10

Dino: Euh ouai ta raison je croyais avoir lu kk part un moyen d´éviter ça mais la je viens de me rendre compte qu´à par recalculer la normale ya pas bcp d´autres solutions...
Jusqu´a maintenant j´utilisais GL_NORMALIZE je croyais qu´il existait une solution plus rapide...

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment