3D-renderdamine

**3D-renderdamine** (ingl *3D-rendering*) on 3D-graafika protsess, mis koosneb automaatsest teisendusest 3D-sõrestikmudeleid (ingl *wireframe model*) 2D-piltidesse arvutis. 3D-viimistlused võivad sisaldada fotorealistlikke efekte või mittefotorealistlikku renderdust (ingl *non-photorealistic rendering*).

## Viimistluse meetodid
Viimane samm, mille abil valmistatakse tegelikult 2D-pildi või animatsiooni ettevalmistatud stseenist, on viimistlus. Seda saab võrrelda pildistamise või stseeni filmimisega pärast seda, kui kõik ettevalmistused on reaalses elus lõpule jõudnud. Välja on töötatud mitu erinevat ja tihti spetsialiseeritud viimistlusmeetodit. Need ulatuvad selgelt ebarealistlikust sõrestiku tajustamisest hulknurkse viimistluse kaudu kuni rohkem edasijõudnute meetoditeni, nagu rida-realt skaneerimine (ingl *scanline rendering*), kiirte jälitus (ingl *ray tracing*) või *[[radiosity]]*. Ühe pildi/kaadri viimistlumiseks võib võtta sekundi murdosadest mitu päevani. See sõltub sellest, kui palju objekte on stseenis, kui keerulised need objektid on, kas on olemas valgustamine jne. Üldiselt ei eksisteeri mingit meetodit, mida saaks alati kasutada – erinevad meetodid on parem kas fotorealistlikuks või reaalajalikuks viimistluseks.

## Reaalaja viimistlus
Interaktiivse meedia viimistlust, näiteks mängude ja simulatsioonide jaoks, arvutatakse ja kuvatakse reaalajas ligikaudu 20–240 kaadrit sekundi kohta. Reaalajas viimistluse eesmärgiks on näidata nii palju informatsiooni kui silm võib töödelda sekundi murdosa jooksul (n-ö ühes kaadris. 30 kaadri sekundis oleva animatsiooni korral hõlmab kaader 1/30 sekundit). Peamine eesmärk on saavutada fotorealismi võimalikult kõrgemat taset võimalikult minimaalse vastuvõetava viimistluskiirusega (tavaliselt 24 kaadrit sekundis, kuna see on minimaalne, kui palju inimese silm vajab liikumise illusiooni edukaks loomiseks). Tegelikult saab lahendusi rakendada nii, nagu silm "tajub" maailma, ja selle tulemusena ei pruugi lõplik pilt olla tingimata reaalmaailmaline, vaid üks piisavalt sarnane, et inimese silm saaks taluda. Viimistluse tarkvara võib teeselda niisuguseid visuaalseid efekte nagu teravussügavus (ingl *Depth of field*) või liikumise hägustumine (ingl *Motion blur*). Need on katsed simuleerida kaamerate ja inimese silmade optilistest omadustest tulenevaid visuaalseid nähtusi. Need efektid võivad stseenile realismi elementi lisada, isegi siis, kui see on ainult kaamera simuleerimine. See on mängude, interaktiivsete maailmade ja VRML-i jaoks põhiline meetod. Arvuti andmetöötluse võimsuse kiire kasv on võimaldanud isegi reaalajas toimuvat viimistlust järk-järgult realistlikumalt, sealhulgas selliste tehnoloogiatega nagu HDR-i viimistlus (ingl *High-dynamic-range rendering*). Reaalajaline viimistlus on sageli hulknurkne ja seda toetatud arvuti graafikaprotsessori abil.

