Řešení radační soustavy rovnc 1996-2008 Josef Pelkán KSVI MFF UK Praha e-mal: Josef.Pelkan@mff.cun.cz WWW: http://cgg.ms.mff.cun.cz/~pepca/ NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 1
Soustava lneárních rovnc N j j j= 1 B ρ B F = E = 1.. N 1 ρ 1F 11, ρ 1F 1, 2.. ρ 1F 1, ρ 2F2, 1 1 ρ 2F2, 2.. ρ 2F2,........ ρ F 1 ρ F 2.. 1 ρ F N N B1 E B2 E =.... B E N N, N N, N N, N N N vektor neznámých [B ] 1 2 NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 2
Velčny B.. neznámé radosty jednotlvých plošek př barevném výpočtu je třeba spočítat radosty pro všechny požadované vlnové délky (barevné složky - např. R,G,B) E.. vlastní (emtované) radosty (R,G,B) ρ.. faktory odrazvost materálu (R,G,B) F j.. kon gurační faktory závslé pouze na geometr scény NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 3
Vlastnost matce soustavy M matce M je poměrně řídká pro složtější scény M je dagonálně domnantní a dobře podmíněná lze j úspěšně řešt teračním metodam (Jacob, Gauss- Sedel) N ρ Fj 1 j= 1 j ρ F NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 4
Gauss-Sedelova metoda Matcový tvar soustavy: První odhad: Krok: Výpočet v prax: B ( 0 ) = E [ ] M B = E M = M j j B NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 5 N, = 1 1 N ( k+ 1) E M M M B M j ( k+ ) j j M B ( k) = 1 j j= 1 j= + 1 N j j j= 1 B = E + ρ B F = 1.. N
Fyzkální nterpretace (sbírání) B j B j j j B = E + ρ B F NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 6
Rezduum Rezduum (odhad chyby) k-té terace: ( k) ( k) r = E M B V jednom kroku výpočtu se aktualzuje jedna složka vektoru řešení B : B ( k+ 1) ( k) = B + r ( k) M (Jacobho metoda.. rezdua se opravují po dokončení terace, Gauss-Sedel.. oprava po každém kroku) NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 7
Southwellova terační metoda Jacobho Gauss-Sedelova metoda v každém kroku výpočtu vynulují jednu složku rezdua (na úkor ostatních!) složky se aktualzují v pořadí 1, 2,... N Southwellova metoda vybírá k aktualzac vždy složku s největší absolutní hodnotou rezdua složky s velkou chybou se opravují častěj rychlejší konvergence vektoru řešení NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 8
Southwellova terační metoda ➊ výběr složky s maxmálním rezduem: r = max j { r j } ➋ aktualzace -té složky řešení B ➌ aktualzace vektoru rezduí r ➍ kroky ➊ až ➌ se opakují, dokud soustava nesplňuje konvergenční krterum NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 9
Inkrementální výpočet rezdua Aktualzace vektoru řešení v jednom kroku výpočtu: Oprava rezdua: ( p+ 1) ( p) ( p) B = B + B ( ) ( p+ 1) ( p) ( p) ( p) ( p) r = E M B + B = r M B Protože se změnla pouze -tá složka vektoru řešení: ( p+ 1) ( p) ( p) r r M r j = j j j = M 1.. N NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 10
Southwellův algortmus double B[N], E[N], r[n], M[N][N]; // ncalzace řešení a rezdua for ( nt =0; <N; ++ ) { B[] := 0.0; r[] := E[]; } whle ( nezkonvergovalo ) { // jeden krok výpočtu: výběr tak, aby fabs(r[])== max(fabs(r[])) double delta = r[]/m[][]; B[] += delta; for ( nt j=0; j<n; j++ ) r[j] -= M[j][]*delta; } NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 11
Fyzkální nterpretace (střílení) B.. radosta -té plošky (přímá nepřímá) jeden krok výpočtu.. rozdělení (výstřel) radosty z -té plošky do okolí r.. dosud nevystřelená radosta -té plošky konvergence metody.. celková nevystřelená energe ve scéně se zmenšuje NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 12
Fyzkální nterpretace (střílení) ( p+ 1) ( p) ( p) j j B = B + r ρ F j j B j B NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 13
Celková nevystřelená energe Podle recpročního pravdla pro kon gurační faktory: ( p + 1) ( p) ( p) ( p) ( p) j j j j j j j j r = r + ρ F r = r + ρ F A A r Dstrbuce energe v jednom kroku výpočtu: r ( p+ 1) A = 0 <1 ( p+ 1) ( p) ( p) j j j j j j r A = r A + ρ F r A j = 1.. N NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 14
Progresvní radační metoda M. Cohen a spol., SIGGRAPH 88 nteraktvní výpočet osvětlení po každém kroku se nakreslí průběžný výsledek snaha dobře odhadnout řešení jž v několka prvních krocích mod kace Southwellovy metody výběr plošky s největší dosud nevystřelenou energí použtí okolní složky osvětlení NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 15
Progresvní radační metoda double B[N], E[N], db[n], F[N][N], A[N], ro[n]; for ( nt =0; <N; ++ ) { // ncalzace B, db B[] := E[]; db[] := E[]; } whle ( nezkonvergovalo ) { // jeden krok výpočtu výběr tak, aby db[]*a[]== max(db[]*a[]) for ( nt j=0; j<n; j++ ) { double drad = db[]*ro[j]*f[j][]; B[j] += drad; db[j] += drad; } db[] = 0.0; zobrazení mezvýsledku pomocí radost B[] } NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 16
Okolní složka ( ambent term ) vylepšení vzhledu průběžně kreslených mezvýsledků aproxmace dosud nespočítaných odrazů světla Celková dosud nevystřelená radosta: B = r A A NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 17
Okolní složka Průměrný koe cent odrazu: ρ = ρ A A Odhad zbytkové (okolní) radosty: ( 2 1 ρ ρ...) Bamb = B + + + = B 1 ρ Pro zobrazení se radosta každé plošky upraví: dsp B = B + ρ B amb NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 18
Hyper-relaxace urychlení konvergence terační metody (Jacob, Gauss-Sedel, progresvní radační metoda) př aktualzac rozdělím/seberu o trochu větší množství energe předpovídám budoucí vývoj konvergence pozor na přílš velký koe cent hyper-relaxace (metoda pak už nemusí konvergovat)! je nutné počítat se záporným rezduem! NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 19
Hyper-relaxace Krok výpočtu s hyper-relaxací: B ( k + 1) ( k) = B + ω Hyper-relaxační koe cent: r ( k) M ω 1 ( napø. 1. 2) Příslušná složka rezdua se jž nenuluje, ale bude mít hodnotu: r ( k + 1) ( ) ( k) = 1 ω r NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 20
Přestřelování ( overshootng ) M. Feda, W. Purgathofer, 1992 př hyper-relaxac beru v úvahu množství dosud nevystřelené energe v prvních fázích výpočtu přestřeluj více, pozděj jž méně jstější konvergence NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 21
Lteratura M. Cohen, J. Wallace: Radosty and Realstc Image Synthess, Academc Press, 1993, 109-130 (chyby!) M. Cohen, S. E. Chen, J. R. Wallace, D. P. Greenberg: A progressve re nement approach to fast radosty mage generaton, SIGGRAPH 88, 75-84 NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 22
Konec Další nformace: A. Glassner: Prncples of Dgtal Image Synthess, Morgan Kaufmann, 1995, 900-916 J. Foley, A. van Dam, S. Fener, J. Hughes: Computer Graphcs, Prncples and Practce, 800-803 M. Feda, W. Purgathofer: Acceleratng radosty by overshootng, The Thrd EG Workshop on Renderng, Brstol, 1992, 21-32 NPGR010, radsoluton.pdf 2008 Josef Pelkán, http://cgg.ms.mff.cun.cz/~pepca 23