Syvyyskarttojen luominen PovRay -ohjelmallaKirjoittaja: Paul BourkeSyyskuu 2019
Seuraavaksi esittelemme, miten syvyyskarttoja voidaan luoda PovRay -ohjelmalla. Stereoskopiassa on useita sovelluksia, mutta tämän artikkelin kirjoittamishetkellä motiivina oli luoda syvyyskarttoja FaceBookin 3D-mallikuville. Nämä ottavat kuvan sekä siihen liittyvän syvyyskarttakuvan, jolloin katsoja voi muuttaa näköpistettään hiukan vasemmalle-oikealle-ylös-alas. Alla on esimerkki siitä, mitä FaceBook hyväksyy, kun 3D-malli ladataan. Se koostuu pääkuvasta ja toissijaisesta kuvasta, jolla on sama nimi, mutta lisätekstinä "_depth". Ilmeisesti näiden odotetaan vastaavan toisiaan ja ne luodaan samasta näkymästä. Tässä toissijaisessa kuvassa valkoinen tarkoittaa kameran lähellä olevia objekteja ja musta kauempana olevia objekteja.
Syvyyskarttoja voidaan luoda useilla eri tavoilla. Esimerkiksi alueita voidaan peittää manuaalisesti ja syvyyskarttoja voidaan luoda kuvankäsittelypaketissa. Syvyyskarttoja voidaan luoda ottamalla useita (vähintään 2) valokuvia esineestä tai näkymästä ja käyttämällä fotogrammetrisiä tekniikoita syvyyskarttojen muodostamiseen. Tässä artikkelissa aiomme esitellä vain, miten PovRay-ohjelmaa voidaan käyttää olemassa olevan 3D-mallin syvyyskarttojen luomiseen. Periaatteet ovat todennäköisesti samanlaisia muissa renderointipaketeissa, mutta terminologia on erilainen. Esimerkiksi jäljempänä esitettyä viittausta gradienttipigmenttiin kutsutaan muissa pakkauksissa varjostimeksi. PovRayn perusominaisuudet, joita voidaan käyttää syvyyskarttojen luomiseen, ovat "gradientin" pigmentin ja "colour_maps" -värikarttojen yhdistelmä. Gradienttipigmentti tuottaa luvun väliltä 0–1 riippuen objektin pinnalla olevan pisteen asennosta. Colour_map -värikarttaa käytetään kyseisen arvon kartoittamiseen mustavalkoiseen luiskaan, joka lopulta kartoitetaan takaisin syvyyteen. Tässä voidaan käyttää seuraavaa PovRay-koodinpätkää. #declare thetexture = texture { pigment { gradient z color_map { [0 color rgb <0,0,0> ] [1 color rgb <1,1,1> ] } scale <1,1,ZMAX-ZMIN> translate <0,0,ZMIN> } finish { ambient 1 diffuse 0 specular 0 } } Huomioita edellisestä:
Toinen esimerkki. Nämä ovat tiilinorsuja, jotka pitelevät tasoa, jolle stupa on rakennettu, ja se sijaitsee Sukhothaissa, Thaimaassa.
Esimerkki Siew San Tengin temppelistä Kuchingista, Itä-Malesia.
|