Permettez-moi d'avoir un maillage (par exemple sphère) dans le centre de la pièce, plein de cubes et une source de lumière. Comment puis-je faire rapide et facile ombre-casting dans OpenGL, en utilisant "standard" (fixe) seulement des fonctions? Remarque: le résultat doit également contenir des ombres de cube et de sphère.Comment créer rapidement et facilement des ombres indépendantes de la scène sans shaders dans OpenGL
Comment créer rapidement et facilement des ombres indépendantes de la scène sans shaders dans OpenGL
Répondre
Si vous pouvez générer une silhouette de la sphère, vous pouvez utiliser shadow volumes. Le matériel nVidia a également pris en charge la fonction fixe shadow mapping pour un temps tout aussi bien.
Les volumes d'ombre présentent l'inconvénient d'avoir des exigences de taux de remplissage très élevées. Les cartes d'ombre peuvent être meilleures mais nécessitent une passe supplémentaire.
Si vous projetez sur un seul plan, il peut être plus facile de simplement project the object on to a plane.
Le point est d'utiliser l'algorithme universel - pas seulement pour la silhouette sphère =) Mais merci quand même! =) – shybovycha
Désolé, je n'ai pas cliqué un peu sur le deuxième lien ... Ouais, tu avais raison, le mapping des ombres est assez bon et je l'ai découvert par moi même (stupide) =) – shybovycha
@shybovycha: Juste pour que tu le saches. AUCUNE des techniques énumérées ci-dessus sont pour des sphères seulement;) – Goz
Il n'y a pas de manière rapide et facile. Il y a beaucoup de techniques différentes, qui ont chacune leurs propres avantages et inconvénients. Vous pouvez regarder un projet que j'héberge sur github, qui utilise un code très simple pour créer une ombre, en utilisant la technique du volume d'ombre (http://iuiz.github.com/VolumeShadow/). Cependant, il est écrit en Java, mais il ne devrait pas être difficile de le porter dans un autre langage. Les méthodes les plus importantes pour créer des ombres sont la méthode dite de «projection d'ombre», dans laquelle vous rendez votre scène (avec la caméra à la source lumineuse, dirigée vers chaque objet d'ombre) vers une texture. Et la seconde technique est la méthode de l'ombre voulume (rendue célèbre avec Doom3).
Merci, mais j'ai déjà eu l'idée =) ombres projectives être assez =) – shybovycha
J'ai trouvé un moyen d'utiliser StencilBuffers. Étant un peu confus pendant un moment, j'ai finalement eu l'idée - avec ceci, la chose la plus difficile serait de boucler chaque source de lumière et de projeter tous les objets de la scène. Celui-ci semble plus joli que l'ombrage de la texture et fonctionne plus vite que les ombres volumiques. here et here sont quelques ressources, ce qui m'a aidé à comprendre l'étape de multiplication de la matrice (cela m'a un peu troublé quand je regardais Dino Demo). Pour ma part, cette méthode est la plus facile à comprendre et à utiliser. La seule question à résoudre est de savoir comment calculer la matrice de multiplication.
Bien que cette méthode puisse être modifiée un peu en utilisant les textures as shown here.
Merci à tous! =)
- 1. Ombres via des shadowmaps et d'autres textures - comment combiner? OpenGL
- 2. comment apprendre c base facilement et rapidement?
- 3. Profilage de performances des shaders OpenGL
- 4. Photoshop mode de mélange à OpenGL ES sans shaders
- 5. Flex 4: Traversant la scène Plus facilement
- 6. Comment utiliser les shaders dans OpenGL ES avec iPhone SDK
- 7. Arbres de scène répétés (Java3d/OpenGL)
- 8. Direct3D 10 et la gestion des shaders
- 9. Dessiner rapidement de nombreuses particules texturées dans OpenGL ES 1.1
- 10. Touches détecter dans une scène OpenGL rendu
- 11. Rotation de la scène OpenGL sur 2 axes
- 12. Comment rendre ma scène en tant que masque dans OpenGL?
- 13. Comment puis-je importer et exporter facilement et facilement des données de grande taille dans .NET?
- 14. Comment procédez-vous à la multiplication de la matrice de shaders OpenGL ES 2.0?
- 15. comment créer facilement un schéma xml
- 16. Ajuster la luminosité/contraste/gamma de la scène dans DirectX?
- 17. Comment traduire des objets uniques dans OpenGL 3.x?
- 18. Comment créer une image d'arrière-plan statique dans une scène OpenGL (GLUT)?
- 19. OpenGL ES 1.1: Comment changer la couleur de la texture sans perdre de luminance?
- 20. Optimisation des itérations foreach indépendantes dans .NET3.5
- 21. Empilage des shaders Cg
- 22. OLAP, Dundas, C# .Net: Y at-il des sites à apprendre facilement et rapidement?
- 23. Ombres dynamiques dans WPF?
- 24. Comment créer des boîtes de dialogue modales multiples mais indépendantes dans GTK +?
- 25. shaders GLSL attributs ints
- 26. Comment créer rapidement des alias avec des chemins absolus?
- 27. Comment configurer correctement la scène OpenGL pour visualiser des objets uniques
- 28. Android: widget Galerie et ombres
- 29. Comment démarrer Java3D plus rapidement?
- 30. Shaders avec pygtkglext
BTW- "fonctions standard" ne sont pas vraiment l'expression que vous recherchez. "Fonction fixe" ressemble plus à ça, mais les shaders sont ce qui est "standard" depuis quelques années maintenant. – Kos
Oui, je pensais comment appeler cela quand j'ai composé ma question. C'est réparé maintenant, merci! =) – shybovycha