Consentitemi di avere una mesh (ad esempio una sfera) al centro della stanza, piena di cubi e una fonte di luce. Come posso rendere semplice e veloce il cast di shadow in OpenGL, usando solo le funzioni "standard" (fisse)? Nota: il risultato deve contenere anche il cubo e le ombre delle sfere.Come creare ombre facili e indipendenti dalla scena senza ombreggiatori in OpenGL
risposta
Se è possibile generare una sagoma della sfera, è possibile utilizzare shadow volumes. L'hardware nVidia ha anche supportato la funzione fissa shadow mapping per un periodo giusto.
I volumi ombra hanno lo svantaggio di requisiti di riempimento molto elevati. Le mappe shadow possono essere migliori ma richiedono un passaggio extra.
Se si sta proiettando su un singolo piano, potrebbe essere più facile solo per project the object on to a plane.
Il punto è usare un algoritmo universale - non solo per la silhouette della sfera =) Ma grazie comunque! =) – shybovycha
Scusa, non ho cliccato un secondo link ... Sì, avevi ragione, la shadow mapping è abbastanza buona e l'ho scoperta da solo (stupido) =) – shybovycha
@shybovycha: Solo per quello che sai. NESSUNA delle tecniche sopra elencate sono solo per le sfere;) – Goz
Non esiste un modo facile e veloce. Ci sono molte tecniche diverse, ognuna delle quali ha i suoi pro e contro. Puoi guardare un progetto che ospita su github, che usa un codice molto semplice per creare un'ombra, usando la tecnica del volume d'ombra (http://iuiz.github.com/VolumeShadow/). Tuttavia è scritto in Java, ma non dovrebbe essere difficile portarlo in qualsiasi altra lingua.
I modi più importanti per creare le ombre sono il cosiddetto metodo "shadow mapping", in cui si esegue il rendering della scena (con la fotocamera alla sorgente luminosa, diretta a ciascun oggetto di fusione shadow) su una trama. E la seconda tecnica è il metodo voulume ombra (reso famoso con Doom3).
Grazie, ma ho già avuto l'idea =) Le ombre proiettive sarebbero essere abbastanza =) – shybovycha
Ho trovato un modo utilizzando StencilBuffers. Essendo un po 'confuso per un po', alla fine ho avuto l'idea - con questa cosa più difficile sarebbe passare attraverso ogni fonte di luce e proiettare tutti gli oggetti scena. Questo sembra più bello di texture shadowing e funziona più velocemente delle ombre volumiche. here e here sono alcune risorse che mi hanno aiutato a capire il passo della moltiplicazione della matrice (mi ha confuso un po 'quando stavo guardando attraverso la demo di dino). Per quanto mi riguarda, questo metodo è più facile da capire e da usare. L'unica domanda rimasta da risolvere è come calcolare la matrice di moltiplicazione.
Anche se questo metodo potrebbe essere modificato un po 'usando le textures as shown here.
Grazie a tutti! =)
- 1. Come posso creare ombre economiche in OpenGL?
- 2. openGL: linee con ombreggiatori
- 3. Filtro gaussiano con ombreggiatori OpenGL
- 4. Come creare ombre personalizzate in robolectric 3.0?
- 5. Lingue indipendenti dalla piattaforma
- 6. Scorrimento/zoom di una scena in OpenGL e suddivisione
- 7. Linea testurizzata uniforme con ombreggiatori OpenGL ES 2.0
- 8. Gestione risorse indipendenti dalla piattaforma
- 9. Come disegnare linee morbide in scena 2D con OpenGL senza utilizzare GL_LINE_SMOOTH?
- 10. Caricamento del modello 3d nella scena OpenGL
- 11. Recupera dimensione finestra senza ombre Windows
- 12. Cosa sono i campionatori di ombre in OpenGL e quali sono gli usi possibili per loro?
- 13. Cosa sono gli ombreggiatori Vertex e Pixel?
- 14. UIVIew Raggio d'angolo e ombre?
- 15. Come usare Javafx senza opengl?
- 16. OpenGL senza finestre
- 17. OpenGL: creare complessi e levigate poligoni
- 18. Ombreggiature OpenGL ES per sprite 2D
- 19. Modalità di fusione Photoshop per OpenGL ES senza shader
- 20. ffmpeg e opengl
- 21. Presentare una scena in SpriteKit senza scartare la precedente?
- 22. Grafici PHP/Javascript rapidi e facili
- 23. SceneKit - Illuminazione e ombre di lancio
- 24. antialiasing OpenGL senza il buffer di accumulo
- 25. OpenGL senza scheda grafica
- 26. Eseguibili indipendenti posizione e Android Lollipop
- 27. Come creare un terreno 2D con opengl?
- 28. Come creare l'effetto lente fisheye da openGL?
- 29. Grafico scena 3D per .NET
- 30. testo semplice in OpenGL (senza GLUT)
BTW- "funzioni standard" non sono proprio l'espressione che stai cercando. "Funzione fissa" è più simile, ma gli shader sono ciò che è stato "standard" per diversi anni. – Kos
Sì, stavo pensando a come chiamare questo quando ha composto la mia domanda. Adesso è risolto, grazie! =) – shybovycha