Bump mapping och normal mapping är två olika metoder för att göra samma sak: skapa en illusion av ytstruktur till en visuell datormodell.
dessa metoder är användbara för att veta om du skapar videospelkaraktärer eller gör 3D-animationer.
Bump kartor införa en gråskala bild, så mörka fläckar visas djupare och ger kontrast för ljusare ”gupp.”Normala kartor använder en RGB-skala för att härleda 3D-vektornormaler till 3D-ytan. Detta lurar det gjorda ljuset för att skapa höjdpunkter och skuggor. Båda metoderna lämnar geometrin oförändrad.
att känna till skillnaderna mellan dessa två tekniker kan hjälpa till att avgöra vilken som är bättre lämpad för den aktuella applikationen. Läs vidare för att lära dig mer om båda så att du kan lägga till dem i din väska.
Huvudskillnaden är belysning
målet med båda dessa kartor är att ge en yta en illusion av textur på en yta som inte har någon struktur. Detta är fördelaktigt för videospel eftersom det betyder att modellens nät inte behöver vara så bra att det fysiskt fångar alla små detaljer som en förskjutningskarta.
kartan skapar denna illusion genom att förvränga hur det gjorda ljuset interagerar med en yta. Det är också här bumpkartan kan bli begränsande, beroende på vilken detaljnivå du försöker uppnå.
- en bultkarta berättar för renderaren vilka områden på en yta som är ljusare och vilka områden som är mörkare, oavsett ljuskällans riktning.
- en normal karta relaterar artificiella ytnormaler till resten av 3D-utrymmet och dikterar matematiskt hur strukturen interagerar med den renderade ljuskällan.
så resultatet i båda fallen är att en geometriskt slät form verkar ha en mycket detaljerad ytstruktur. Bumpkartan börjar dock vackla när det texturerade objektet ses från olika vinklar. Den upplevda strukturen kommer sannolikt inte att interagera med miljöljuset på ett trovärdigt sätt.
för att förstå detta mer, låt oss ta en titt på hur varje metod handlar om att göra textur.
en Bump karta använder en uppsättning gråskala för att manipulera höjd
om du skulle skapa en bump karta eller bara titta på en, kommer du att se en svartvit bild. Det finns inget mer till det. I huvudsak använder kartan denna gråskala för att berätta för renderingsmotorn vilka fläckar som är ljusa och vilka fläckar som är mörka.
- svarta områden på kartan indikerar mörka eller ”sjunkna” platser på ytan
- vita områden på kartan indikerar markerade eller ”utskjutande” platser på ytan
- och varje grå nyans däremellan agerar i enlighet därmed.
de flesta renderingsmotorer gör detta genom att relatera gråtonen till Ytans normala vektor. Eftersom de normala vektorerna är hur renderingsmotorn ” ser ” ytan, är detta ett sätt att lura den till att göra textur på en faktiskt slät yta.
förhållandet mellan gråskala och yta normal är som sådan:
- Svart = tangent till yta
- Vit = normal till yta
och vilken grå nyans som helst mellan ändrar vinkeln på den normala vektorn. Detta är snyggt eftersom det gör att gråskalebilden kan fungera som en översättare mellan den mänskliga speldesignern, som ser en bild i svart & vit, och renderingsmotorn, som ser en bild när det gäller ytnormaler.
nu, som tidigare nämnts, finns det en brist på denna metod när det gäller belysning. Bumpkartan ställer in en fast yta normalfördelning. Med andra ord skapar det bara lokala ljuseffekter. Det kommer bara att berätta för renderingsmotorn vilka ytor på ytan som är mörkare än andra i förhållande till sig själv.
så ger bumpkartan inte renderingsmotorn tillräckligt för att överväga var den globala ljuskällan kommer ifrån i förhållande till detaljerna på en yta. Detta kan leda till en situation där skuggorna på en yta faktiskt står inför ljuskällan, och höjdpunkterna är där du förväntar dig att skuggorna ska vara.
om slutanvändaren ser skuggor där deras öga förväntar sig höjdpunkter kan de hitta grafiken mindre trovärdig. Det betyder dock inte att bumpkartor är helt föråldrade. De kan användas på egen hand eller tillsammans med andra kartor för att verkligen förbättra den övergripande rendering. Vi kommer in i några bästa metoder på lite, men först lite på vanliga kartor och hur de interagerar med belysning.
en normal karta använder RGB för att manipulera ljus
som vi har hänvisat till har normala kartor förmågan att bättre integrera global belysning i den upplevda ytstrukturen hos ett objekt.
de gör detta genom att förse renderingsmotorn med en tredje bit information eller färgkanal att använda. Däremot ger en bultkarta tekniskt bara två färgkanaler att använda; svart eller vitt. Normal mapping använder RGB-färgskalan för att beräkna en yta normal från tre komponentvektorer istället för två. RGB betyder i detta fall:
- röd
- grön
- blå
för att förstå detta bättre utan att ge en avhandling om linjär algebra, låt oss snabbt gå tillbaka till att tänka på bumpkartor för en sekund. Gråskuggan motsvarar väsentligen vinkeln på en vektor i förhållande till själva ytan. Den vektorn består av två komponentvektorer i kartesiskt objektutrymme, en på tangentaxeln (svart) och en på normalaxeln (vit).
ju närmare färgen är svart på en viss plats, desto lägre är vinkeln mellan den normala vektorn och själva ytan. Omvänt, ju närmare vit bilden är, desto närmare ortogonal är den normala vektorn.
men om vi arbetar i 3D-utrymme, hur är det med den tredje dimensionen? Det är här vanliga kartor kommer in med RGB istället för gråskala. Liksom bumpkartan har en normal karta en tangentaxel och en normal axel, men den introducerar också bitangentaxeln. Och eftersom det finns en tredje axel måste det finnas en tredje färg för att representera den. Tabellen nedan illustrerar hur varje karta översätter färger till vektorer.
vektor axel | Bump karta Färgöversättning | Normal karta Färgöversättning |
Normal | Vit | blå |
Tangent | Svart | röd |
Bitangent | N / A | grön |
nyckeln till att förstå här är att den normala kartan har förmågan att definiera ytnormaler i 3D globalt utrymme eftersom det finns tre vektorkomponenter som utgör den normala. Var och en av komponenterna kan relateras till de globala X -, Y-och Z-komponenterna i det kartesiska världsutrymmet där en ljuskälla är fixerad.
en bultkarta kan inte göra detta eftersom det inte finns någon tredje komponent som relaterar det normala till det globala kartesiska utrymmet. Det är därför du kan sluta med höjdpunkter där du kan förvänta dig skuggor med bump mapping.
de tre vektorkomponenterna i en normal karta utgör ett kartesiskt system, vilket betyder att de alla är ortogonala mot varandra. Koordinatsystemet kan dock fortfarande orienteras i en oändlig mängd riktningar och måste begränsas på något sätt så att kartan är meningsfull.
detta görs genom att orientera vektorkomponenterna till texturkoordinaterna på kartan. De flesta rendering och 3D-modellering programvara kommer att göra detta i bakgrunden för dig, men så ingen svett om du inte uppmärksamma i linjär algebra klass. Det finns vanligtvis 3 olika riktningar att välja mellan:
- Tangentutrymme
- Objektutrymme
- Världsutrymme
var och en av dessa har sina fördelar och nackdelar, beroende på objektets tillämpning. Vi kommer in i dessa senare.
oavsett vilken orientering som används är det ett viktigt steg eftersom det gör det möjligt för renderingsmotorn att beräkna ytnormalerna på ett sätt som de alla smidigt relaterar till varandra. Resultatet är en upplevd ytstruktur som reagerar enhetligt på den globala ljuskällan.
så det är den stora skillnaden. Båda kartorna påverkar belysningen på en yta, men de gör det på olika sätt. Den normala kartan utmärker sig i sin förmåga att relatera en ytstruktur till det 3D-utrymme där den finns. Detta kommer i slutändan att ge mer trovärdiga återgivningar, även om det inte är ovanligt att använda bumpkartor och normala kartor tillsammans för att skapa mycket detaljerade ytor.
återigen ändrar ingen av dessa metoder faktiskt 3D-geometrin hos den underliggande ytan.
en snabb anteckning om Normal Kartorientering
eftersom normala kartor bestämmer vinkeln vid vilken ljus reflekterar av en yta är det viktigt att överväga hur kartan själv är orienterad i förhållande till objektet den appliceras på.
Tangentutrymme är vanligast
när en normal karta är orienterad i tangentutrymme lagras dess texturnormaler i förhållande till geometrin normal. Detta är vanligtvis det mest mångsidiga eftersom det gör att objektet kan röra sig och deformeras i rymden samtidigt som texturens effekter hålls intakta. Detta är särskilt användbart vid texturering av saker som:
- en karaktärs hud
- rörliga textilier
- objekt som rör sig och interagerar med användaren
nedre raden; använd detta om objektet du texturerar kommer att röra sig i rymden med användaren.
Objektutrymme skapar högre kvalitet på bekostnad av mångsidighet
en normal karta orienterad i objektutrymme beräknar sina normaler i förhållande till objektet som helhet. Objektet kan fortfarande röra sig, men om dess ytor deformeras kan det finnas problem med det normala. Kartorna är vanligtvis skräddarsydda för objektet de appliceras på, vilket leder till skarpare detaljer och bättre utjämning.
detta gör det dock svårt att återanvända eller kakel kartan på andra ytor. Texturkoordinater kan inte heller speglas. Så, modellering av textur på symmetriska objekt kommer att vara dubbelt så mycket som arbetet.
World Space skapar en helt fast karta
en normal karta orienterad i världsrymden är fixerad på plats i förhållande till de globala 3D-koordinaterna. Det betyder att objektet som det appliceras på ska förbli stillastående; annars kommer det att” glida ut ” från under kartan om den flyttas.
detta är bra för att skapa höga detaljnivåer på stora, stationära objekt i en miljö.
Vilken Karta Har En Bättre Renderingshastighet?
medan renderingshastigheten är starkt beroende av själva renderingsmotorn, tar bumpkartor och normala kartor upp olika mängder minne.
normalt är normala kartor snabbare att göra än bumpkartor.
skillnaden är inte drastisk, men den är där. Normala kartor kantar lite ut bultkartor eftersom de inte kräver flera texturprover som bultkartor gör.
vilken typ av Karta ska jag använda?
som med någonting finns det ingen enhällig enighet om att en av dessa kartor är bättre än den andra. Bumpkartor och normala kartor har båda fördelar i olika applikationer. Låt oss utforska några av dessa.
bästa användningar för Normal kartläggning
vi berörde redan några av dessa när vi diskuterade de olika normala kartorienteringarna. Generellt sett är normala kartor den mest mångsidiga lösningen när du behöver en struktur som svarar bra på rörelse. Detta kan gälla nästan vad som helst:
- tecken
- vapen/verktyg / objekt
- fordon
- textilier
- lövverk
normala kartor är också användbara för att få detaljer i delar av miljön som förväntas ses på nära håll.
- väggar
- gångvägar
- skyltar
normala kartor är extremt mångsidiga, särskilt med tangent rymdorientering. De slingrar också runt kanterna för att skapa en gynnsam avfasningseffekt, något som bumpkartor inte kan göra. Detta mjukar annars skarpa kanter på ett objekt som inte verkar ha skarpa kanter, vilket gör bilden mer trovärdig.
detta uppnår inte samma detaljnivå som en förskjutningskarta (som vi kortfattat berör i slutet av den här artikeln), men det skapar åtminstone illusionen av rundade kanter på saker som:
- dörrhandtag
- Vapenhandtag
- vägghörn
denna subtila effekt kan inte uppnås med en bultkarta.
bästa användningsområden för Bump Mapping
Bump kartor används bäst för bakgrundsytor eller relativt små objekt. Tänk miljöfunktioner som ska uppfattas på avstånd.
- operationssal
- landskap
- stadsbilder
eftersom bumpkartor inte gör lika bra som vanliga kartor på rörliga objekt, är de lätt tillämpliga på en scens bakgrund eller mid-detail nivå aspekter. Eftersom de är enklare att skapa och inte kräver så mycket vektorberäkning, är de alternativet lägre ansträngning.
men när den appliceras på delar av en miljö som inte kommer att vara under så mycket granskning, ger bumpkartor mest bang för din ordspråkiga buck.
de kan också användas tillsammans
glöm inte att bumpkartor och normala kartor kan lagras över varandra för att skapa ännu mer detaljrikedom för din rendering.
som med alla texturkartor kan du lagra så många eller så få du vill för att uppnå önskad detaljnivå.
- Bumpkartor justera den upplevda höjden på en yta i förhållande till sig själv
- normala kartor justera den upplevda vinkeln vid vilken ljus reflekterar från ytan
kombinera dessa två för att balansera fördelarna med både höjd och vinkelmanipulation av din yta.
För Att Sammanfatta Det.
skillnaden mellan en bultkarta och en normal karta är hur varje manipulerar en yta för att interagera med ljus. Bumpkartor fungerar i” två dimensioner ” genom att använda en gråskala för att artificiellt flytta delar av en yta upp eller ner. Att flytta upp betyder ljusare och att flytta ner betyder mörkare.
normala kartor fungerar i ”tre dimensioner” genom att använda röda, gröna och blå färgkanaler för att artificiellt manipulera riktningen i vilken ljus reflekterar av en yta.
kartorna kan användas tillsammans eller individuellt, och varken texturkarta förändrar faktiskt Ytans geometri. Medan normala kartor kan lindas runt kanterna för att skapa en avfasningseffekt, saknar båda dessa kartor förmågan att producera en illusion av textur längs en kant.
Bonus: Vad Sägs Om Förskjutningskartor?
om du behöver göra kanterna på en yta så att objektets silhuett matchar strukturen, kommer en bultkarta eller normal karta inte att klippa den.
fördelen med bumpkartor och normala kartor är att de skapar en illusion av textur utan att faktiskt ändra Ytans nät. Det betyder att modellstorleken kan förbli liten, och renderingstiden är fortfarande ganska snabb. Men detta begränsar mängden detaljer på objektkanter.
det är här förskjutningskartor kommer in. Tänk på exemplet på en tegelvägg. Tegelstenarna sticker ut i förhållande till morteln som håller dem ihop. Så om du tittade runt kanten av det här hörnet verkar det inte vara en rak linje, tegelstenarna skulle skjuta ut och morteln skulle dra sig tillbaka.
varken normala kartor eller bumpkartor kan uppnå denna illusion, och det skulle bara vara en tråkig uppgift att sitta där och faktiskt modellera alla dessa tegelstenar. För att inte tala om, det skulle göra din 3D-modell ganska klumpig.
det är här förskjutningskartläggning kommer in. Det, som en bultkarta, justerar höjden på en yta. Men istället för att manipulera belysningen manipulerar den objektets faktiska form när den återges. På grund av detta kräver det mer renderingstid och ett mycket finare nät på ytan. Till exempel måste den större ytan delas upp i hundratals, mer sannolikt tusentals, enskilda ytor.
detta är dock värt det om renderingsmotorn är tillräckligt kraftfull och detaljerna behövs.
nedan finns några användbara videor för att visa dessa begrepp visuellt:
Bump mapping: