Differences

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

Link to this comparison view

ipg:tema:2025 [2025/12/08 15:56]
andrei.lambru
ipg:tema:2025 [2025/12/08 20:44] (current)
andrei.lambru
Line 6: Line 6:
   * **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ă!**
  
-În cadrul acestei teme, **veți avea de implementat un joc în care aveți libertate totală în conceptia ​și alegerea tematicii lui vizuale** :) . Jocul realizat de voi trebuie să conțină un set de elemente vizuale obligatorii,​ dar pe care puteți să le adaptați la tematica aleasă de voi. Mai jos, aveți descrierea acestor elemente vizuale, împreună cu câteva indicații de implementare. Mult succes :) ! +În cadrul acestei teme, **veți avea de implementat un joc în care aveți libertate totală în concepția ​și alegerea tematicii lui vizuale** :) . Jocul realizat de voi trebuie să conțină un set de elemente vizuale obligatorii,​ dar pe care puteți să le adaptați la tematica aleasă de voi. Mai jos, aveți descrierea acestor elemente vizuale, împreună cu câteva indicații de implementare. Mult succes :) !
- +
-<​hidden>​ +
-Elementele vizuale obligatorii sunt: +
-  * Existenta a cel putin 5 elemente de geometrie create din cod si pentru care se aplica texturi si se calculeaza iluminarea;​ +
-    * Un element construit din cel putin un cub redimensionat;​ +
-    * Un element construit din cel putin 3 cuburi redimensionate;​ +
-    * Un element construit din cel putin 3 cuburi redimensionate,​ in care cel putin unul dintre acestea are o animatie continua; +
-    * Un element construit din cel putin 3 cuburi redimensionate,​ ce contine cel putin o sursa de lumina; +
-    * Un element construit din cel putin 3 cuburi redimensionate,​ ce contine cel putin o sursa de lumina cu un comportament de iluminare ce se modifica continuu; +
-  * Existenta a cel putin unui personaj care sa aiba un set de animatii continue; +
-  * Existenta unei curburi pentru geometria lumii; +
-  * Existenta unor multiple surse de iluminare de culori diferite; +
-    * Cel putin 10 surse de lumina pentru care nu se creeaza umbre la orice moment de timp; +
-    * Cel putin 3 surse de luminca pentru care se calculeaza umbre la orice moment de timp; +
-  * Existenta unui efect de post-procesare. +
-</​hidden>​+
  
 <note tip> <note tip>
 Concepția jocului este //**în totalitate**//​ la alegerea voastră. Tema aceasta nu impune niciun joc propriu-zis. Va trebui sa concepeți voi unul :) . De asemenea, tematica jocului este în totalitate la alegerea voastră. Concepția jocului este //**în totalitate**//​ la alegerea voastră. Tema aceasta nu impune niciun joc propriu-zis. Va trebui sa concepeți voi unul :) . De asemenea, tematica jocului este în totalitate la alegerea voastră.
  
-În total, 1 punct din cele 3 puncte ale temei, după cum se poate vedea mai jos, se alocă pentru comportamentul de joc ales de voi. Astfel, vă incurajez ​să fiți cât mai creativi :) !+În total, 1 punct din cele 3 puncte ale temei, după cum se poate vedea în cadrul baremului de mai jos, se alocă pentru comportamentul de joc ales de voi și pentru complexitatea vizuală a jocului. Astfel, vă încurajez ​să fiți cât mai creativi :) !
  
-Punctajul pentru această temă poate fi extins până la 4 puncte. Pe lângă cele 3 puncte de bază, ​orice rezultat ​bun din punct de vedere ​calitativ ​poate crește ​cu până la 1 punct bonus.+Punctajul pentru această temă poate fi extins până la 4 puncte. Pe lângă cele 3 puncte de bază, ​un joc cu o calitate ​bună, în special ​din punct de vedere ​al elementelor de programare a graficii, ​poate obține ​cu până la 1 punct bonus.
 </​note>​ </​note>​
  
Line 36: Line 20:
 ==== Funcționalități obligatorii (3 puncte) ==== ==== Funcționalități obligatorii (3 puncte) ====
  
-  * Desenare ​elemente vizuale ​(0.5p total) +  * Desenare ​obiecte ​(0.5p total) 
-    * Desenare geometrie ​element ​- 0.1p per element, conform descrierii de mai jos +    * Desenare geometrie ​obiecte ​- 0.1p per obiect, conform descrierii de mai jos 
-  * Curbura ​geometrie lume (0.3p) +  * Curbură ​geometrie lume virtuală ​(0.3p) 
-  * Animatii ​personaj (0.75p total)+  * Animații ​personaj (0.75p total)
     * Desenare geometrie personaj - 0.15p     * Desenare geometrie personaj - 0.15p
-    * Animatii ​personaj - 0.2p per animatie+    * Animații ​personaj - 0.2p per animație
   * Iluminare geometrie (0.45p total)   * Iluminare geometrie (0.45p total)
-    * Iluminare ​geometrie fara umbre - 0.15p +    * Iluminare ​cu cel puțin 10 surse de lumină la orice moment de timp, pentru care nu se calculează ​umbre - 0.15p 
-    * Iluminare cu cel putin 3 surse de lumina ​pentru care se calculeaza umbrele ​- 0.3p +    * Iluminare cu cel puțin ​3 surse de lumină la orice moment de timp, pentru care se calculează umbre - 0.3p 
-  * Comportament de joc, complexitate constructie ​geometrie, creativitate in utilizarea tehnicilor studiate ​in cadrul acestui curs :) - 1p+  ​* Joc (1p total) 
 +    ​* Comportament de joc - 0p...0.5p 
 +    * Complexitate construcție ​geometrie ​- 0p...1p 
 +    * Creativitate în utilizarea tehnicilor studiate ​în cadrul acestui curs :) - 0p...1p 
 + 
 +<note tip> 
 +Ultima cerință din barem are punctaj dinamic. Altfel spus, puteți obține totalul de 1 punct pe baza complexității doar a unui subset din cerințele menționate. 
 + 
 +Astfel, vă puteți concentra pe anumite aspecte ale jocului mai mult decât pe altele, cu observația că elementele ce țin de domeniul de programare a graficii vor fi notate mai consistent față de cele ce țin de domeniul de programare a jocurilor video. De asemenea, aspectul vizual obținut în urma utilizării tehnicilor studiate în cadrul acestui curs vor fi punctate consistent :) . 
 +</​note>​
  
 ===== Detalii de implementare ===== ===== Detalii de implementare =====
  
-==== Construcție ​elemente vizuale ​====+==== Construcție ​obiecte ​====
  
-Trebuie ​sa realizati ​cel putin **5 elemente vizuale**.+Trebuie ​să construiți geometria pentru ​cel puțin //**5 obiecte**// din lumea virtuală a jocului.
  
 <​note>​ <​note>​
-Pentru simplitate, vom specifica aici faptul ​ca toate elementele vizuale ​descrise mai jos: +Pentru simplitate, vom specifica aici faptul ​că toate obiectele ​descrise mai jos: 
-  * Trebuie construite exclusiv din cod. Nu este permisa incarcarea ​unor modele 3D din fisiere ​pentru ​realizarea lor+  * Trebuie construite exclusiv din cod. NU este permisă încărcarea ​unor modele 3D din fișiere ​pentru ​desenarea obiectelor obligatorii
-  * Trebuie ​sa fie desenate ​prin aplicarea unei texturi; +  * Trebuie ​să fie colorate ​prin aplicarea ​a cel puțin ​unei texturi; 
-  * Complexitatea ​geometriei este descrisa ​prin cuburi/​paralelipipede,​ dar pentru ​cresterea ​punctajului de la ultima ​cerinta ​din barem, se incurajeaza ​utilizarea unor forme geometrice mai complexe: cilindrulconulsfera :) . +  * În descrierea de mai jos, complexitatea ​geometriei este descrisă ​prin cuburi/​paralelipipede,​ dar pentru ​creșterea ​punctajului de la ultima ​cerință ​din barem, se încurajează ​utilizarea unor forme geometrice mai complexe ​precum discurile de cerccilindriiconurile ​:) ..
-  * Asezarea ​componentelor din care este realizat un element vizualimpreuna ​cu texturile aplicate la desenarea componentelor,​ trebuie ​sa fie consistente cu comportamentul ​si tematica jocului. Altfel spus, toate elementele vizuale ​trebuie ​sa aiba sens in lumea virtuala ​a jocului, nu doar sa fie introduse pentru respectarea ​cerintei ​minime :) .+  * Așezarea ​componentelor din care este realizat un obiectîmpreună ​cu texturile aplicate la desenarea componentelor,​ trebuie ​să fie consistente cu comportamentul ​și tematica jocului. Altfel spus, toate obiectele ​trebuie ​să aibă sens în lumea virtuală ​a jocului, nu doar să fie introduse pentru respectarea ​cerinței ​minime :) .
 </​note>​ </​note>​
  
-Cel mai simplu ​element vizual ​din lume poate fi realizat sub forma unui cub sau unui paralelipiped. Paralelipipedul se poate obtine ​din geometria unui cub, prin desenarea celui din urma cu o transformare de redimensionare neuniforma.+Cel mai simplu ​obiect ​din lumea virtuală a jocului ​poate fi realizat sub forma unui cub sau unui paralelipiped. Paralelipipedul se poate obține ​din geometria unui cub, prin desenarea celui din urmă cu o transformare ​neuniformă ​de modificare de scară.
  
-Urmatorul element vizual ​ce trebuie construit este construit ​din cel putin 3 cuburi sau paralelipipede.+Următorul obiect ​ce trebuie construit este compus ​din cel puțin ​3 cuburi sau paralelipipede.
  
-Un alt element vizual ​trebuie ​sa fie construit din cel putin 3 cuburi sau paralelipipede,​ similar cu cel descris anterior, dar in situatia ​acestuia, cel putin componenta ​din care este construit trebuie ​sa aiba animatie continua.+Un alt obiect ​trebuie ​să fie construit din cel puțin ​3 cuburi sau paralelipipede,​ similar cu cel descris anterior, dar în situația ​acestuia, cel puțin ​componentă ​din care este construit trebuie ​să aibă animație continuă.
  
-Un alt element element vizual ​trebuie construit din cel putin 3 cuburi sau paralelipipede ​si trebuie ​sa contina ​cel putin sursa de lumina atasata ​de el. Aceasta sursa de lumina ​trebuie ​sa lumineze ​orice obiect din lumea virtuala.+Un alt obiect ​trebuie construit din cel puțin ​3 cuburi sau paralelipipede ​și trebuie ​să conțină ​cel puțin ​sursă ​de lumină atașată ​de el. Această sursă ​de lumină ​trebuie ​să poată lumina ​orice obiect din lumea virtuală.
  
-Similar cu elementul vizual ​descris ​mai sus, ultimul ​element vizual ​obligatoriu trebuie ​sa fie construit din cel putin 3 cuburi sau paralelipipede ​si sa contina ​cel putin sursa de lumina atasata ​de el, care sa aiba un comportament de iluminare ce se modifica ​continuu. Posibile ​modificari ​ale sursei ​comportamentului de iluminare pot fi schimbarea culorii/intensitatii ​de iluminare.+Similar cu obiectul ​descris ​anterior, ultimul ​obiect ​obligatoriu trebuie ​să fie construit din cel puțin ​3 cuburi sau paralelipipede ​și să conțină ​cel puțin ​sursă ​de lumină atașată ​de el, care să aibă un comportament de iluminare ce se modifică ​continuu. Posibile ​modificări ​ale comportamentului de iluminare pot fi schimbarea culorii/intensității ​de iluminare.
  
 <note tip> <note tip>
