3D-grafiikka

**3D-grafiikka** eli **kolmiulotteinen grafiikka** () on tietokonegrafiikkaa, joka on sisäisesti mallinnettu kolmen tilaulottuvuuden suhteen. 3D-grafiikka projisoidaan kaksiulotteiselle kuvapinnalle.

Tyypillisiä 3D-grafiikan sovellusalueita: 
* Tietokoneavusteinen suunnittelu
* Kuvitus mm. aikakauslehdissä ja televisiossa
* Itsenäinen kuvataide
* Tietokone- ja videopelit
* Elokuvat ja TV-ohjelmat

3D-grafiikka perustuu grafiikkaprimitiiveille, joka on tyypillisesti polygoni. Tämän lisäksi on matemaattisesti kuvattuja pintoja, kuten NURBS-pintoja. 3D-grafiikka käyttää kolmiulotteisella mallinnuksella määriteltyjä kappaleita, joista esitettävät pinnat ja primitiivit muodostuvat, esimerkiksi geometriset mallit ja matemaattiset mallit.

Esittämistä varten kolmiulotteisen mallin kuvaus muutetaan esitettävään muotoon renderöinnillä. 3D-grafiikka käyttää myös eräitä samoja algoritmeja kuin kaksiulotteinen vektorigrafiikka (polygonimallien käsittelyssä) ja kaksiulotteinen lopullinen kuva eli bittikarttagrafiikka. Lisäksi on olemassa vokseliin eli kolmiulotteiseen pikseliin perustuvaa vokseligrafiikkaa.

## 3D-grafiikan renderöintitapoja

Kolmiulotteisen grafiikan automaattista piirtämistä esimerkiksi kaksiulotteiselle pinnalle sanotaan *3D-[[renderöinti|renderöinniksi]]*. Se tarkoittaa esimerkiksi kappaleen varjostusta siten, että syntyy vaikutelma kolmiulotteisuudesta. Renderöintitekniikat vaihtelevat etenkin sen mukaan, kuinka paljon aikaa ja laitteistoresursseja yksittäisen kuvan piirtämiseen on käytettävissä.

Reaaliaikainen 3D-animaatio, jota käytetään esimerkiksi tietokonepeleissä ja demoissa, vaatii yksittäisen kuvan piirtoa sekunnin murto-osassa. Tämän vuoksi piirtomenetelmät ovat melko suoraviivaisia ja rasterointipohjaisia; rasterointipohjaisissa menetelmissä pinnan valaistus ei perustu säteenseurantamenetelmään. Näille piirtoalgoritmeille on tehokkaita laitteistotason toteutuksia nykyaikaisissa grafiikkasuorittimissa.

Sekä rasterointi- että säteenseurantamenetelmät voivat käyttää geometriatietona polygonia tai vektoriformaattia, mutta suurin ero kuvan laadussa ja suorituskyvyssä tulee säteenseurannan vaatimasta laskentamäärästä valonsäteiden heijastuksien ja hajoamisen määrien vuoksi. Säteenseurantaa varten eräissä grafiikkasuorittimissa on erikoistuneita toimintoja nopeuttamaan BVH-hakuja () vähentämällä tarvittavia säteiden leikkauskohtien hakuja, mutta menetelmä ei täysin korvaa rasterointia laskennan vaativuuden vuoksi. Kehitykseen vaikutti grafiikkasuorittimien muuttuminen kiinteätoimisista suurempaan ohjelmoitavuuteen.

Reaaliaikaisen grafiikan renderöintiin käytetään ohjelmointirajapintoja, joita ovat esimerkiksi Khronos Groupin OpenGL, Microsoftin Direct3D, Applen Metal, AMD:n Mantle ja uusimpana rajapintana Vulkan.

Elokuvateollisuudessa ja kuvituksessa näyttävyys on piirtonopeutta tärkeämpi prioriteetti, joten niissä saatetaan käyttää laskennallisesti vaativampia menetelmiä kuin reaaliaikaisessa grafiikassa. Esimerkiksi kaustiset ilmiöt, jossa valonsäteet kulkevat kaarevan pinnan läpi.

Pyyhkäisyviivarenderöinti () oli suosittua, kun rasterointi oli vielä uutta. Pyyhkäisyviivamenetelmää käytti muun muassa RenderManin edeltäjä Reyes.

Suunnitteluohjelmistoissa (CAD/CAE) mallintamiseen käytettävät ohjelmistot vaativat pinnoilta hyvää tarkkuutta. Parhaat ohjelmistot laskevat pinnat käyrien perusteella NURBS-pintoina. Jotkin ohjelmistot kykenevät myös reaaliaikaiseen toimintojen mallintamiseen ja simulointiin.

## Rasterointi

Reaaliaikaisen 3D-grafiikan renderöinnin yleisin menetelmä on *rasterointi*. Rasterointi tarkoittaa jatkuva-geometrisen esityksen (kolmion) muuntamista diskreettiin geometriaan pikselipohjaiselle näyttölaitteelle. Grafiikkaliukuhihnassa rasterointi muuttaa grafiikkaprimitiivit pikseleiksi: jokainen näkyvä reuna ja kolmio jokaisessa kappaleessa esitetään näyttöavaruudessa. Tekstuurit liitetään ja Z-puskurin syvyystiedolla käsitellään näkyvyydet sekä tehdään muut alpha- ja stencil-tarkistukset.

Toisin kuin säteenseuranta-algoritmeissa, rasteroidessa ei käytetä valonheijastuksia arvioimaan, mitkä pinnat näkyvät lopputuloksessa (suoraan tai epäsuoraan mm. heijastuksien tai läpinäkyvyyden seurauksena). Rasterointi arvioi pintojen sijaintia ja piiloon jäämistä syvyyssijainnin perusteella.

Videopeleissä säteenseurantaa käytetään rasterointimenetelmän kanssa, jonka avulla säteenseurannalla tuotetut varjot ja valaistus yhdistetään. Polunseuranta (*path tracing*) on eräs tavoiteltava renderöintimuoto.

Rasterointimenetelmässä käytetään *ympäristökarttoja* tai *kuutiokarttoja* () heijastuksien sijaan: nämä ovat kiinteitä kuvia, jotka esittävät ympäristöä ja käytetään matkimaan heijastusta ilman säteenseurannan laskennallista vaativuutta. Kuutiokartat näytteistetään siihen tarkoitetulla menetelmällä suuntavektorin avulla, joka eroaa tavallisesta teksturoinnista.

## Katso myös
* Vokseli
* 3D-grafiikkaohjelma
* Kolmiulotteisuus
* 3D-televisio
* 3D-mallinnus
* Säteenseuranta
* Säteensuuntaus

### Suomalaisia alan ohjelmistoja Wikipediassa
* Realsoft 3D

## Lähteet

## Aiheesta muualla

* Suosittu suomalainen 3D-alan sivusto ja foorumi 
* Povray
* Realsoft 3D