Differences

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

Link to this comparison view

egc:teme:2019:03 [2019/12/07 12:41]
andrei.lambru
egc:teme:2019:03 [2020/01/14 08:42] (current)
alexandru.gradinaru
Line 1: Line 1:
-<​hidden>​ 
 ======= Tema 3 - Worms 3D ======= ======= Tema 3 - Worms 3D =======
  
Line 15: Line 14:
 </​html>​ </​html>​
  
-====== Construcția terenului =====+===== Construcția terenului =====
  
-===== Harta de inălțimi ​=====+==== Harta de inălțimi ====
  
 Definim o suprafață de baleiere descrisă de funcția: Definim o suprafață de baleiere descrisă de funcția:
Line 37: Line 36:
 {{ :​egc:​teme:​2019:​heightmap.png?​nolink&​200 |}} {{ :​egc:​teme:​2019:​heightmap.png?​nolink&​200 |}}
  
-===== Geometria suport ​=====+==== Geometria suport ====
  
 Pentru a putea crea o suprafață definită de înălțimea dată de textură este necesară o geometrie suport care să cuprindă toate coordonatele $\{x,z\}$ finale. De asemenea, este necesar ca fiecărui vertex să i se asocieze o coordonată de textură, $\{u,v\} \in [0, 1]$, normalizată între limitele pe $x$ și pe $y$ ale geometriei suport. Pentru a putea crea o suprafață definită de înălțimea dată de textură este necesară o geometrie suport care să cuprindă toate coordonatele $\{x,z\}$ finale. De asemenea, este necesar ca fiecărui vertex să i se asocieze o coordonată de textură, $\{u,v\} \in [0, 1]$, normalizată între limitele pe $x$ și pe $y$ ale geometriei suport.
Line 47: Line 46:
 {{ :​egc:​teme:​2019:​terrain2.png?​nolink&​600 |}} {{ :​egc:​teme:​2019:​terrain2.png?​nolink&​600 |}}
  
-===== Calculul normalelor ​=====+==== Calculul normalelor ====
  
 Pentru a putea lumina terenul este necesară calcularea informației de normală. Tehnica pe care o vom folosi se numește "​aproximare prin diferențe finite"​ și utilizează informația vecinilor pixelului din care s-a interogat înălțimea vertexului curent. Pentru a putea lumina terenul este necesară calcularea informației de normală. Tehnica pe care o vom folosi se numește "​aproximare prin diferențe finite"​ și utilizează informația vecinilor pixelului din care s-a interogat înălțimea vertexului curent.
Line 85: Line 84:
 {{ :​egc:​teme:​2019:​terrain4.png?​nolink&​600 |}} {{ :​egc:​teme:​2019:​terrain4.png?​nolink&​600 |}}
  
-====== Deformarea terenului ​======+===== Deformarea terenului =====
  
-===== Buffer-ul hărții de înălțimi ​=====+==== Buffer-ul hărții de înălțimi ====
  
   * Pentru a avea acces la buffer-ul de pixeli al imaginii este necesar ca aceasta să fie încărcată direct cu librăria [[https://​github.com/​nothings/​stb|stb_image]]. Aceasta se află deja în framework și cu ajutorul ei se poate încărca întreaga matrice de pixeli a unui fișier. Se poate folosi direct imaginea din această pagină. <code cpp>#​include <​stb/​stb_image.h>​   * Pentru a avea acces la buffer-ul de pixeli al imaginii este necesar ca aceasta să fie încărcată direct cu librăria [[https://​github.com/​nothings/​stb|stb_image]]. Aceasta se află deja în framework și cu ajutorul ei se poate încărca întreaga matrice de pixeli a unui fișier. Se poate folosi direct imaginea din această pagină. <code cpp>#​include <​stb/​stb_image.h>​
Line 99: Line 98:
   * Pentru modificarea texturii pur și simplu se modifică o zonă de pixeli din imagine, în interiorul acestui buffer și se reîncarcă buffer-ul în procesorul grafic cu directiva de mai sus.   * Pentru modificarea texturii pur și simplu se modifică o zonă de pixeli din imagine, în interiorul acestui buffer și se reîncarcă buffer-ul în procesorul grafic cu directiva de mai sus.
  
-====== Gameplay ​======+===== Gameplay =====
  
 Jocul va fi multiplayer local în care pe rând fiecare jucător va prelua controlul a două personaje aflate în zone diferite ale terenului. Fiecare jucător va avea la dispoziție un singur proiectil pe tură. Acesta va avea o cameră third-person asupra personajului pentru a putea potrivi ținta. Odată decis, la apasărea butonului click stânga de la mouse, proiectilul este lansat și este urmărit de cameră fără ca jucătorul să mai aibă control. La impactul proiectilului cu terenul, acesta va lăsa în urmă un crater. La urmatoarea tură se schimbă personajul. Jocul va fi multiplayer local în care pe rând fiecare jucător va prelua controlul a două personaje aflate în zone diferite ale terenului. Fiecare jucător va avea la dispoziție un singur proiectil pe tură. Acesta va avea o cameră third-person asupra personajului pentru a putea potrivi ținta. Odată decis, la apasărea butonului click stânga de la mouse, proiectilul este lansat și este urmărit de cameră fără ca jucătorul să mai aibă control. La impactul proiectilului cu terenul, acesta va lăsa în urmă un crater. La urmatoarea tură se schimbă personajul.
  
-====== Bonusuri posibile ​======+===== Bonusuri posibile =====
  
   * Crearea de efecte speciale la impactul proiectilului cu terenul   * Crearea de efecte speciale la impactul proiectilului cu terenul
Line 112: Line 111:
  
 ===== Notare (150p) ===== ===== Notare (150p) =====
-  * Construcție teren + iluminare cu calcul de normale ​(50p)+  * Construcție teren (50p)
   * Deformare teren (50p)   * Deformare teren (50p)
   * Cameră third person + lansare proiectil (20p)   * Cameră third person + lansare proiectil (20p)
-  * Deplasare proiectil + cameră observație (20p)+  * Deplasare proiectil ​+ crater ​+ cameră observație (20p)
   * Lumini spot deasupra celor două personaje (10p)   * Lumini spot deasupra celor două personaje (10p)
  
Line 133: Line 132:
 </​note>​ </​note>​
  
-</​hidden>​ 
egc/teme/2019/03.1575715267.txt.gz · Last modified: 2019/12/07 12:41 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