-O parte din punctajul ultimei ​cerinte ​din barem este proportionala ​cu complexitatea geometriei construite :) . Astfel, ​va incurajez sa va folositi ​creativitatea pentru crearea unei lumi virtuale ​cat mai placute si interesante,​ conform tematicii alese de voi pentru joc.+O parte din punctajul ultimei ​cerințe ​din barem este proporțională ​cu complexitatea geometriei construite :) . Astfel, ​//**vă încurajez să vă folosiți ​creativitatea pentru crearea unei lumi virtuale ​cât mai plăcute și interesante**//, conform tematicii alese de voi pentru joc.
 </​note>​ </​note>​
  
 ==== Curbură geometrie ==== ==== Curbură geometrie ====
  
-Lumea virtuala in care se desfasoara actiunea ​jocului trebuie ​sa contina ​curbura intr-o directie aleasa ​de voi.+Lumea virtuală în care se desfășoară acțiunea ​jocului trebuie ​să conțină ​curbură într-o direcție aleasă ​de voi.
  
-<​note ​tip>+<​note>​
 Pentru a crea efectul vizual de curbură a geometriei, se utilizează o abordare simplă ce oferă rezultate satisfăcătoare :). Pentru a crea efectul vizual de curbură a geometriei, se utilizează o abordare simplă ce oferă rezultate satisfăcătoare :).
  
-Rezultatul este doar un efect vizual ce curbează geometria în jurul personajului, astfel că acesta poate ajunge la limita geometriei lumii, altfel spus la capătul ei și să și depășească acest capăt :) De asemenea, este important de menționat că pentru calculele de iluminare NU se ține cont de calculele de creare a curburii geometriei.+Rezultatul este doar un efect vizual ce curbează geometria în jurul personajului/camereiEste important de menționat ​faptul ​că pentru calculele de iluminare NU se ține cont de calculele de creare a curburii geometriei.
 </​note>​ </​note>​
  
Line 95: Line 88:
 <note tip> <note tip>
   * $Pozitie_v$ - poziția în spațiul lumii a vârfului procesat de vertex shader   * $Pozitie_v$ - poziția în spațiul lumii a vârfului procesat de vertex shader
-  * $Pozitie_{camera}$ - poziția în spațiul lumii a personajului controlat de jucător +  * $Pozitie_{camera}$ - poziția în spațiul lumii a camerei 
-  * $\vec{control}$ - un vector de control ​a directiei in care se realizeaza ​curbura +  * $\vec{control}$ - un vector de control ​al direcției în care se realizează ​curbura
-    * In situatia in care se doreste realizarea curburii in jos, se utilizeaza vectorul ​ $\vec{control}= ​ \begin{bmatrix} 0 & -1 & 0 \end{bmatrix} $ . +
-    * In situatia in care se doreste realizarea curburii in stanga jos, vectorul este   ​$\vec{control}= ​ \begin{bmatrix} -1 & -1 & 0 \end{bmatrix} $ +
   * $factorCurbura$ - un factor ce controlează curbura geometriei   * $factorCurbura$ - un factor ce controlează curbura geometriei
 </​note>​ </​note>​
  
-Factorul ​de curbură este proporțional cu dimensiunea obiectelor din lume. O valoare posibila ​pentru ​factorul ​de curbura este 0.02.+Câteva exemple ​de valori ​pentru ​vectorul ​de control pot fi: 
 +  * În situația în care se dorește realizarea curburii în direcția jos, relativ la axele de coordonate, se utilizează vectorul ​ $\vec{control}= ​ \begin{bmatrix} ​& -1 & 0 \end{bmatrix} $ . 
 +  * În situația în care se dorește realizarea curburii în stânga-jos,​ relativ la axele principale, vectorul este   ​$\vec{control}= ​ \begin{bmatrix} -1 & -1 & 0 \end{bmatrix} $ .
  
-==== Animatii ​====+Factorul de curbură este proporțional cu dimensiunea obiectelor din lume. O valoare posibilă pentru factorul de curbură este 0.02. 
 + 
 +==== Animații ​==== 
 + 
 +În imaginile și animațiile de mai jos, se prezintă o versiune minimă a personajului pe care trebuie să îl creați cu animații continue. Personajul realizat de voi poate fi de orice tip, de la o creatură bipedă, la un animăluț/​vehicul.
  
 === Geometrie personaj === === Geometrie personaj ===
  
-In imaginile si animatiile de mai jos, se prezinta o versiune minima a personajului ​pe care trebuie ​sa il creati cu animatii. Acesta poate sa fie de orice tip, nu doar biped, cum este cel prezentat in continuare. Altfel spus, personajul poate fi o orice, de la o creatura bipeda, la un animalut/​vehicul. Personajul trebuie sa fie construit ​minim din urmatoarea geometrie:+Geometria ​personajului trebuie ​să fie construită din următoarele componente:
   * Un corp;   * Un corp;
-  * Cel putin 2 membre utilizate pentru deplasare;​ +  * Cel puțin ​elemente, pe care putem să le numim membre ​inferioare, ce sunt utilizate pentru deplasare;​ 
-  * Cel putin alte 2 membre ce trebuie ​sa fie utilizate ​in cadrul ​animatiilor.+  * Cel puțin ​alte 2 elemente, pe care putem să le numim membre ​superioare, ​ce trebuie ​să fie utilizate ​în cadrul ​animațiilor.
  
-Similar precum la geometria elementelor vizuale din scena, desenarea personajului trebuie ​realizata ​prin procesul de aplicare a unei texturi consistente cu tematica jocului ​si trebuie sa se calculeze iluminare.+Similar precum la geometria elementelor vizuale din scenă, desenarea personajului trebuie ​realizată ​prin procesul de aplicare a unei texturi consistente cu tematica jocului ​și prin calcularea iluminării.
  
-Un posibil exemplu pentru geometria personajului este urmatoarea:+Un posibil exemplu pentru geometria personajului este următorul:
  
 {{ :​ipg:​tema:​personaj.png?​200 |}} {{ :​ipg:​tema:​personaj.png?​200 |}}
  
 <​note>​ <​note>​
-În imagine, cele 6 componente ale geometriei sunt colorate diferit pentru a putea fi identificate cu ușurință. În aplicația grafică, toată geometria unui personaj sau a unui inamic poate fi desenată cu o singură culoare.+În imagine, cele 6 componente ale geometriei sunt colorate diferit pentru a putea fi identificate cu ușurință.
 </​note>​ </​note>​
  
 <note tip> <note tip>
-Recomandarea ​este să construiți această geometrie din 6 cuburi pentru care aplicați un lanț de transformări ce conține o transformare neuniformă de modificare a scării și o transformare de translație.+În situația în care realizați o geometrie a personajului ce este similară cu cea descrisă în imaginea de mai sus, puteți urmări recomandarea următoare pentru realizarea animațiilor. Recomandarea este să realizati geometria dintr-un set de cuburi pentru care aplicați un lanț de transformări ce conține o transformare neuniformă de modificare a scării și o transformare de translație
 + 
 +În situația în care realizați o geometrie mai comlexă pentru personaj, recomandarea este să alocați atenție construcției componentelor din care este format personajul, astfel încât să aveți originea axelor de coordonate la o poziție convenabilă pentru transformările de rotație :) .
 </​note>​ </​note>​
  
 === Animații === === Animații ===
  
-Geometria personajului trebuie **sa realizeze 3 tipuri ​animatii ​distincte**. +Geometria personajului trebuie **să realizeze ​cel puțin ​3 tipuri ​de animații ​distincte**. ​Toate animațiile ​trebuie ​să fie continueAcestea ​trebuie ​să fie realizate prin utilizarea a cel puțin unei transformări ​de rotație
- +
-In continuare se ofera 2 exemple de animatii posibile pentru personajul a carui geometrie este descrisa mai sus.  +
- +
-<note warning>​ +
-  * Aveti libertatea sa **realizati orice alte tipuri de animatii** in situatia in care o animatie utilizeaza cele 4 membre pe care trebuie sa le contina geometria. +
-  * Animatiile ​trebuie ​sa fie consistente cu conceptia joculuiAltfel spus, trebuie ​sa aiba sens pentru joc. +
-  * Toate cele 3 animatii trebuie sa fie cel putin la fel de complexe precum cele 2 exemple oferite mai jos. +
-</​note>​+
  
