J'ai cette question en tête: j'ai besoin de faire une scène qui ressemble à un vrai ciel. Ma première idée était de faire un cube et de le texturer. Ce n'était pas si beau. Je suis venu avec l'idée d'utiliser une sphère. Mais je ne pouvais pas l'allumer de l'intérieur. J'ai mis l'appareil photo sur l'origine en regardant (0,0, -100). Source lumineuse ambiante et spéculaire également à l'origine. Impossible de voir quelque chose allumé! Quelles sont les façons de faire un ciel et comment puis-je allumer l'intérieur d'une sphère?Eclairage à l'intérieur d'une sphère?
Répondre
Essayez de changer le mode d'abattage puisque vous êtes à l'intérieur de la sphère.
Je suis un gars XNA, mais il semble que ce soit le OpenGL equivalent. Si vous avez un éclairage ambiant comme vous l'avez dit, vous devriez pouvoir voir quelque chose indépendamment des normales, je crois.
Essayez flipping the normals of the sphere (plus de résultats de recherche here). En général, les moteurs de rendu utilisent des algorithmes pour déterminer ce qui ne pourrait pas être vu et ne devraient donc pas être rendus; une telle technique est backface culling. Je devine que la sphère est créée de la manière typique où les normales projettent hors de la sphère, loin du centre; vous avez besoin de vos normales face à l'opposé.
J'utilise glutSolidSphere. Les normales ont raison et changer les normales est difficile et buggé car il a des résultats inattendus! – pooya
S'il est allumé de l'extérieur, mais sombre de l'intérieur, il est probable que les normales de la sphère pointent dans la mauvaise direction.
En supposant que vous faites de l'éclairage phong/gouraud, le cosinus entre la direction normale et la direction de la vue sera calculé quelque part. Le cosinus sera négatif et votre carte graphique se bloquera à zéro ce qui entraîne la couleur noire. Donc, si vos normales sont explicitement spécifiées, vous devriez essayer d'inverser leur direction -> multiplier par -1. Si vous n'avez que des sommets et des faces, vous pouvez modifier l'ordre des sommets dans les faces. Changez simplement deux indices. (1-2-3) -> (1-3-2). Cela change l'ordre dans le sens horaire à antihoraire (ou inverse). Pour tester vos résultats, vous pouvez activer et désactiver l'effacement de la face arrière et voir ce qui se passe.
Problème résolu. Merci, mais les normales ne sont pas la réponse. J'utilise glutSolidSphere donc les normales ne sont pas fausses. essayez d'utiliser glLightModeli (GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); ça devrait faire le boulot pour toi.
En fait, c'est la même chose.Vous ignorez simplement que les normales pointent dans la direction opposée. – msteiger
Vous devriez accepter la réponse de bporter puisque vous avez fait ce qu'il a suggéré, ou I82Much, puisque c'est tout à fait équivalent – Calvin1602
merci pour votre mention! – pooya
Lorsque je fais un sky dome, sky box ou sky plane, je ne l'allume pas. Je viens de mettre une texture dessus et de le rendre.
glDisable(GL_LIGHTING);
glDisable(GL_CULL_FACE);
Render sky dome
glEnable(GL_LIGHTING);
glEnable(GL_CULL_FACE);
Cependant, le problème est que le changement d'état peut être coûteux. Donc, une façon d'éliminer le changement d'état GL_CULL_FACE est de s'assurer que vos normales pointent dans le bon sens. Si CULL_FACE est défini sur CCW (Counter ClockWise), les normales doivent pointer vers vous. Toutefois, si CULL_FACE est défini sur CW (ClockWise), les normales doivent être orientées loin de vous. La seule façon que je peux voir pour éliminer le changement d'état GL_LIGHTING est d'utiliser des shaders et de définir votre propre schéma d'éclairage. Cependant, je ne sais pas si c'est plus ou moins cher.
Le problème du ciel est une histoire similaire mais il a d'autres problèmes. Vous pouvez rencontrer des problèmes de distorsion si votre point de vue n'est pas au centre. Ce que je fais généralement est de rendre la boîte du ciel d'abord, centrée sur la caméra, puis effacer le tampon de profondeur et rendre tout le reste. De cette façon, votre boîte de ciel n'a pas besoin d'être ridiculement grande.
perlin bruit ..... –
Comment avez-vous créé la sphère? – Lazarus