Bumpkortlægning og normal kortlægning er to forskellige metoder til at gøre det samme: at skabe illusionen af overfladestruktur til en visuel computermodel.
disse metoder er nyttige til at vide, om du opretter videospilkarakterer eller gengiver 3D-animationer.
Bump maps pålægger et gråtonebillede, så mørke pletter vises dybere og giver kontrast til lettere “bump.”Normale kort bruger en RGB-skala til at udlede 3D-vektornormer til 3D-overfladen. Dette tricks det gengivne lys til at skabe højdepunkter og skygger. Begge metoder forlader geometrien uændret.
at kende forskellene mellem disse to teknikker kan hjælpe med at bestemme, hvilken der er bedre egnet til den aktuelle applikation. Læs videre for at lære mere om begge dele, så du kan tilføje dem til din taske med tricks.
hovedforskellen er belysning
målet med begge disse kort er at give en overflade illusionen af tekstur på en overflade, der ikke har nogen tekstur. Dette er gavnligt for videospil, fordi det betyder, at modellens mesh ikke behøver at være så fint, at det fysisk fanger alle de små detaljer som et forskydningskort.
kortet skaber denne illusion ved at fordreje den måde, det gengivne lys interagerer med en overflade. Det er også her, hvor bump-kortet kan blive begrænsende, afhængigt af hvilket detaljeringsniveau du prøver at opnå.
- et bump kort fortæller renderer hvilke områder af en overflade er lysere og hvilke områder er mørkere, uanset retningen af lyskilden.
- et normalt kort relaterer kunstige overfladenormaler til resten af 3D-rummet og dikterer matematisk, hvordan tekstur interagerer med den gengivne lyskilde.
så resultatet i begge tilfælde er, at en geometrisk glat form ser ud til at have en meget detaljeret overfladestruktur. Bumpkortet begynder dog at vakle, når det teksturerede objekt ses fra forskellige vinkler. Den opfattede tekstur vil sandsynligvis ikke interagere med miljølyset på en troværdig måde.
for at forstå dette mere, lad os tage et kig på, hvordan hver metode går om rendering tekstur.
et Bump-kort bruger en indstillet Gråskala til at manipulere højde
hvis du skulle oprette et bump-kort eller bare se på et, vil du se et sort / hvidt billede. Der er ikke mere i det. I det væsentlige bruger kortet denne gråskala til at fortælle gengivelsesmotoren, hvilke pletter der er lyse, og hvilke pletter der er mørke.
- sorte områder på kortet angiver mørke eller “sunkne” steder på overfladen
- hvide områder på kortet angiver fremhævede eller “fremspringende” steder på overfladen
- og hver grå nuance imellem virker i overensstemmelse hermed.
de fleste renderingsmotorer gør dette ved at relatere gråtonen til overfladens normale vektor. Da de normale vektorer er, hvordan gengivelsesmotoren “ser” overfladen, er dette en måde at narre den til at gengive tekstur på en faktisk glat overflade.
forholdet mellem gråtoner og overflade normal er som sådan:
- Sort = tangent til overflade
- hvid = normal til overflade
og enhver grå nuance mellem ændrer vinklen på den normale vektor. Dette er smukt, fordi det gør det muligt for gråtonebilledet at fungere som oversætter mellem den menneskelige spildesigner, der ser et billede i sort & hvid, og gengivelsesmotoren, der ser et billede i form af overfladenormaler.
nu, som nævnt tidligere, er der en mangel på denne metode, da den vedrører belysning. Bump-kortet angiver en fast normal overfladefordeling. Med andre ord skaber det kun lokale lyseffekter. Det vil kun fortælle gengivelsesmotoren, hvilke områder af overfladen der er mørkere end andre i forhold til sig selv.
så bumpkortet giver ikke gengivelsesmotoren nok til at overveje, hvor den globale lyskilde kommer fra i forhold til detaljerne på en overflade. Dette kan føre til en situation, hvor skyggerne på en overflade faktisk vender mod lyskilden, og højdepunkterne er, hvor du forventer, at skyggerne skal være.
hvis slutbrugeren ser skygger, hvor deres øje forventer højdepunkter, kan de finde grafikken mindre troværdig. Dette betyder dog ikke, at bumpkort er helt forældede. De kan bruges alene eller sammen med andre kort for virkelig at forbedre den samlede gengivelse. Vi kommer lidt ind på nogle bedste fremgangsmåder, men først lidt på normale kort, og hvordan de interagerer med belysning.
et normalt kort bruger RGB til at manipulere lys
som vi har hentydet til, har normale kort Evnen til bedre at indarbejde global belysning i den opfattede overfladestruktur af et objekt.
de gør dette ved at give gengivelsesmotoren et tredje stykke information eller farvekanal, der skal bruges. I modsætning hertil giver et bump-kort teknisk kun to farvekanaler at bruge; sort eller hvid. Normal kortlægning bruger RGB-farveskalaen til at beregne en overflade normal fra tre komponentvektorer i stedet for to. RGB betyder i dette tilfælde:
- Rød
- grøn
- blå
for at forstå dette bedre uden at give en afhandling om lineær algebra, lad os hurtigt gå tilbage til at tænke på bumpkort i et sekund. Gråskyggen svarer i det væsentlige til vinklen på en vektor i forhold til selve overfladen. Denne vektor består af to komponentvektorer i kartesisk objektrum, en på tangentaksen (sort) og en på den normale akse (hvid).
jo tættere farven er på sort på et bestemt sted, jo lavere er vinklen mellem den normale vektor og selve overfladen. Omvendt, jo tættere på hvidt billedet er, jo tættere på ortogonal er den normale vektor.
men hvis vi opererer i 3D-rum, hvad med den tredje dimension? Det er her normale kort kommer ind med RGB i stedet for gråtoner. Ligesom bumpkortet har et normalt kort en tangentakse og en normal akse, men det introducerer også bitangentaksen. Og da der er en tredje akse, skal der være en tredje farve for at repræsentere den. Tabellen nedenfor illustrerer, hvordan hvert kort oversætter farver til vektorer.
vektor akse | Bump kort farve Oversættelse | Normal kort farve Oversættelse |
Normal | hvid | blå |
Tangent | Sort | Rød |
Bitangent | Ikke relevant | grøn |
nøglen til at forstå her er, at det normale kort har evnen til at definere overfladenormaler i 3D globalt rum, fordi der er tre vektorkomponenter, der udgør det normale. Hver af komponenterne kan relateres til de globale komponenter i det kartesiske verdensrum, hvor en lyskilde er fastgjort.
et bump-kort kan ikke gøre dette, fordi der ikke er nogen tredje komponent, der vedrører det normale til det globale kartesiske rum. Derfor kan du ende med højdepunkter, hvor du ville forvente skygger med bump mapping.
de tre vektorkomponenter i et normalt kort udgør et kartesisk system, hvilket betyder, at de alle er ortogonale over for hinanden. Koordinatsystemet kan dog stadig orienteres i en uendelig mængde retninger og skal begrænses på en eller anden måde, så kortet giver mening.
dette gøres ved at orientere vektorkomponenterne til kortets teksturkoordinater. De fleste rendering og 3D-modelleringsprogrammer vil dog gøre dette i baggrunden for dig, så ingen sved, hvis du ikke var opmærksom i lineær algebra klasse. Der er typisk 3 forskellige retninger at vælge imellem:
- Tangentrum
- Objektrum
- verdensrum
hver af disse har sine fordele og ulemper afhængigt af objektets anvendelse. Vi kommer ind på disse senere.
uanset hvilken retning der bruges, er det et vigtigt skridt, fordi det gør det muligt for renderingsmotoren at beregne overfladenormalerne på en måde, som de alle jævnt forholder sig til hinanden. Resultatet er en opfattet overfladestruktur, der reagerer ensartet på den globale lyskilde.
så det er den store forskel. Begge kort påvirker belysningen på en overflade, men de gør det på forskellige måder. Det normale kort udmærker sig i sin evne til at relatere en overfladestruktur til det 3D-rum, hvor det befinder sig. Dette vil i sidste ende give mere troværdige gengivelser, selvom det ikke er ualmindeligt at bruge bumpkort og normale kort sammen for at skabe meget detaljerede overflader.
igen ændrer ingen af disse metoder faktisk 3D-geometrien på den underliggende overflade.
en hurtig Note om normal kortretning
da normale kort bestemmer vinklen, hvor lyset reflekteres fra en overflade, er det vigtigt at overveje, hvordan selve kortet er orienteret i forhold til det objekt, det er anvendt på.
Tangentrum er mest almindeligt
når et normalt kort er orienteret i tangentrum, gemmes det teksturnormer i forhold til geometrien normal. Dette er typisk det mest alsidige, fordi det gør det muligt for objektet at bevæge sig og deformere i rummet, mens teksturens virkninger holdes intakte. Dette er især nyttigt, når du teksturerer ting som:
- en tegns hud
- bevægelige tekstiler
- objekter, der bevæger sig rundt og interagerer med brugeren
bundlinje; Brug dette, hvis det objekt, du teksturerer, bevæger sig rundt i rummet med brugeren.
Objektrum skaber højere kvalitet på bekostning af alsidighed
et normalt kort orienteret i objektrum beregner dets normaler i forhold til objektet som helhed. Objektet kan stadig bevæge sig, men hvis dets overflader deformeres, kan der være problemer med det normale. Kortene er normalt specifikt skræddersyet til det objekt, de anvendes på, hvilket fører til skarpere detaljer og bedre udjævning.
dette gør det dog vanskeligt at genbruge eller flise kortet på andre overflader. Teksturkoordinater kan heller ikke spejles. Så modellering tekstur på symmetriske objekter vil være to gange arbejdet.
verdensrummet skaber et helt fast kort
et normalt kort orienteret i verdensrummet er fast på plads i forhold til de globale 3D-koordinater. Dette betyder, at objektet, det anvendes på, skal forblive stationært; ellers vil det “glide ud” fra under kortet, hvis det flyttes.
dette er godt til at skabe høje detaljeringsniveauer på store, stationære genstande i et miljø.
Hvilket Kort Har En Bedre Rendering Hastighed?
mens gengivelseshastigheden er stærkt afhængig af selve gengivelsesmotoren, optager bumpkort og normale kort forskellige mængder hukommelse.
normalt er normale kort hurtigere at gengive end bump-kort.
forskellen er ikke drastisk, men den er der. Normale kort kant lidt ud bump kort, fordi de ikke kræver flere tekstur prøver som bump kort gør.
hvilken slags kort skal jeg bruge?
som med alt andet er der ingen enstemmig enighed om, at et af disse kort er bedre end det andet. Bump-kort og normale kort har begge fordele i forskellige applikationer. Lad os undersøge et par af disse.
bedste anvendelser til Normal kortlægning
vi har allerede berørt nogle af disse, når vi diskuterede de forskellige normale kortretninger. Generelt er normale kort den mest alsidige løsning, når du har brug for en struktur, der reagerer godt på bevægelse. Dette kan gælde for næsten alt:
- tegn
- våben/værktøjer/objekter
- køretøjer
- Tekstiler
- løv
normale kort er også nyttige til at bringe detaljer i dele af miljøet, der forventes at blive set tæt på.
- vægge
- gangbroer
- skiltning
normale kort er ekstremt alsidige, især med tangentrumorientering. De vikles også rundt om kanterne for at skabe en gunstig beveling-effekt, noget som bump maps ikke kan gøre. Dette blødgør ellers skarpe kanter på et objekt, der ikke ser ud til at have skarpe kanter, hvilket gør billedet mere troværdigt.
dette opnår ikke det samme detaljeringsniveau som et forskydningskort (som vi kort vil berøre i slutningen af denne artikel), men det skaber i det mindste illusionen af afrundede kanter på ting som:
- dørhåndtag
- Våbenhåndtag
- væghjørner
denne subtile effekt kan ikke opnås med et bump-kort.
bedste anvendelser til Bumpkortlægning
Bumpkort bruges bedst til baggrundsflader eller relativt små genstande. Tænk miljøfunktioner, der skal opfattes i det fjerne.
- operationsstue
- Landskaber
- bybilleder
da bumpkort ikke klarer sig så godt som normale kort på bevægelige objekter, er de let anvendelige til en scenes baggrund eller midtdetaljeniveau aspekter. Da de er lettere at oprette og ikke kræver så meget vektorberegning, er de den lavere indsatsmulighed.
men når de anvendes på dele af et miljø, der ikke vil være under så meget kontrol, giver bump maps mest bang for din ordsprogede buck.
de kan bruges sammen, også
glem ikke, at bump kort og normale kort kan være lagdelt over hinanden for at skabe endnu mere dybde af detaljer til din rendering.
som med ethvert teksturkort kan du lag så mange eller så få, som du vil, for at opnå det ønskede detaljeringsniveau.
- Bump maps juster den opfattede højde af en overflade i forhold til sig selv
- normale kort juster den opfattede vinkel, hvor lyset reflekteres fra overfladen
Kombiner disse to for at afbalancere fordelene ved både højde-og vinkelmanipulation af din overflade.
For At Opsummere Det.
forskellen mellem et bump-kort og et normalt kort er, hvordan hver manipulerer en overflade for at interagere med lys. Bump maps arbejde i” to dimensioner ” ved hjælp af en gråtoner til kunstigt at flytte dele af en overflade op eller ned. At bevæge sig op betyder lysere, og at bevæge sig ned betyder mørkere.
normale kort fungerer i “tre dimensioner” ved hjælp af røde, grønne og blå farvekanaler til kunstigt at manipulere den retning, i hvilken lys reflekteres fra en overflade.
kortene kan bruges sammen eller individuelt, og ingen af teksturkortene ændrer faktisk overfladens geometri. Mens normale kort kan vikle rundt om kanterne for at skabe en skrå effekt, mangler begge disse kort Evnen til at producere illusionen af tekstur langs en kant.
Bonus: Hvad Med Forskydningskort?
hvis du har brug for at gengive kanterne på en overflade, så objektets silhuet matcher tekstur, klipper et bump-kort eller et normalt kort det ikke.
fordelen ved bumpkort og normale kort er, at de skaber illusionen af tekstur uden faktisk at ændre overfladens maske. Det betyder, at modelstørrelsen kan forblive lille, og gengivelsestiden er stadig ret hurtig. Men dette begrænser mængden af detaljer på objektkanter.
det er her forskydningskort kommer ind. Overvej eksemplet på en mur. Murstenene stikker ud i forhold til mørtelen, der holder dem sammen. Så hvis du kiggede rundt om kanten af dette hjørne, ville det ikke se ud til at være en lige linje, murstenene ville stikke ud, og mørtelen ville trække sig tilbage.
hverken normale kort eller bumpkort kan opnå denne illusion, og det ville bare være en kedelig opgave at sidde der og faktisk modellere alle disse mursten. For ikke at nævne, det ville gøre din 3d-model temmelig klodset.
det er her forskydningskortlægning kommer ind. Det, som et bump kort, justerer højden af en overflade. Men i stedet for at manipulere belysningen manipulerer den objektets faktiske form, når den gengives. På grund af dette kræver det mere renderingstid og et meget finere maske på overfladen. For eksempel skal den større overflade opdeles i hundreder, mere sandsynligt tusinder, af individuelle overflader.
dette er dog det værd, hvis gengivelsesmotoren er kraftig nok, og detaljerne er nødvendige.
nedenfor er nogle nyttige videoer til at vise disse begreber visuelt:
Bump mapping: