|
| farveberegning ved raytracing Fra : Janus Hansen |
Dato : 29-12-03 13:56 |
|
Der er et lys med farven (1,0,0) som rød,grøn,blå og intensiteten 10.
En overflade med farven (1,1,0) og en overfladenormal direkte mod lyset, så
er den resultarende farve vel
10*(1,0,0)*(1,1,0)=(10,0,0) altså meget rød. Skal måske helere skrives som
10*(1,0,0)
Siden mine farver er repræsenteret ved værdier fra 0 til 1, så kan 10 ikke
anvendes. Jeg kan nu banke den på plads og lave farven til (1,0,0) som er ti
gange mindre. Det virker imidlertid forkert hvis en tilsvarende flade blev
belyst med et tilsvarende lys med lavere intensitet. Eksempelvis...
lys=2*(1,0,0)
flade=(1,0,0)
resultat 2*(1,0,0)
Som _også_ skal laves om til (1,0,0), og de to forskelligt belyste flader
vil nu se ens ud, hvilket er forkert.
Så kunne man istedet betragte alle farveværdierne og skalere dem samlet til
0-1-intervallet.
Det er altså farverne (10,0,0) og (2,0,0). Den største er 10, som skal være
1. derfor deles med 10 og vi får (1,0,0) og (0.2 ,0,0).
På denne måde er forskellen bevaret, men nu vil hele scenen blive mørk hvis
bare et enkelt punkt er meget lyst. Det kan siges at være realistisk da det
er sådan øjet fungerer, men for en raytracer virker det nu også forkert.
Hvordan beregner man den skalerede farve? Jeg kan godt beregne farver
baseret på forskellige lyskilder og lysstyrker samt orientering mod lyset
ect ect. Det jeg er usikker på er hvad man gør når man ender ud med en farve
der er udenfor 0-1-intervallet.
| |
Lasse Reichstein Nie~ (29-12-2003)
| Kommentar Fra : Lasse Reichstein Nie~ |
Dato : 29-12-03 15:11 |
|
"Janus Hansen" <jhan@mail.dk> writes:
> Der er et lys med farven (1,0,0) som rød,grøn,blå og intensiteten 10.
Her bliver man så nødt til at spørge: Hvad betyder "intensitet" i denne
sammenhæng, og specielt, hvad betyder "10"?
Du bliver nødt til at have fuldstændig tjek på hvad dine tal betyder
før du begynder at regne med dem.
(Aftager intensitetet med afstanden til lyskilden? Så kunne "10" være
afstanden til lyskilden hvor lyset faktisk var (1,0,0)?)
> Det jeg er usikker på er hvad man gør når man ender ud med en farve
> der er udenfor 0-1-intervallet.
Tjah, der er jo ikke nogen øvre grænse for intensitet i virkeligheden.
Der bliver vi bare blændet over et vis grænse :)
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL: http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
| |
Ulrik Smed (29-12-2003)
| Kommentar Fra : Ulrik Smed |
Dato : 29-12-03 16:40 |
|
Janus Hansen wrote:
> På denne måde er forskellen bevaret, men nu vil hele scenen
blive
> mørk hvis bare et enkelt punkt er meget lyst. Det kan siges at
være
> realistisk da det er sådan øjet fungerer, men for en raytracer
virker
> det nu også forkert.
Tror man må finde sig i en vis hvid-klipning. Det gør man også i
TV/video sammenhæng, for at undgå det hele bliver for mørkt.
Dynamikken i 'rigtigt' lys er simpelthen alt for stor til at
kunne rummes i en signalvej der ofte kun er 8 bit dyb med lineær
kvantisering, eller med 35-40dB's signal/støj-forhold, i analoge
tilfælde.
--
Ulrik Smed,
Denmark, Aarhus
| |
Janus Hansen (29-12-2003)
| Kommentar Fra : Janus Hansen |
Dato : 29-12-03 17:12 |
|
> Tror man må finde sig i en vis hvid-klipning. Det gør man også i
> TV/video sammenhæng, for at undgå det hele bliver for mørkt.
> Dynamikken i 'rigtigt' lys er simpelthen alt for stor til at
> kunne rummes i en signalvej der ofte kun er 8 bit dyb med lineær
> kvantisering, eller med 35-40dB's signal/støj-forhold, i analoge
> tilfælde.
Ja, umidelbart ser det ud til at du har ret. Hvis man ønsker at optage
digitale billeder af objekter for senere at lave analyse på dem, så skal man
også justere belysningen/eksponeringstiden efter farveniveauet.
Overbelysning giver jo rene max-værdier, og tab af information... det hele
er hvidt.
Jeg synes bare det virker intuitivt forkert for en raytracer. Det er nok
fordi jeg er ny indenfor den del af området, men jeg har det nu stadig skidt
med bare at klippe. Måske opgaven er at opstille scenen og lys sådan at
fladernes belysning er bedst muligt fordelt ud over hele [0..1] intervallet.
| |
Ulrik Smed (29-12-2003)
| Kommentar Fra : Ulrik Smed |
Dato : 29-12-03 17:51 |
|
Janus Hansen wrote:
> Jeg synes bare det virker intuitivt forkert for en raytracer.
Det er
> nok fordi jeg er ny indenfor den del af området, men jeg har
det nu
> stadig skidt med bare at klippe. Måske opgaven er at opstille
scenen
> og lys sådan at fladernes belysning er bedst muligt fordelt ud
over
> hele [0..1] intervallet.
Jah, men man kommer vel nemt til at sætte nogle begrænsninger,
så? F.eks. vil skarpe punktformige lyskilder og blanke, buede
overflader være nærmest 'forbudt', da de meget let vil skabe en
intens lille plet der ryger langt over styrken af gennemsnittet.
Og det ville være lidt ærgeligt at 'forbyde' disse, da det ser
skidegodt ud. Du må ha' et 48 bits/pixel grafikkort og en monitor
med uforskammet stor lysstyrke!
Raytracing giver en dynamik der svarer ganske meget til
virkelighedens.
--
Ulrik Smed,
Denmark, Aarhus
| |
Janus Hansen (29-12-2003)
| Kommentar Fra : Janus Hansen |
Dato : 29-12-03 19:26 |
|
> Jah, men man kommer vel nemt til at sætte nogle begrænsninger,
> så? F.eks. vil skarpe punktformige lyskilder og blanke, buede
> overflader være nærmest 'forbudt', da de meget let vil skabe en
> intens lille plet der ryger langt over styrken af gennemsnittet.
> Og det ville være lidt ærgeligt at 'forbyde' disse, da det ser
> skidegodt ud. Du må ha' et 48 bits/pixel grafikkort og en monitor
> med uforskammet stor lysstyrke!
Ja, hvis det er et _krav_ at ingen farveværdi må gå ud af interval, så vil
man være ret begrænset. Det jeg mente var at man for at få den flotteste
scene burde forsøge at designe den så farvene lå spredt mellem 0 og 1. Det
vil give den flotteste kontrast, vil jeg mene. At man så har enkelte områder
med max-værdier gør jo ikke noget, men giver netop de lyse områder ved
fokusering af lys... var bare i tvivl om hvorvidt man forholdt sig
anderledes til de værdier.. altså ikke klippede dem.
> Raytracing giver en dynamik der svarer ganske meget til
> virkelighedens.
Ya, det er jo hele ideen. Med noget photon tracing og alm. tracing kan man
jo få det hele med
Har du også selv kodet en for the phun of it? Husker at du har rodet med
bølgesimulering og andret tidligere.
| |
Sune Storgaard (29-12-2003)
| Kommentar Fra : Sune Storgaard |
Dato : 29-12-03 19:37 |
|
Ulrik Smed mumbled his insignificant opinion in:
3ff05b92$0$9823$edfadb0f@dread14.news.tele.dk
> Janus Hansen wrote:
>
>> Jeg synes bare det virker intuitivt forkert for en raytracer. Det er
>> nok fordi jeg er ny indenfor den del af området, men jeg har det nu
>> stadig skidt med bare at klippe. Måske opgaven er at opstille scenen
>> og lys sådan at fladernes belysning er bedst muligt fordelt ud over
>> hele [0..1] intervallet.
>
> Jah, men man kommer vel nemt til at sætte nogle begrænsninger,
> så? F.eks. vil skarpe punktformige lyskilder og blanke, buede
> overflader være nærmest 'forbudt', da de meget let vil skabe en
> intens lille plet der ryger langt over styrken af gennemsnittet.
> Og det ville være lidt ærgeligt at 'forbyde' disse, da det ser
> skidegodt ud. Du må ha' et 48 bits/pixel grafikkort og en monitor
> med uforskammet stor lysstyrke!
>
> Raytracing giver en dynamik der svarer ganske meget til
> virkelighedens.
Tror problemet er den måde værdierne gemmes og mellemregnes på. Hvis det
endelige resultat skal en dybde på 8bit/pixel, så kan man godt lave alle
mellemregninger i 48 bit/pixel. Så kan man f.eks. sætte alt mellem 0-31 til
det som kan vises, og lade 32-47 være "over eksponerede". Disse kan
naturligvis ikke vises end mere end "max" i det færdige resultat, men det
kan jo være de bliver dæmpet i senere bergninger. På den måde mindskes tab,
og giver mere realisme.
Sørg for at "runde af" så sent så muligt, så du bevarer så mange nuancer som
muligt. Det er naturligvis langsommere med større typer, men hvis man
benytter sig af ægte raytracing, så er man vist forberedt på at spendere
lidt cycles på det, ellers havde man jo valgt andre shading typer.
| |
Janus Hansen (29-12-2003)
| Kommentar Fra : Janus Hansen |
Dato : 29-12-03 20:23 |
|
> Tror problemet er den måde værdierne gemmes og mellemregnes på. Hvis det
> endelige resultat skal en dybde på 8bit/pixel, så kan man godt lave alle
> mellemregninger i 48 bit/pixel. Så kan man f.eks. sætte alt mellem 0-31
til
> det som kan vises, og lade 32-47 være "over eksponerede". Disse kan
> naturligvis ikke vises end mere end "max" i det færdige resultat, men det
> kan jo være de bliver dæmpet i senere bergninger. På den måde mindskes
tab,
> og giver mere realisme.
Ja, det er sådan jeg gør nu. Har dog bare smattet noget lys ind uden hensyn
til de finere detaljer. Ville have styr på hvordan "overeksponering" skulle
behandles. Jeg regner naturligvis med bedre nøgajgtighed og konverterer
først til 24 bit rgb til slut når det hele skal tegned. Til da er farverne
tre doubles 0..1.
> Sørg for at "runde af" så sent så muligt, så du bevarer så mange nuancer
som
> muligt. Det er naturligvis langsommere med større typer, men hvis man
> benytter sig af ægte raytracing, så er man vist forberedt på at spendere
> lidt cycles på det, ellers havde man jo valgt andre shading typer.
ja, raytracing er jo ikke lige frem det hurtigste. Det er dog forbløffende
så flotte resultater man nemt kan få. Bare det at implementere textures,
bumpmapping og reflektion samt punktlys giver imponerende billeder.
| |
Janus Hansen (30-12-2003)
| Kommentar Fra : Janus Hansen |
Dato : 30-12-03 09:53 |
|
> Tror man må finde sig i en vis hvid-klipning. Det gør man også i
> TV/video sammenhæng, for at undgå det hele bliver for mørkt.
> Dynamikken i 'rigtigt' lys er simpelthen alt for stor til at
> kunne rummes i en signalvej der ofte kun er 8 bit dyb med lineær
> kvantisering, eller med 35-40dB's signal/støj-forhold, i analoge
> tilfælde.
Det er åbanbart et større emne end vi troede.
http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf
| |
Ulrik Smed (30-12-2003)
| Kommentar Fra : Ulrik Smed |
Dato : 30-12-03 10:55 |
|
Janus Hansen wrote:
> Det er åbanbart et større emne end vi troede.
> http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf
Ok, ser rimelig heftigt ud! Man klipper åbenbart ikke bare hårdt
og brutalt, men laver en ulinearitet i kontrasten (hvis jeg har
forstået pointen). Det eksempel med lampen i toppen af et rum med
to kasser er ret så overbevisende.
--
Ulrik Smed,
Denmark, Aarhus
| |
Janus Hansen (30-12-2003)
| Kommentar Fra : Janus Hansen |
Dato : 30-12-03 11:07 |
|
> Ok, ser rimelig heftigt ud! Man klipper åbenbart ikke bare hårdt
> og brutalt, men laver en ulinearitet i kontrasten (hvis jeg har
> forstået pointen). Det eksempel med lampen i toppen af et rum med
> to kasser er ret så overbevisende.
Ja, rangerende fra mørke med en enkelt lysplet til perfekt kontrast. Man kan
efterhånden ikke beskæftige sig med _noget_ uden at opdage at det er en
større videnskab. Nå, pyt. Så er der mere at lege med
| |
|
|