>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Phong illumination model
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
V každém pokecu o phongu najdete asi takovou hlášku :
But you must distinguish between Phong shading model and Phong
illumination model.
Já si myslim, že je to zbytečný a navíc když se kouknete na vzorec,
je absolutně jasný, co je co. Co je podle mě důležitý, je to, že PIM
nedává BARVY (tj. složky R,G,B nebo číslo barvy v DAC) ale
INTENZITY.
Nejjednodušší cesta, jak PIM využít, je vypočítat si do pole o
rozsahu 0-90 intenzity pro jednotlivé úhly, a pak, když nám z Phong
shading modelu vyjde úhel mezi pseudonormálovým vektorem a vektorem
světla, tak nepoužijeme tuhle hodnotu k výpočtu barvy (jako u
Gourauda), ale odkážeme se pomocí ní do pole intenzit a použijeme
hodnoty z tohodle pole.
Pozor na jednu věc - intenzita v žádném případě nemusí být od 0-1
jako cos(úhel), takže je možno hravě překročit limit barev, které
jsme tělesu vlastně chtěli dát. Pokud máte poté lineárně nastavenou
paletu, není problém podle intenzity přepočítat lineární barvu na
Phongovou.
Vzoreček uvedu s anglickými termíny protože nevim přesné překlady a
nechci to mrvit.
Intenzita = Iambient + Idiffuse + Ispecular
A teď vysvětlení :
Iambient - intenzita bodu, na který světlo nedopadá přímo
Idiffuse - intenzita objektu jako taková
Ispecular - intenzita bodu na který přímo dopadá světlo
Vzorec se dá přepsat
I = specular + diffuse*cos(x) + specular*cos^shiness (x)
(to poslední je opravdu mocnina - jako třeba cosn(x) ... jeste
slovy - pro jistotu: kosinus umocnen na shiness z (x) :-)
Co znamenaj ty všechny parametry ?
• x je úhel pod kterým světlo dopadá(x má tedy rozsah od 0 do 90)
• shiness je stupeň "blyštivosti" objektu - jde prostě o to, jak
hodně bude světlo soustředěné, jestliže dopadá na objekt přímo.
výheň