-== Animatie ​de deplasare ​==+Un exemplu de animație posibilă pentru personajul a cărui geometrie este prezentată mai sus este o animație ​de deplasare ​a personajului,​ precum cea de mai jos.
  
 {{ :​ipg:​tema:​animation1.gif?​600 |}} {{ :​ipg:​tema:​animation1.gif?​600 |}}
  
 <note tip> <note tip>
-Recomandarea este să realizați ​această ​animație prin utilizarea unui lanț de transformari, în care, pentru a da doar un exemplu, la finalul lanțului propriu de transformări ale brațului drept se aplică lanțul de transformari ​ale trunchiului.+Recomandarea este să realizați ​o astfel de animație prin utilizarea unui lanț de transformări, în care, pentru a da doar un exemplu, la finalul lanțului propriu de transformări ale brațului drept se aplică lanțul de transformări ​ale trunchiului.
 </​note>​ </​note>​
  
-== Animație de oprire == +<note important>​ 
- +  * Aveți libertatea să **realizați orice alte tipuri ​de animații**,​ în situația în care aceste animații utilizează cele 4 membre pe care trebuie să le conțină geometria. 
-{{ :​ipg:​tema:​animation2.gif?600 |}} +  * Animațiile trebuie să fie consistente cu concepția jocului. Altfel spus, trebuie să aibă sens pentru joc. 
 +  * Toate cele 3 animații trebuie să fie cel puțin la fel de complexe precum cea de deplasare, oferită mai sus
 +</​note>​
  
 ==== Iluminare geometrie ==== ==== Iluminare geometrie ====
  
 În calculele de iluminare a geometriei, trebuie utilizată //​componenta ambientală//,​ //​componenta difuză// și //​componenta speculară//​. Se pot utiliza modelele de iluminare deja analizate. Dacă se dorește, se poate înlocui calculul de iluminare pentru oricare din cele 3 componente cu un alt model de iluminare ce oferă rezultate vizuale superioare :) . Utilizarea unor astfel de modele de iluminare se punctează suplimentar. În calculele de iluminare a geometriei, trebuie utilizată //​componenta ambientală//,​ //​componenta difuză// și //​componenta speculară//​. Se pot utiliza modelele de iluminare deja analizate. Dacă se dorește, se poate înlocui calculul de iluminare pentru oricare din cele 3 componente cu un alt model de iluminare ce oferă rezultate vizuale superioare :) . Utilizarea unor astfel de modele de iluminare se punctează suplimentar.
 +
 +În cadrul acestei teme, trebuie să realizați mediul unei lumi virtuale în care la orice moment de timp sunt prezente:
 +  * Cel puțin 10 surse de lumină punctiforme/​de tip spot. Pentru aceste surse de lumină, nu trebuie calculate umbre;
 +  * Cel puțin 3 surse de lumină de tip spot pentru care se calculează umbre.
  
 === Transformarea vectorului normal în spațiul lumii === === Transformarea vectorului normal în spațiul lumii ===
Line 183: Line 179:
 </​note>​ </​note>​
  
 +=== Umbre calculate pentru surse multiple ===
  
-===== Efect de post-procesare =====+Considerăm faptul că sursele ​de lumină pentru care se calculează umbre sunt de tip spot. La calcularea umbrelor, este recomandat să aveți în vedere să introduceți un număr relativ mic de astfel de surse de lumină și să păstrați rezoluția hărților de iluminare la un nivel care să permită o frecvență de desenare acceptabilă. 
 + 
 +<​hidden>​
  
 ===== Exemple de funcționalități bonus ===== ===== Exemple de funcționalități bonus =====
Line 196: Line 195:
   * Orice aduce îmbunătățiri vizuale jocului   * Orice aduce îmbunătățiri vizuale jocului
  
-<​hidden>​ 
 ==== Întrebări și răspunsuri ==== ==== Întrebări și răspunsuri ====
  
ipg/tema/2025.1765202167.txt.gz · Last modified: 2025/12/08 15:56 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