Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 28. duben 2011, 09:13:56 Předmět: Attenuace bodovýho světla |
|
|
Hare,
profesionální soft jako 3ds max má v nastavení světla pro tuto věc několik parametrů a mě zajímá, jak z ních dostanu kvadratickou rovnici kvůli attenuaci světla kterou bych použil v GLSL.
Parametry:
multiplier - default 1.0
near attenuation
Start = 0, End = 20.0
far attenuation
Start = 80, End = 500
Googleni mi nepomáhá a já absolutně netuším kam ty intervaly nacpat
Jatro
Naposledy upravil Játro.m dne 28. duben 2011, 10:08:20, celkově upraveno 1 krát |
|
Návrat nahoru |
|
|
igor
Založen: 28. 07. 2007 Příspěvky: 196
|
Zaslal: 28. duben 2011, 09:52:20 Předmět: |
|
|
Vypadá to, že to funguje takto:
Multiplier je maximální koeficient, od Start k End u far to jde od multiplier k 0, od Start k End u near od 0 k multiplier. Mezi near end a far start je to na hodnotě multiplier. Akorát teda nevím, jestli ty přechody jsou lineární. Asi to není přímo převoditelné na ten klasický model s kvadratickou rovnicí.
EDIT:
Všechno v tom postu je asi blbost, důvěřovat grafikům že ví, jak jejich nástroje fungují, se moc nevyplácí
Naposledy upravil igor dne 28. duben 2011, 12:01:53, celkově upraveno 1 krát |
|
Návrat nahoru |
|
|
Vilem Otte
Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 28. duben 2011, 11:16:31 Předmět: |
|
|
#igor - nope, u near-attenuation to jde od multiplier k 1, u far-attenuation to jde od 1 k 0.
Mno pro útlum světla se obvykle používá vzorec:
a = 1 / (d * d * qc + d * lc + ac)
kde a je útlum (attenuation) na daném bodě ve vzdálenosti d od světla
qc, lc a ac jsou parametery, kvadratický koeficient, lineární koeficient a absolutní koeficient.
Už z této rovnice ti dojde, že útlum nemůže nikdy být nulový, tedy pokud není v nekonečnu.
Definovaný máme radius (ten je třeba 100); dále víme jaký chceme mít útlum - blížící se 0, pro jednoduchost 0.001 je dostačující (už je pod nejnižší ne-černou barvou obrazovky), řešme rovnici:
0.001 = 1 / (100 * 100 * qc + 100 * lc + ac)
0.001 * (100 * 100 * qc + 100 * lc + ac) = 1
10 * qc + 0.1 * lc + 0.001 * ac = 1
Co tedy máme? máme 1 rovnici o 3 libovolných parametrech, která se rovná 1. Pokud by se jednalo čistě o kvadratický útlum, bylo by to:
10 * qc = 1
qc = 0.1
Jinak by bylo potřeba udělat si zřejmě editor (či 2 parametry definovat - ale s tímto pozor), ve kterém by si člověk vyhrál se světly. _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
|
|