## Mitte-reaalaja viimistlus
Mitteinteraktiivse meedia, näiteks täispikkulise filmide ja videote jaoks, animatsioone viimistletakse palju aeglasemaks. Mitte-reaalajas viimistlemine võimaldab piiratud töötlemisvõimsuste kasutamist parema pildikvaliteedi saavutamiseks. Üksikute kaadrite viimistlemisajad võivad keerukate stseenide puhul erineda mõnest sekundist kuni mitme päevani. Viimistletud kaadrid salvestatakse kõvakettale, seejärel saab neid teistele meediale, nagu näiteks optilisele andmekandjatele. Seejärel kuvatakse need kaadrid järjest kõrgetel kaadrisagedustel, tavaliselt 24, 25, 30 või juba nüüd ka 48 kaadrit sekundis, et saavutada liikumise illusiooni.

Kui eesmärk on foto-realismi efekti saavutamine, kasutatakse niisuguseid tehnikaid nagu kiirte jälitus või *radiosity*. See on digitaalse meedia ja kunstiteoste peamine meetod. On välja töötatud tehnikad, et jäljendada teisi looduslikult esinevaid mõjusid, näiteks valguse koostoime erinevate ainevormidega. Selliste tehnikate näited hõlmavad osakeste süsteemi (ingl *particle system*) (mille abil saab simuleerida vihma, suitsu või tuli), ruumiliset diskreetimist (ingl *volumetric sampling*) (et simuleerida udu, suitsu või teist ruumilist atmosfäärinähtust), kaustikat (et simuleerida valguse fookustamist ebaühtlaste valguse murduvate pindade pärast, näiteks ujumisbasseini põhjal nähtavad valguse säbarlainetused) ja alampinna hajumine (et simuleerida valguse peegeldumist tahkete esemete mahtude sees, näiteks inimese nahk).

Viimistlusprotsess on arvutuslikult kallis, arvestades simuleeritud füüsikaliste protsesside keerukat valikut. Arvutitöötlemisvõimsus on aastate jooksul kiirelt kasvanud, võimaldades realistlikuma viimistluse järk-järgult kõrgemat taset. Filmistuudiod mis valmistavad arvuti-genereeritud animatsioone, kasutavad tavaliselt viimislemisklastrid (ingl *render farm*), et pilte õigeaegselt genereerida. Kuid riistvara hindade vähenemine tähendab, et koduses arvutisüsteemis on täiesti võimalik luua 3D-animatsiooni väikesed kogused. Renderduse väljundit kasutatakse sageli ainult nagu üks väike osa lõpetatud filmimaastikust. Paljud materjali kihid võivad olla eraldi viimistletud ja integreeritud lõpptulemusse, kasutades kompositsioonitarkvara (ingl *compositing software*).

## Peegeldus- ja varjustusmudelid

Peegelduse/hajumise ja varjustuse mudelit kasutatakse pinna välimuse kirjeldamiseks. Kuigi need eesmärgid võivad tunduda endiselt probleemidena, peaaegu uuritakse neid eranditult renderdamise kontekstis. Tänapäevane 3D-graafika toetub suuresti lihtsustatud peegeldusmudelile, mida nimetatakse Phongi peegeldumismudeliks (ingl *Phong reflection model*) (ei tohi segi ajada Phongi varjamisega; *Phong Shading*)). Valguse murdumisel on oluline murdumisnäitajaks (ingl *refractive index*). Enamikus 3D-programmeerimisrakenduses on selle väärtuse mõiste "murdetegur" (ingl *index of refraction*). Varjustamine võib jagada kaheks tehnikaks, mida sageli uuritakse iseseisvalt:

* **pinna varjustus** – kuidas valgus levib üle pinna (seda kasutatakse peamiselt rida-realt skaneerimise jaoks, mis on mõeldud videomängude reaalajas 3D-viimistluseks);
* **peegeldus/hajumine** – kuidas valgus suhtleb teatud punktis teatud pinnaga (enamasti kasutatakse kiirte jälituse viimistluseks mitte-reaalajas fotorealistliku ja kunstilise 3D-viimistluse jaoks nii CGI-il staatilisel 3D-piltidel kui ka CGI mitteinteraktiivsetel 3D-animatsioonidel).

### Pinna varjustus
3D-arvutigraafika populaarsemaid pinnaviimistlusalgoritmid on järgmised:

* lamevarjustus – meetod, mis varjab objekti igat polügooni, mis põhineb hulknurga "normaalist" ja valgusallika asukohta ja intensiivsust. Meetodis ei ole rakendatud mingit parandusalgoritmi valguse peegeldamiseks.
*Gouraud' varjustus (ingl *Gouraud shading*) – H. Gouraud 1971. aastal pakkus kiire ja ressursi teadlik tippude varjunditehnikat, mida kasutatakse sujuvalt varjustatud pindade jäljendamiseks.
* Phongi varjustus (ingl *Phong shading) – Bui Tuong Phong aastatel 1973–1975 leiutas meetodi, mida kasutatakse peegelpiltide ja siledate varjustatud pindade jäljendamiseks.

=== Peegeldus ===
*'Peegeldus** või **hajumine** on seos saabuva ja väljamineva valgustuse vahel antud punktis. Hajumise kirjeldused on tavaliselt antud [[Kahepoolne hajumise jaotusfunktsioon|kahepoolse hajumise jaotusfunktsiooni]] (või [[BSDF|BSDF-i]]) (ingl ''bidirectional scattering distribution function'') tähenduses.

=== Varjustus ===

**Varjustamine*' näitab, kuidas erinevad hajumistüübid jaotuvad pinnale (s.t milline hajumisfunktsioon kehtib millises kohas). Sellised kirjeldused on tavaliselt väljendatud programmiga, mida nimetatakse [[varjutaja]]ks (ingl *shade* – vari). (Pange tähele, et on segadust, kuna sõna "shader" inglise keeles kasutatakse mõnikord programmide puhul, mis kirjeldavad kohalikku *geomeetrilist* variatsiooni). Lihtne näide varjutamisest on tekstuuri kaardistamine või tekstuurimine, mis kasutab [[rastergraafika]]t, et määrata hajuvat värvi igas pinnaosas, andes sellele selgemat detaili.

Mõned varjutamismeetodid sisaldavad ka järgmist:
* [[Kühmutus]] (ingl *bump mapping*) – välja töötatud Jim Blinn, normaalne-häiring tehnikat, mida kasutatakse kortsus pindade simuleerimiseks.
* [[Cel varjustamine]] (ingl *Cel shading*) – meetod, mida kasutatakse käekujutise animatsiooni jäljendamiseks.

=== Projektsioon ===

Varjustatud kolmemõõtmelised objektid peavad olema lamestatud nii, et kuvaseade – nimelt kuvar – suudab seda kuvada vaid kahes mõõtmes, seda protsessi nimetatakse [[3D projektsioon|3D-projektsiooniks]] (ingl *3D-projection*). Seda tehakse kasutades projektsiooni ja, enamiku rakenduste puhul, [[perspektiiv]]vaadet. Perspektiivprojektsiooni põhieesmärk on, et kaugemal asuvad objektid on võrreldes nende objektidega, mis on silmade/kaamera lähedal, väiksemad. Programmid toovad perspektiivi, korrutades paisutuse konstanti, mis on üles tõstetud vaatleja kauguse negatiivse võimsusega. Kui paisutuse konstant võrdub üks, tähendab seda, et perspektiivi pole. Suured paisutuse konstandi väärtused võivad põhjustada "kalasilma" efekti, mille käigus tekib pildi moonutus. [[Ortograafiline projektsioon|Ortograafilist projektsiooni]] (ingl *Orthographic projection*) kasutatakse peamiselt [[Raalprojektimine|CAD-i]] (ingl *Computer-aided design'') või CAM-i rakendustes, kus teaduslik modelleerimine nõuab täpset mõõtmist ja kolmanda mõõtme säilimist.

## Vaata ka
* Arvutinägemine
* Graafika
* Digitaalne pilditöötlus

## Viited