Differences

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

Link to this comparison view

egc:teme:2022:03 [2022/12/19 01:04]
andrei.lapusteanu
egc:teme:2022:03 [2022/12/20 12:14] (current)
andrei.lapusteanu [Minor edit] Changed "Jucătorul" to "Jucător" in section "Construcția scenei"
Line 1: Line 1:
-<​hidden>​ 
 ======= Tema 3 - SkiFree 3D ======= ======= Tema 3 - SkiFree 3D =======
    
Line 16: Line 15:
 <​html>​ <​html>​
 <p style="​text-align:​center;​margin:​auto;">​ <p style="​text-align:​center;​margin:​auto;">​
-<iframe width="​600" height="​315"​ src="​https://​www.youtube.com/​embed/​wGcWqHtiNZQ"​ title="​YouTube video player"​ frameborder="​0"​ allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture"​ allowfullscreen></​iframe>​+<iframe width="​560" height="​315"​ src="​https://​www.youtube.com/​embed/​wGcWqHtiNZQ"​ title="​YouTube video player"​ frameborder="​0"​ allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture"​ allowfullscreen></​iframe>​
 </p> </p>
 </​html>​ </​html>​
Line 24: Line 23:
 Scena 3D va fi formată din: Scena 3D va fi formată din:
   * Terenul jocului (panta de ski)   * Terenul jocului (panta de ski)
-  * Jucătorul+  * Jucător
   * Obstacole și elemente colectabile   * Obstacole și elemente colectabile
   * Surse de lumină atașate obiectelor 3D   * Surse de lumină atașate obiectelor 3D
Line 46: Line 45:
 În următorul GIF este prezentată scena jocului dintr-un punct fix. Se observă generarea și ștergerea obstacolelor,​ faptul că terenul rămâne cu centrul la poziția jucătorului,​ precum și modalitatea prin care sunt modificate coordonatele de textură ale pantei pentru a reda iluzia de mișcare. În următorul GIF este prezentată scena jocului dintr-un punct fix. Se observă generarea și ștergerea obstacolelor,​ faptul că terenul rămâne cu centrul la poziția jucătorului,​ precum și modalitatea prin care sunt modificate coordonatele de textură ale pantei pentru a reda iluzia de mișcare.
  
-{{ :​egc:​teme:​2022:​egc_2022_t3_terrain_tex_anim.gif?​400 |}}+{{ :​egc:​teme:​2022:​egc_2022_t3_terrain_tex_anim.gif?​550 |}} 
 + 
 +<​note>​ 
 +Precum se observă și în animația de mai sus, terenul trebuie să aibă un unghi de înclinare, obiectele se vor genera pe această pantă înclinată. În demo am setat un unghi de înclinare de 30°. 
 +</​note>​
  
 === Jucătorul === === Jucătorul ===
Line 93: Line 96:
 ===== Poziționarea camerei ===== ===== Poziționarea camerei =====
  
-Camera va fi de tip perspectivă și va urmări jucătorul. Nu există o configurație impusă asupra poziționării acesteia atât timp cât camera implementată este de tip third person. În demo a fost aleasă o configurație a camerei similară jocului clasic – vă recomandăm această variantă – o perspectivă de tip third person din spatele jucătorului ar fi generat ​probleme deoarece obstacolele generate la run-time s-ar fi instanțiat în mod vizibil în fața acestuia (efect de “pop-in”).  ​+Camera va fi de tip perspectivă și va urmări jucătorul. Nu există o configurație impusă asupra poziționării acesteia atât timp cât camera implementată este de tip third person. În demo a fost aleasă o configurație a camerei similară jocului clasic – vă recomandăm această variantă – o perspectivă de tip third person din spatele jucătorului ar fi cauzat ​probleme deoarece obstacolele generate la run-time s-ar fi instanțiat în mod vizibil în fața acestuia (efect de “pop-in”).  ​
  
 ===== Generarea de obstacole și elemente colectabile ===== ===== Generarea de obstacole și elemente colectabile =====
Line 103: Line 106:
   * Algoritmul pentru generarea obstacolelor trebuie să ofere rezultate satisfăcătoare independent de direcția de deplasare a jucătorului   * Algoritmul pentru generarea obstacolelor trebuie să ofere rezultate satisfăcătoare independent de direcția de deplasare a jucătorului
  
-=== Coliziuni ===+===== Coliziuni ​=====
  
 Veți avea de implementat coliziuni între jucător și obstacole și între jucător și cadouri. Veți avea de implementat coliziuni între jucător și obstacole și între jucător și cadouri.
Line 119: Line 122:
 ===== Iluminare ===== ===== Iluminare =====
  
