Differences

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

Link to this comparison view

spg:teme:2020:01 [2020/11/25 01:35]
maria_anca.balutoiu
spg:teme:2020:01 [2020/11/26 15:22] (current)
andrei.lambru
Line 19: Line 19:
  
   * Generarea Apei   * Generarea Apei
-Atât râul principal, cât și brațele sale se vor genera folosind suprafețe de translație bazate pe curbe Bezier. Punctele de control pe care le veți folosi pentru a construi curba Bezier ​pot fi generate aleator. ​Acestea ​se vor afla la jumătatea lățimii râului.+Atât râul principal, cât și brațele sale se vor genera folosind suprafețe de translație bazate pe curbe Bezier. Punctele de control pe care le veți folosi pentru a construi curba Bezier ​vor fi generate aleator. ​ Curba rezultată ​se află la jumătatea lățimii râului.
  
 Pentru a putea uni râul principal cu cele trei brațe ale sale veți considera că ultimul punct de control folosit pentru generarea râului principal este în același timp și primul punct de control al celor trei brațe, urmând ca celelalte puncte de control ale fiecărui braț să fie generate aleator. Pentru a putea uni râul principal cu cele trei brațe ale sale veți considera că ultimul punct de control folosit pentru generarea râului principal este în același timp și primul punct de control al celor trei brațe, urmând ca celelalte puncte de control ale fiecărui braț să fie generate aleator.
Line 37: Line 37:
 {{ :​spg:​teme:​2020:​munte_generare.png?​nolink&​800 |}} {{ :​spg:​teme:​2020:​munte_generare.png?​nolink&​800 |}}
  
-Ca să generați muntele, va trebui să generați două suprafețe ​de translație. Fiecare ​suprafață ​va merge de-a lungul marginii unui râu. Pentru a calcula punctul ​de control ​de start, va trebui să calculați coordonatele intersecției marginilor celor două râuri (a se observa în imaginile de mai jos) (Hint: https://​stackoverflow.com/​questions/​563198/​how-do-you-detect-where-two-line-segments-intersect/​565282#​565282). Restul punctelor vor fi calculate folosind media aritmetică dintre punctele folosite pentru generarea râurilor. Pentru a da diferite înălțimi munților, puteți varia coordonata y.+Ca să generați muntele, va trebui să generați două suprafețe. Fiecare ​dintre acestea ​va merge de-a lungul marginii unui râu. Pentru a calcula punctul de start, va trebui să calculați coordonatele intersecției marginilor celor două râuri (a se observa în imaginile de mai jos) (Hint: https://​stackoverflow.com/​questions/​563198/​how-do-you-detect-where-two-line-segments-intersect/​565282#​565282). Restul punctelor vor fi calculate folosind media aritmetică dintre punctele folosite pentru generarea râurilor. Pentru a da diferite înălțimi munților, puteți varia coordonata y.
  
 {{ :​spg:​teme:​2020:​munte4.png?​nolink&​400 |}} {{ :​spg:​teme:​2020:​munte4.png?​nolink&​400 |}}
Line 54: Line 54:
  
 === Bărcuța de pe Apă === === Bărcuța de pe Apă ===
-Pe râu se va plimba o bărcuță. Aceasta se va plimba aleator atât pe râul principal, cât și pe brațele acestuia pe direcția punctelor de control care definesc ​curbele. În mișcarea ei, bărcuța, evident, va fi rotită corespunzător (Hint: https://​stackoverflow.com/​questions/​53365389/​opengl-rotate-object-on-y-axis-to-look-at-another-object).+Pe râu se va plimba o bărcuță. Aceasta se va plimba aleator atât pe râul principal, cât și pe brațele acestuia ​la mijlocul latimii raului. Deplasarea se va face pe curbele ​Bezier utilizate pentru generarea râurilor În mișcarea ei, bărcuța, evident, va fi rotită corespunzător (Hint: https://​stackoverflow.com/​questions/​53365389/​opengl-rotate-object-on-y-axis-to-look-at-another-object).
  
 Elicea motorului bărcuței va arunca în urma sa apa. Pentru a simula acest lucru, puteți folosi un sistem de particule. La resetarea sistemului, aveți grijă să setați poziția și direcția particulelor într-un mod relativ aleator. ​ Elicea motorului bărcuței va arunca în urma sa apa. Pentru a simula acest lucru, puteți folosi un sistem de particule. La resetarea sistemului, aveți grijă să setați poziția și direcția particulelor într-un mod relativ aleator. ​
  
-=== Efect de Post-Procesare: ​Adâncimea de câmp (depth of field) === +=== Efect de Post-Procesare: ​Profunzimea câmpului vizual ​(depth of field) === 
-Adâncimea de câmp reprezintă zona de la o anumită distanță față de o cameră de fotografiat în care aceasta are acuratețea maximă. În afara acestei zoneobiectele devin neclare. O reprezentare vizuală se poate vedea mai jos:+Profunzimea câmpului vizual ​reprezintă zona de la o anumită distanță față de o cameră de fotografiat în care aceasta are acuratețea maximă. În afara acestei zone obiectele devin neclare. O reprezentare vizuală se poate vedea mai jos:
  
 {{ :​spg:​teme:​2020:​dof1.png?​nolink&​600 |}} {{ :​spg:​teme:​2020:​dof1.png?​nolink&​600 |}}
  
   * Desenarea în alt framebuffer   * Desenarea în alt framebuffer
-Toate obiectele din scenă se desenează inițial într-un framebuffer nou, diferit de cel default al ecrannului. Pentru a desena în final pe ecran se folosește un al doilea pas de desenare în care se rasterizează un quad pe tot ecranul. ​In acest fel se execută o instanță de fragment shader pentru fiecare pixel al ecranului. Acest al doilea pas primește texturile de culoare și de adancime ​ale framebuffer-ului în care s-au desenat inițial obiectele scenei. +Toate obiectele din scenă se desenează inițial într-un framebuffer nou, diferit de cel default al ecrannului. Pentru a desena în final pe ecran se folosește un al doilea pas de desenare în care se rasterizează un quad pe tot ecranul. ​În acest fel se execută o instanță de fragment shader pentru fiecare pixel al ecranului. Acest al doilea pas primește texturile de culoare și de adâncime ​ale framebuffer-ului în care s-au desenat inițial obiectele scenei. 
-  * Simularea efectului de câmp de adâncime +  * Simularea efectului de profunzime al câmpului vizual 
-Pentru a simula acest efect se setează o distanță focală și o dimensiune a câmpului ​de adâncime. Pentru fiecare pixel de pe ecran se extrage culoarea și adâncimea fragmentelor din framebuffer-ul ​in care au fost desenate obiectele. Pentru a putea fi folosită, adâncimea din depth buffer trebuie ​liniarizata ​(Hint: https://​stackoverflow.com/​a/​6657284). Toți pixelii sunt verificați dacă se află în câmpul de adâncime și pentru cei care se află în afară se aplică un filtru de netezire. Pentru a nu se face trecerea foarte rapidă între clar și blurat se folosește o zonă de trecere în care se interpolează între varianta clară și cea blurată pe baza distanței.+Pentru a simula acest efect se setează o distanță focală și dimensiunea zonei în care obiectele sunt preluate clar (large - narrow "depth of field" în imaginea ​de mai sus). Pentru fiecare pixel de pe ecran se extrage culoarea și adâncimea fragmentelor din framebuffer-ul ​în care au fost desenate obiectele. Pentru a putea fi folosită, adâncimea din depth buffer trebuie ​liniarizată ​(Hint: https://​stackoverflow.com/​a/​6657284). Toți pixelii sunt verificați dacă se află în câmpul de adâncime și pentru cei care se află în afară se aplică un filtru de netezire. Pentru a nu se face trecerea foarte rapid între clar și blurat se folosește o zonă de trecere în care se interpolează între varianta clară și cea blurată pe baza distanței.
  
 {{ :​spg:​teme:​2020:​dof2.png?​nolink&​800 |}} {{ :​spg:​teme:​2020:​dof2.png?​nolink&​800 |}}
Line 85: Line 85:
   * Implementarea ploii   * Implementarea ploii
   * Valuri realiste   * Valuri realiste
-  * Space Screen Reflections sau orice altă tehnică de a realiza un model de reflexie realistă pe apă+  * Orice tehnică de a realiza un model de reflexie realistă pe apă (de exemplu Space Screen Reflections)
   * Orice aduce realism și/sau dinamism scenei   * Orice aduce realism și/sau dinamism scenei
  
spg/teme/2020/01.1606260917.txt.gz · Last modified: 2020/11/25 01:35 by maria_anca.balutoiu
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