„Számítógépes grafika házi feladat tutorial” változatai közötti eltérés

Rohamcsiga (vitalap | szerkesztései)
Hozzáadtam a pont fényforrás részt Megvilágítás
Rohamcsiga (vitalap | szerkesztései)
Hozzáadtam a spot lámpát Megvilágítás
903. sor: 903. sor:
</syntaxhighlight> <br/>
</syntaxhighlight> <br/>


A kamera fölöl - fejlámpaként - világító [http://pastebin.com/i9qsbbXm pont fényforrás] hatása:
A kamera fölül - fejlámpaként - világító [http://pastebin.com/i9qsbbXm pont fényforrás] hatása:
<div style="text-align:left;margin:0px auto;">
<div style="text-align:left;margin:0px auto;">
http://i.imgur.com/3ZjMobS.png
http://i.imgur.com/3ZjMobS.png
</div><br/>
</div><br/>


-- [https://wiki.sch.bme.hu/Szerkeszt%C5%91:Rohamcsiga RohamCsiga] - 2014.01.
==== A spot lámpa ====
 
* A spot lámpa a pont fényforrásnak egy változata. Majdnem mindenben ugyan úgy viselkedik, azt leszámítva, hogy csak egy bizonyos térszög alatt fejti ki hatását.
* Az ötlet egyszerű, tároljuk a lámpa irányát, és a maximális még megvilágított szög koszinuszát. Azt nem magát a szöget, mert a koszinuszát a skaláris szorzatból nagyon egyszerűen ki tudjuk számolni, míg ahhoz képest az acos() függvény nagyon nagyon drága (és amúgy fölösleges). Tehát nézzük meg, hogy az adott pontot megvilágítja-e a spot lámpa, és ha igen, akkor kezeljük azt utána pont fényforrásként.
* Ez egy fall-through switchel nagyon egyszerűen megírható:
 
<br/> <syntaxhighlight lang="c"> 
case Light::Spot: {
  Vector light_to_pos = inter.pos - light.pos;
  if(dot(light_to_pos.normalize(), light.dir) < light.spot_cutoff) {
    break; // Ha nincs megvilágítva, akkor ne csináljuk semmit.
  } // Különben számoljuk pont fényforrással.
} // NINCS break!
case Light::Point: {
...
} break;
</syntaxhighlight> <br/>
 
A [http://pastebin.com/0ew0xG9S spot-lámpa] segítségével sokkal meggyőzőbb fejlámpát lehet csinálni. Az más kérdés, hogy nekem nem sikerült... :D
<div style="text-align:left;margin:0px auto;">
http://i.imgur.com/5KBCzk8.png
</div><br/>
 
-----
[https://wiki.sch.bme.hu/Szerkeszt%C5%91:Rohamcsiga RohamCsiga] - 2014.01.




[[Category:Infoalap]]
[[Category:Infoalap]]