|
| Perlin noise og integration gennem et støj~ Fra : Jakob Nielsen |
Dato : 12-01-07 14:30 |
|
Hvis jeg har en gang 3D perlin noise og ønsker at få integralet af støjen
langs en linie igennem dette 3d støjrum, så burde det kunne gøres. Kender
nogen her en metode?
Som eksempel har jeg støjen og en observatør. Der ses i en retning langs en
vektor på et objekt lidt væk, og der dannes en linie. Nu vil jeg gerne have
integralet af støjen langs denne linie så jeg kan rendere objektet og
derefter for hver pixel overlejre støjen. Dette skal simulere at man ser et
objekt gennem skyer.
Hver 3d perlinstøj-oktav består af 8 målepunkter med en støjværdi. Disse 8
punkter er hjørnerne på en terning. Inde i terningen er støjværdien
defineret ved interpolation mellem hjørnerne. Hvis eksempelvis der bruges en
lineær interpolation, så bør man vel let (hmm) kunne finde integralet langs
en linie gennem terningen.
Hvis der sidder en matematiker som bare ikke lige kender perlin noise, så
lad mig forenkle spørgsmålet til
Man har en terning i 3D med 8 hjørnepunkter. Hvert hjørne har en værdi.
Enhver position i terningen har en værdi som er defineret ud fra lineær
interpolation mellem hjørnepunkternes værdier ...naturligvis baseret på
punktets afstand til hjørnerne.
Givet en linie der skærer igennem denne terning, hvad er så integralet af
støjfunktionen langs linien? Tegner man det op så afstanden langs linien er
x-aksen og den aktuelle støjværdi er y-aksen, så får man jo en kurve ud af
det. Jeg ønsker at integrere denne funktion så jeg har den samlede støj.
| |
Jakob Nielsen (12-01-2007)
| Kommentar Fra : Jakob Nielsen |
Dato : 12-01-07 14:49 |
|
> Man har en terning i 3D med 8 hjørnepunkter. Hvert hjørne har en værdi.
> Enhver position i terningen har en værdi som er defineret ud fra lineær
> interpolation mellem hjørnepunkternes værdier ...naturligvis baseret på
> punktets afstand til hjørnerne.
> Givet en linie der skærer igennem denne terning, hvad er så integralet af
> støjfunktionen langs linien? Tegner man det op så afstanden langs linien
> er x-aksen og den aktuelle støjværdi er y-aksen, så får man jo en kurve ud
> af det. Jeg ønsker at integrere denne funktion så jeg har den samlede
> støj.
Uhm...ok. den var vist ikke så svær. Jeg tænker tilsyneladende altid bedre
når jeg spørger andre. Så skal jeg bare lære at ikke trykke på "send".
Vil dette ikke virke?
Man finder positionen for liniens to skæringer med terningen, A og B. Der
findes man støjværdierne. Derefter ved man at da det jo er en lineær
interpolation mellem de to punkter, så vil midten have værdien
(n(A)+n(B))/2.. og alle andre punkter er efter samme model, så man har altså
en funktion hvor
f(0)=n(A) og f(1)=n(B) og den er lineær, så integralet er simpelt.
For at gøre det for en støj med flere oktaver, så finder man først summen af
al støjen langs en linie gennem de terninger der udgører en oktav, så tages
næste oktav og man lægger til. Man skal dermed reelt kun sample en gang per
terning linien skærer per oktav.
Ved ikke om det gav mening, men hvis ikke, så har jeg lige lavet helt to
ligegyldige indlæg. Det ser nu ok ud på papir.
| |
|
|