Reljefa kartēšana

thumb|387x387px|Lode bez ''bump mapping'' (pa kreisi). ''Bump map'', ko pielietos lodei (pa vidu). Lodei, kurai ir pielietota ''bump map'' (pa labi), virsma izskatās nelīdzena, atgādinot apelsīnu. ''Bump map'' panāk šo efektu, izmainot to, kā izgaismotās virsmas reaģē pret gaismu, neizmainot paša objekta virsmu lielumu vai formu.
**Reljefa kartēšana** ( — ‘punu iezīmēšana’) ir datorgrafikas tehnika, lai simulētu nelīdzenumus un rievas uz objekta virsmas. Tas tiek panākts, izmainot objekta virsmas perpendikulu (normālvērtības) leņķi, un to izmanto apgaismošanas aprēķinos. Rezultātā rodas vizuāli nelīdzena virsma, par spīti tam, ka pamata objekta struktūra nav izmainīta. *Bump mapping* 1978. gadā izgudroja Džeimss Blinns *(James Blinn)*.

*Normal mapping* ir visbiežāk izmantotais *bump mapping* paveids.

## Bump mapping pamati

Bump mapping ir datorgrafikas tehnika, lai atveidotā virsma izskatītos vairāk reālistiskāka, imitējot nelielus virsmas pārvietojumus. Taču, atšķirībā no displacement mapping, virsmas ģeometrija netiek izmainīta. Tā vietā, virsmas perpendikuli tiek lokāli modificēti tā, lai izskatītos, ka virsmas ģeometrija ir izmainīta. Tālāk šie modificētie perpendikuli tiek izmantoti ēnošanas aprēķinos, piešķirot objektam sīku daļiņu detalizējumu.

thumb|398x398px|Bump mapping ir limitēta — šī tehnika neizmaina objekta formu. Pa kreisi, matemātiska funkcija definējot bump map, simulē nelīdzeno lodes virsmu, bet lodes kontūra un ēna paliek kā perfektai lodei. Pa labi, izmantota tā pati funkcija, lai modificētu lodes virsmu, ģenerējot isovirsmu. Šī metode izveido lodes modeli ar nelīdzenu virsmu, ar rezultātu, kas attēlo lodes kontūru un ēnu reālistiski.

Bump mapping ir daudz ātrāka un patērē mazāk resursu tādam pašam detalizējuma līmenim, kādu var iegūt ar displacement mapping, jo objekta ģeometrija paliek nemainīga.

Pastāv arī papildinājumi, kas izmaina ģeometriju, lai palielinātu dziļuma sajūtu.

Galvenais ierobežojums ir tāds, ka šī tehnika neizmaina objekta ģeometriju, līdz ar to objektu silueti un ēnas neizmainīsies, ko visvairāk var pamanīt lielākās simulācijās. Šo ierobežojumu var pārvarēt ar citām tehnikām, piemēram, displacement mapping, kur nelīdzenumi tiek pielietoti uz objekta ģeometrijas. Izmantota var tikt arī izovirsma (isosurface).

### Metodes

Ir divas galvenās metodes, lai veiktu bump mapping. Pirmā ir izmantojot augstuma kartes, lai simulētu virsmas izmaiņas, izmantojot izmainītas normālvērtības. Šo metodi izgudroja Blinns, un parasti uz to atsaucas, kā uz bump mapping, ja nav norādīts citādāk. Šīs metodes soļi aprakstīti zemāk.

Pirms tiek veikti apgaismošanas aprēķini katram redzamajam punktam uz objekta virsmas:

# Atrast augstumu iekš augstumu kartes, kas atbilst vietai uz virsmas.
# Aprēķina virsmas normālvērtību augstuma kartei, parasti izmantojot galīgās atšķirības metodi.
# Apvieno virsmas normālvērtības no otrā soļa ar patiesajām virsmas normālvērtībām, lai apvienotie normālvērtību punkti vērstos citā virzienā.
# Aprēķina jaunās "nelīdzenās" virsmas mijiedarbību ar gaismām izmantojot, piemēram, Phong ēnojuma modeli.
 
Iznākums ir virsma, kurai izskatas, ka ir patiess dziļums. Algoritms arī nodrošina, lai virsma izskats mainītos, ja gaismas pozīcija tiek mainīta.

Otra metode ir norādot normal map, kas satur modificētu normālvērtību katram virsmas punktam. Tā kā normālvērtības tiek dotas tieši, nevis aprēķinātas no augstuma kartes, šī metode sniedz vairāk paredzamus rezultātus. Šī metode atvieglo darbu māksliniekiem, padarot to par visbiežāk lietoto bump mapping metodi.

## Reāllaika reljefa kartēšanas tehnikas

Reāllaika 3D grafikas programmētāji bieži izmanto dažādas tehnikas, lai simulētu bump mapping ar pēc iespējas zemākām aprēķināšanas izmaksām.

Viens tipisks veids ir izmantot fiksētu ģeometriju, kas ļauj izmantot augstuma kartes virsmas normālvērtības gandrīz tieši. Apvienojumā ar iepriekšaprēķinātu tabulu apgaismošanas aprēķiniem, šī metode var tikt ieviesta ar ļoti vienkāršu un ātru ciklu, ļaujot izveidot pilnekrāna efektu. Šī metode bija tipisks vizuālais efekts, kad bump mapping tika pirmoreiz ieviesta.

## Skatīt arī
* Normal mapping
* Parallax mapping
* Texture mapping

## Atsauces