-Iluminare ​scenei se va implementa folosind 3 tipuri de surse de lumină, anume: +Iluminarea ​scenei se va implementa folosind 3 tipuri de surse de lumină, anume: 
-  * O lumină **direcțională** va ilumina toate obiectele din scenă cu aceeași intensitate (ex. Soare). Nu este neapărat nevoie de reprezentarea sursei de lumină print-un obiect, însă se va verifica existența acesteia. Specific luminii de tip direcțional este faptul că vectorul luminii incidente (L) nu depinde de poziția luminii (precum în cazul luminilor de tip point și spot). Așadar, pentru fiecare fragment, iluminarea va fi calculată folosind același vector L (corespunzător direcției luminii). De exemplu, se poate alege ca lumina direcțională să aibă direcția sursei de lumină orientată direct în joc (perpendicular pe XoZ), așadar, direcția s-ar astfel: <code cpp>​glm::​vec3(0.f,​ -1.f, 0.f);</​code>​ +  * O lumină **direcțională** va ilumina toate obiectele din scenă cu aceeași intensitate (ex. Soare). Nu este neapărat nevoie de reprezentarea sursei de lumină print-un obiect, însă se va verifica existența acesteia. Specific luminii de tip direcțional este faptul că vectorul luminii incidente (L) nu depinde de poziția luminii (precum în cazul luminilor de tip point și spot). Așadar, pentru fiecare fragment, iluminarea va fi calculată folosind același vector L (corespunzător direcției luminii). De exemplu, se poate alege ca lumina direcțională să aibă direcția sursei de lumină orientată direct în joc (perpendicular pe XoZ), așadar, direcția s-ar seta astfel: <code cpp>​glm::​vec3(0.f,​ -1.f, 0.f);</​code>​ 
-  * Stâlpii de iluminat vor emite două lumini de tip **spotlight** care vor porni din "​becurile"​ obiectului, respectiv din marginile paralelipiedului superior. Lumina trebuie să se observe pe suprafața zăpezii. De asemenea, orice obiect care trece pe sub stâlpul de iluminat fi iluminat de spot +  * Stâlpii de iluminat vor emite două lumini de tip **spotlight** care vor porni din "​becurile"​ obiectului, respectiv din marginile paralelipiedului superior. Lumina trebuie să se observe pe suprafața zăpezii. De asemenea, orice obiect care trece pe sub stâlpul de iluminat ​va fi iluminat de spot. 
-  * Elementele colectabile și copacii vor avea o sursă de lumină **punctiformă**,​ de diverse culori, poziționată în interiorul sau apropierea obiectului. Componentele unei surse de lumină pot avea aceeași culoare aleasă aleatoriu sau dintr-o gamă mai largă de culori, însă NU toate obiectele vor emite aceeași culoare. În plus, fiecare sursă de lumină punctiformă va avea o arie de acoperire pentru lumina emisă, fapt controlat print-un factor de atenuare constrâns de distanța dintre obiectul luminat și sursa de lumină+  * Elementele colectabile și copacii vor avea o sursă de lumină **punctiformă**,​ de diverse culori, poziționată în interiorul sau apropierea obiectului. Componentele unei surse de lumină pot avea aceeași culoare aleasă aleatoriu sau dintr-o gamă mai largă de culori, însă NU toate obiectele vor emite aceeași culoare. În plus, fiecare sursă de lumină punctiformă va avea o arie de acoperire pentru lumina emisă, fapt controlat print-un factor de atenuare constrâns de distanța dintre obiectul luminat și sursa de lumină.
  
-<note important>​Intensitatea luminilor de tip point și spot **trebuie** atenuată pe baza distanței (dintre sursă și punctul în care se calculează iluminarea). Lumina de tip direcțional **nu** trebuie atenuată. </​note>​+<note important>​Intensitatea luminilor de tip point și spot **trebuie** atenuată pe baza distanței (dintre sursă și punctul în care se calculează iluminarea). Lumina de tip direcțional **nu** trebuie atenuată. ​ 
 + 
 +Precum este prezentat în demo, implementarea voastră trebuie să suporte **randarea mai multor surse de lumină în același frame!** 
 +</​note>​
  
 ===== Calcul și afișare scor ===== ===== Calcul și afișare scor =====
Line 140: Line 146:
  
   * Texturare + asamblare obiecte 3D (55p)   * Texturare + asamblare obiecte 3D (55p)
-    * Desenare teren (15p)+    * Desenare teren înclinat ​(15p)
       * Desenare pătrat (quad) teren (5p)       * Desenare pătrat (quad) teren (5p)
       * Modificare UV-uri pentru a reda efectul deplasării (10p)       * Modificare UV-uri pentru a reda efectul deplasării (10p)
Line 148: Line 154:
     * Jucător (8p)     * Jucător (8p)
     * Pietre (8p)     * Pietre (8p)
-  * Iluminare 40p +  * Iluminare ​(40p
     * Iluminare direcțională (10p)     * Iluminare direcțională (10p)
     * Iluminare de tip spot atașată stâlpilor de iluminat (15p)     * Iluminare de tip spot atașată stâlpilor de iluminat (15p)
     * Iluminare punctiformă atașată copacilor si cadourilor (15p)     * Iluminare punctiformă atașată copacilor si cadourilor (15p)
   * Elemente de gameplay (55p)   * Elemente de gameplay (55p)
-    * Deplasare jucător (10p)+    * Deplasare ​și orientare ​jucător (10p)
     * Coliziune jucător-obstacole (10p)     * Coliziune jucător-obstacole (10p)
     * Coliziune jucător-cadouri (7.5p)     * Coliziune jucător-cadouri (7.5p)
Line 197: Line 203:
   * În cazul în care arhiva tot depășește limita de 50MB (nu ar trebui), puteți să ștergeți și folderul __**/​deps**__ sau __**/​assets**__ întrucât se pot adăuga la testare. Nu este recomandat să faceți acest lucru întrucât îngreunează mult testarea în cazul în care versiunea curentă a bibliotecilor/​resurselor diferă de versiunea utilizată la momentul scrierii temei.   * În cazul în care arhiva tot depășește limita de 50MB (nu ar trebui), puteți să ștergeți și folderul __**/​deps**__ sau __**/​assets**__ întrucât se pot adăuga la testare. Nu este recomandat să faceți acest lucru întrucât îngreunează mult testarea în cazul în care versiunea curentă a bibliotecilor/​resurselor diferă de versiunea utilizată la momentul scrierii temei.
 </​note>​ </​note>​
-</​hidden>​ 
  
egc/teme/2022/03.1671404661.txt.gz · Last modified: 2022/12/19 01:04 by andrei.lapusteanu
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