Differences

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

Link to this comparison view

gp:laboratoare:02 [2025/03/11 16:32]
maria_anca.balutoiu [Implementare]
gp:laboratoare:02 [2025/03/14 15:53] (current)
maria_anca.balutoiu [Implementare]
Line 77: Line 77:
 <​code>​ <​code>​
 def getConstantVector(v):​ def getConstantVector(v):​
-    h = v % 3+    h = v % 4
  
     if h == 0:     if h == 0:
Line 100: Line 100:
 {{ :​gp:​laboratoare:​perlin_noise_liniar_interpolation.png?​500 |}} {{ :​gp:​laboratoare:​perlin_noise_liniar_interpolation.png?​500 |}}
  
-<​hidden>​+În schimb, ne-am dori un rezultat de genul:
  
 +{{ :​gp:​laboratoare:​perlin_noise_nonlinear_interpolation.png?​500 |}} 
  
-După cum puteți vedeaschimbarea dintre ceea ce este inferior lui 1 și ceea ce este superior lui 1 este bruscă. Ceea ce ne dorim este ceva mai lin, ca acesta:+Pentru a obține de acest rezultatKen Perlin s-a folosit de funcția **fade** pentru a uniformiza valorile de input ale interpolării:
  
-Cu interpolarea liniară, am folosi xf ca valoare de interpolare ​(t). În schimb, vom transforma xf și yf în u și v. O vom face astfel încât, având în vedere o valoare a t între 0,0 și 0,5 (exclus), valoarea transformată va fi ceva mai mică (dar plafonată la 0,0). De asemenea, având în vedere o valoare a între 0,5 (exclusși 1,0, valoarea transformată ar fi puțin mai mare (dar plafonată la 1,0). Pentru 0,5, valoarea transformată ar trebui să fie 0,5. Acest lucru va avea ca rezultat o tranziție curbată, ca în figurile 5 și 6. +<​code>​ 
- +def fade(t)
-Pentru a face acest lucru, avem nevoie de ceva numit curbă de ușurință:​ este doar o curbă matematică care arată astfel:+    return ​((6 * t - 15+ 10* t * t * t 
 +</​code>​
  
-Dacă te uiți cu atențiepoți vedea că pentru o intrare (xf sau yf, axa x) între 0,0 și 0,5, ieșirea (u sau v, axa y) este puțin mai aproape de 0,0Șpentru ​valoare între 0,5 și 1,0, ieșirea este puțin mai aproape ​de 1,0Pentru x=0,5, y=0,5Asta va face treaba perfect.+==== Tasks ==== 
 +  - Implementați algoritmul Perlin Noise. Salvați rezultatul într-o imagine PNG. 
 +  - Într-un proiect Unitygenerați un teren cu denivelărifolosind Perlin Noise. 
 +  - **Bonus 1.** Adăugațîncă ​octavă în implementarea algoritmului. 
 +  - **Bonus 2.** Implementați efectul ​de plasmă specific Perlin NoiseExemplu: 
 +<​html>​ 
 +<p style="​text-align:​center;​margin:​auto;">​ 
 +<iframe width="​560"​ height="​315"​ src="​https://​www.youtube.com/​embed/​9B89kwHvTN4?​si=McVA2s62UZGbUNTF&​amp;​start=242"​ title="​YouTube video player"​ frameborder="​0"​ allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture;​ web-share"​ referrerpolicy="​strict-origin-when-cross-origin"​ allowfullscreen></​iframe>​ 
 +</​p>​ 
 +</​html>​
  
-Curba de mai sus este funcția ​de ușurință folosită de Ken Perlin în implementarea lui Perlin NoiseEcuația este 6t5-15t4+10t3. Aceasta se mai numește și funcție de estompare. În codarată așa:</hidden>+<note tip>În Unity C# există ​funcția ​**float Mathf.PerlinNoise(float xfloat y)**</note
  
 +==== Resurse ====
 +  * [[https://​www.youtube.com/​watch?​v=9B89kwHvTN4]]
 +  * [[https://​rtouti.github.io/​graphics/​perlin-noise-algorithm]]
 +  * [[https://​www.youtube.com/​watch?​v=vFvwyu_ZKfU]]
gp/laboratoare/02.1741703555.txt.gz · Last modified: 2025/03/11 16:32 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