Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pgapi:teme:2025:01 [2025/11/15 22:34]
andrei.lambru
pgapi:teme:2025:01 [2025/12/03 13:47] (current)
robert.caragicu
Line 3: Line 3:
   * **Responsabili:​** Robert Caragicu, Silviu Stăncioiu, Cristian Lambru   * **Responsabili:​** Robert Caragicu, Silviu Stăncioiu, Cristian Lambru
   * **Lansare:​** 16 noiembrie 2025   * **Lansare:​** 16 noiembrie 2025
-  * **Termen de predare:​** ​decembrie 2025, ora 23:55 +  * **Termen de predare:​** ​11 decembrie 2025, ora 23:55 
   * **Regulament:​** https://​ocw.cs.pub.ro/​courses/​pgapi/​regulament_general   * **Regulament:​** https://​ocw.cs.pub.ro/​courses/​pgapi/​regulament_general
   * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!**   * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!**
Line 24: Line 24:
  
 În cadrul acestei teme veți folosi mai multe suprafețe de rotație și translație. Se vor folosi Geometry Shaders descrise în [[pgapi:​laboratoare:​04|]]. Vom modifica generarea din cadrul laboratorului în 3 moduri importante: În cadrul acestei teme veți folosi mai multe suprafețe de rotație și translație. Se vor folosi Geometry Shaders descrise în [[pgapi:​laboratoare:​04|]]. Vom modifica generarea din cadrul laboratorului în 3 moduri importante:
-  - Geometria generată va fi multiplicată pentru a desena într-un singur pas pe toate fețele unui cubemap. Cubemap-ul va fi folosit pentru a desena reflexia mediului înconjurător pe ecranul televizorului (capitolul //​Reflexiile incăperii pe ecran//).+  - Geometria generată va fi multiplicată pentru a desena într-un singur pas pe toate fețele unui cubemap. Cubemap-ul va fi folosit pentru a desena reflexia mediului înconjurător pe ecranul televizorului (capitolul //​Reflexiile incăperii pe ecranul televizorului//).
   - Coordonate UV vor fi calculate fiecărui vârf pentru a permite desenarea de suprafețe texturate.   - Coordonate UV vor fi calculate fiecărui vârf pentru a permite desenarea de suprafețe texturate.
   - Fiecare vârf va avea calculată o normală pentru a permite atât desenarea suprafețelor iluminate de lampă cât și desenarea reflexiilor pe ecranul televizorului.   - Fiecare vârf va avea calculată o normală pentru a permite atât desenarea suprafețelor iluminate de lampă cât și desenarea reflexiilor pe ecranul televizorului.
  
-//Atenție că acest geometry shader-ul trimite mai multe informații față de cel din [[pgapi:​laboratoare:​04|]]. Astfel numărul maxim de vârfuri pe o fâșie va fi mai mic (încercați o valoare de 70).//+//​Atenție ​la faptul ​că acest geometry shader trimite mai multe informații față de cel din [[pgapi:​laboratoare:​04|]]. Astfel numărul maxim de vârfuri pe o fâșie va fi mai mic (încercați o valoare de 70).//
  
 //Funcția de eliminare a fețelor auto-obturate (face culling) va fi dezactivată pentru a permite vederea interiorului obiectelor.//​ //Funcția de eliminare a fețelor auto-obturate (face culling) va fi dezactivată pentru a permite vederea interiorului obiectelor.//​
Line 87: Line 87:
 Vaza este generată dintr-o suprafață de rotație. Vaza este generată dintr-o suprafață de rotație.
  
-===== Iluminarea ​incaperii ​=====+===== Iluminarea ​încăperii ​=====
  
-Incaperea ​este iluminata ​de lampa care se afla pe masa din partea ​opusa celei pe care se afla televizorul ​si vazele. Se utilizeaza ​sursa de lumina ​de tip spot, similara ​cu cea utilizata in [[pgapi:​laboratoare:​01|]]. ​Directia ​de iluminare trebuie ​orientata ​conform geometriei ​lampii. Suplimentar,​ intensitatea ​iluminarii lampii ​trebuie ​sa fluctueze conform unui sablon ​de modificare similar cu cel din filmuletul ​demonstrativ.+Încăperea ​este iluminată ​de lampa care se află pe masa din partea ​opusă ​celei pe care se află televizorul ​și vazele. Se utilizează ​sursă ​de lumină ​de tip spot, similară ​cu cea utilizată în [[pgapi:​laboratoare:​01|]]. ​Direcția ​de iluminare trebuie ​orientată ​conform geometriei ​lămpii. Suplimentar,​ intensitatea ​iluminării lămpii ​trebuie ​să fluctueze conform unui șablon ​de modificare similar cu cel din filmulețul ​demonstrativ ​de mai sus.
  
-Similar cu abordarea utilizata ​in [[pgapi:​laboratoare:​01|]],​ iluminarea trebuie ​sa produca ​umbre pe baza obiectelor din incapere+Similar cu abordarea utilizata ​în [[pgapi:​laboratoare:​01|]],​ iluminarea trebuie ​să producă ​umbre pe baza obiectelor din încăpere, după cum se poate observa în imaginea de mai jos.
  
 +{{ :​pgapi:​teme:​2025:​shadows.png?​600 |}} 
  
-===== Artificiile ​de ecranul televizorului =====+===== Artificiile ​pe ecranul televizorului =====
  
 Ecranul televizorului va afișa constant un show de artificii. Pentru aceasta se va folosi un framebuffer în care se va desena un sistem de particule configurat astfel încât să arate ca niște artificii. Textura de culoare din framebuffer va fi afișată pe ecranul televizorului. Ecranul televizorului va afișa constant un show de artificii. Pentru aceasta se va folosi un framebuffer în care se va desena un sistem de particule configurat astfel încât să arate ca niște artificii. Textura de culoare din framebuffer va fi afișată pe ecranul televizorului.
Line 108: Line 109:
  
 {{ :​pgapi:​teme:​2025:​fireworks_gif.gif?​300 |}} {{ :​pgapi:​teme:​2025:​fireworks_gif.gif?​300 |}}
- 
  
 ===== Reflexiile încăperii pe ecranul televizorului ===== ===== Reflexiile încăperii pe ecranul televizorului =====
  
-Din centrul televizorului se va randa întreaga scenă (mai puțin televizorul și ecranul acestuia) într-un cubemap. Obiectele desenate în acest cubemap ​nu este necesar ​să casteze ​și umbre. Totuși, iluminarea lămpii trebuie ​să fie prezentă.+Din centrul televizorului se va randa întreaga scenă (mai puțin televizorul și ecranul acestuia) într-un cubemap. Obiectele desenate în acest cubemap ​trebuie ​să fie luminate ​și să casteze umbre.
  
-{{ :​pgapi:​teme:​2025:​room_cubemap.gif?300 |}}+{{ :​pgapi:​teme:​2025:​room_cubemap_2.gif?300 |}}
  
 Pe ecranul televizorului se va folosi acest cubemap pentru a reflecta încăperea (vezi [[pgapi:​laboratoare:​06|]]) Pe ecranul televizorului se va folosi acest cubemap pentru a reflecta încăperea (vezi [[pgapi:​laboratoare:​06|]])
  
-{{ :​pgapi:​teme:​2025:​tv_reflection.png?300 |}}+{{ :​pgapi:​teme:​2025:​tv_reflection_2.png?300 |}}
  
 Pentru ca televizorul să afișeze și show-ul de artificii, dar și reflexiile se va face o interpolare liniară între culorile preluate din cele două texturi (textura în care se randeaza artificiile și cubemap-ul reflexiilor) cu un factor de interpolare constant (ex: 0.25). Exemplu de implementare:​ Pentru ca televizorul să afișeze și show-ul de artificii, dar și reflexiile se va face o interpolare liniară între culorile preluate din cele două texturi (textura în care se randeaza artificiile și cubemap-ul reflexiilor) cu un factor de interpolare constant (ex: 0.25). Exemplu de implementare:​
  
-    ​out_color = mix(texture(color_texture,​ uv), texture(texture_cubemap,​ cubemapDir),​ 0.25);+<code glsl> 
 +out_color = mix(texture(color_texture,​ uv), texture(texture_cubemap,​ cubemapDir),​ 0.25); 
 +</​code>​
     ​     ​
 Pentru combinarea celor două texturi vă puteți juca cu formula folosită pentru a obține ce rezultate vreți, dar important este ca pe suprafața ecranului să fie prezente și reflexiile și artificiile. Pentru combinarea celor două texturi vă puteți juca cu formula folosită pentru a obține ce rezultate vreți, dar important este ca pe suprafața ecranului să fie prezente și reflexiile și artificiile.
  
 +<note important>​
 +Pentru facilitarea vizualizării efectului de reflexie pe suprafața ecranului de la televizor, acesta din urmă trebuie să poată fi rotit în jurul axei OY, în ambele sensuri, prin apăsarea butoanelor 1 și 2 de la tastatură. Reflexia pe ecran trebuie să fie coerentă cu rotația pe care o are ecranul televizorului.
 +</​note>​
 ===== Notare (250) ===== ===== Notare (250) =====
-   ​* ​Desenarea geometriei scenei (100p)+  - Desenarea geometriei scenei (100p)
        * Geometria mesei - 30p        * Geometria mesei - 30p
          * Blatul mesei - 20p          * Blatul mesei - 20p
Line 135: Line 140:
        * Geometria vazei - 10p        * Geometria vazei - 10p
        * Asamblarea încăperii din obiecte - 20p        * Asamblarea încăperii din obiecte - 20p
-  ​Iluminarea încăperii (50p)+  ​Iluminarea încăperii (50p)
     * Desenarea geometriei scenei cu texturi și iluminare de la lampă - 20p     * Desenarea geometriei scenei cu texturi și iluminare de la lampă - 20p
     * Desenarea umbrelor pentru obiectele din scenă - 30p     * Desenarea umbrelor pentru obiectele din scenă - 30p
-  ​Desenarea artificiilor pe ecranul televizorului (50p)+  ​Desenarea artificiilor pe ecranul televizorului (50p)
     * Desenarea artificiilor - 40p     * Desenarea artificiilor - 40p
     * Desenarea articiilor pe ecranul televizorului - 10p     * Desenarea articiilor pe ecranul televizorului - 10p
-  ​Desenarea reflexiei obiectelor din scenă în ecranul televizorului (50p)+  ​Desenarea reflexiei obiectelor din scenă în ecranul televizorului (50p) 
 + 
 +<note warning>​ 
 +Rezolvările cerințelor de la punctul 2 sunt punctate doar în situația în care se iluminează,​ respectiv se creează umbre, cu geometrie realizată prin suprafețe de translație și de rotație.
  
 +Similar, rezolvarea cerinței 4 este punctată doar în situația în care pe ecranul televizorului este reflectată geometrie realizată prin suprafețe de translație și de rotație.
 +</​note>​
 ===== Bonusuri posibile ===== ===== Bonusuri posibile =====
-  * Introducerea de alte obiecte create prin utilizarea ​suprafetelor ​de translatie si rotatie+  * Introducerea de alte obiecte create prin utilizarea ​suprafețelor ​de translație și de rotație
   * Schimbarea tematicii lumii cu observatia ca se pastreaza geometria ecranului, artificiile de pe ecran, reflexiile, iluminarea si umbrele   * Schimbarea tematicii lumii cu observatia ca se pastreaza geometria ecranului, artificiile de pe ecran, reflexiile, iluminarea si umbrele
   * Orice aduce imbunatatiri vizuale scenei   * Orice aduce imbunatatiri vizuale scenei
pgapi/teme/2025/01.1763238887.txt.gz · Last modified: 2025/11/15 22:34 by andrei.lambru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0