„Számítógépes grafika házi feladat tutorial” változatai közötti eltérés
Hozzáadtam a pont fényforrás részt →Megvilágítás |
Hozzáadtam a spot lámpát →Megvilágítás |
||
| 903. sor: | 903. sor: | ||
</syntaxhighlight> <br/> | </syntaxhighlight> <br/> | ||
A kamera | 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]] | ||