.[ ČeskéHry.cz ].
Attenuace bodovýho světla

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
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

PříspěvekZaslal: 28. duben 2011, 09:13:56    Předmět: Attenuace bodovýho světla Odpovědět s citátem

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 Very Happy

Jatro


Naposledy upravil Játro.m dne 28. duben 2011, 10:08:20, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
igor



Založen: 28. 07. 2007
Příspěvky: 196

PříspěvekZaslal: 28. duben 2011, 09:52:20    Předmět: Odpovědět s citátem

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í Wink


Naposledy upravil igor dne 28. duben 2011, 12:01:53, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 28. duben 2011, 11:16:31    Předmět: Odpovědět s citátem

#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
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna