Bump mapping en normale mapping zijn twee verschillende methoden om hetzelfde te doen: het creëren van de illusie van oppervlaktetextuur aan een visueel computermodel.
deze methoden zijn handig om te weten of je het maken van video game karakters of het renderen van 3D-animaties.
Bumpprojecties leggen een grijswaardenafbeelding in, zodat donkere vlekken dieper lijken en contrast bieden voor lichtere “hobbels.”Normale kaarten gebruiken een RGB-schaal om 3D-vectornormalen af te leiden naar het 3D-oppervlak. Dit trucs het gesmolten licht in het creëren van highlights en schaduwen. Beide methoden laten de geometrie ongewijzigd.
het kennen van de verschillen tussen deze twee technieken kan helpen bepalen welke beter geschikt is voor de toepassing. Lees verder voor meer informatie over beide, zodat u ze kunt toevoegen aan uw tas van trucs.
het belangrijkste verschil Is belichting
het doel van beide kaarten is om een oppervlak de illusie van textuur te geven op een oppervlak dat geen textuur heeft. Dit is gunstig voor video games, omdat het betekent dat het model mesh hoeft niet zo fijn dat het fysiek vangt alle kleine details, zoals een verplaatsing kaart.
de afbeelding creëert deze illusie door de manier te vervormen waarop het weergegeven licht met een oppervlak communiceert. Dit is ook waar de bumpprojectie beperkend kan worden, afhankelijk van welk detailniveau u probeert te bereiken.
- een bumpprojectie vertelt de renderer welke gebieden van een oppervlak helderder en welke gebieden donkerder zijn, ongeacht de richting van de lichtbron.
- een normale afbeelding verbindt de kunstmatige oppervlaktenormalen met de rest van de 3D-ruimte en dicteert wiskundig hoe de textuur samenwerkt met de gesmolten lichtbron.
het resultaat is in beide gevallen dat een geometrisch gladde vorm een zeer gedetailleerde oppervlaktetextuur lijkt te hebben. De bumpprojectie begint echter te haperen wanneer het getextureerde object vanuit verschillende hoeken wordt bekeken. De waargenomen textuur zal waarschijnlijk niet op een geloofwaardige manier interageren met het omgevingslicht.
om dit meer te begrijpen, laten we eens kijken hoe elke methode gaat over het renderen van textuur.
een Bumpprojectie gebruikt een ingestelde grijswaarden om de hoogte
te manipuleren als u een bumpprojectie maakt of er gewoon naar kijkt, ziet u een zwart-witafbeelding. Er is niets meer aan de hand. In wezen gebruikt de kaart deze grijswaarden om de rendering engine te vertellen welke plekken licht zijn en welke donkere.
- zwarte gebieden op de kaart geven donkere of” verzonken ” locaties aan op het oppervlak
- witte gebieden op de kaart geven gemarkeerde of “uitstekende” locaties aan op het oppervlak
- en elke grijstint daartussen werkt dienovereenkomstig.
de meeste rendering engines doen dit door de grijstint te relateren aan de normale vector van het oppervlak. Aangezien de normale vectoren zijn hoe de rendering engine “ziet” het oppervlak, Dit is een manier om het te verleiden tot het renderen van textuur op een daadwerkelijk glad oppervlak.
de relatie tussen grijswaarden en oppervlakte normaal is als zodanig:
- Zwart = raaklijn aan oppervlak
- Wit = normaal aan oppervlak
en elke grijstint tussen deze twee veranderingen in de hoek van de normale vector. Dit is handig omdat het de grijswaardenafbeelding in staat stelt om te fungeren als een vertaler tussen de menselijke spelontwerper, die een afbeelding in zwart & wit ziet, en de rendering engine, die een afbeelding ziet in termen van oppervlaktenormalen.
nu, zoals eerder vermeld, is er een tekort aan deze methode als het gaat om verlichting. De bumpprojectie stelt een vaste oppervlakte normale verdeling in. Met andere woorden, het creëert alleen lokale lichteffecten. Het zal alleen vertellen de rendering engine welke gebieden van het oppervlak zijn donkerder dan anderen ten opzichte van zichzelf.
de bumpprojectie biedt dus niet voldoende de rendering engine om te bepalen waar de Globale lichtbron vandaan komt in relatie tot de details op een oppervlak. Dit kan leiden tot een situatie waarin de schaduwen van een oppervlak daadwerkelijk naar de lichtbron zijn gericht, en de highlights zijn waar je zou verwachten dat de schaduwen zijn.
als de eindgebruiker schaduwen ziet waar zijn oog highlights verwacht, kunnen de afbeeldingen minder geloofwaardig zijn. Dit betekent niet dat bump maps zijn volledig verouderd, hoewel. Ze kunnen worden gebruikt op hun eigen of in combinatie met andere kaarten om echt de algehele weergave te verbeteren. We zullen in een beetje op een aantal best practices, maar eerst een beetje op normale kaarten en hoe ze omgaan met verlichting.
een normale kaart gebruikt RGB om licht
te manipuleren zoals we al hebben gezegd, hebben normale kaarten de mogelijkheid om globale verlichting beter te integreren in de waargenomen oppervlaktestructuur van een object.
ze doen dit door de rendering engine te voorzien van een derde stuk informatie of kleurkanaal om te gebruiken. Daarentegen biedt een bumpprojectie technisch slechts twee kleurkanalen om te gebruiken; zwart of wit. Normal mapping gebruikt de RGB-kleurschaal om een normaal oppervlak te berekenen uit drie componenten vectoren in plaats van twee. RGB, In dit geval, betekent:
- rood
- groen
- blauw
om dit beter te begrijpen zonder een proefschrift over lineaire algebra te geven, gaan we snel terug naar het denken over bumpprojecten voor een tweede. De schaduw van grijs komt in wezen overeen met de hoek van een vector ten opzichte van het oppervlak zelf. Die vector bestaat uit twee vectoren in cartesiaanse objectruimte, één op de raakas (Zwart) en één op de normale as (wit).
hoe dichter de kleur bij zwart is op een bepaalde plaats, hoe lager de hoek tussen de normale vector en het oppervlak zelf. Omgekeerd, hoe dichter bij wit de afbeelding is, hoe dichter bij orthogonale de normale vector is.
maar als we in 3D-ruimte werken, hoe zit het dan met de derde dimensie? Dit is waar normale kaarten komen met RGB in plaats van grijswaarden. Net als de bump-kaart heeft een normale kaart een raakas en een normale As, maar het introduceert ook de bitangent-as. En omdat er een derde as is, moet er een derde kleur zijn om die weer te geven. De tabel hieronder illustreert hoe elke kaart kleuren vertaalt in vectoren.
Vector-As | Bump Map Kleur Vertaling | Normale Kaart Kleur Vertaling |
Normaal | Wit | Blauw |
De Raaklijn | Zwart | Rood |
Bitangent | N/A | Groen |
De sleutel om te begrijpen is dat de normale kaart heeft de mogelijkheid om te bepalen van de oppervlakte van de normals in 3D globale ruimte, want er zijn drie vector onderdelen zei normaal. Elk van de componenten kan worden gerelateerd aan de Globale X -, Y-en Z-componenten van de cartesiaanse wereldruimte waarin een lichtbron is gefixeerd.
een bumpprojectie kan dit niet doen omdat er geen derde component is die de normale aan de Globale Cartesiaanse ruimte relateert. Dit is de reden waarom je kunt eindigen met highlights waar je schaduwen zou verwachten met bumpprojectie.
de drie vectorcomponenten van een normale kaart vormen een Cartesiaans systeem, wat betekent dat ze allemaal orthogonaal aan elkaar zijn. Het coördinatenstelsel kan echter nog steeds in oneindig veel richtingen worden georiënteerd en moet op de een of andere manier worden beperkt zodat de kaart zinvol is.
dit wordt gedaan door de vectorcomponenten te oriënteren op de textuurcoördinaten van de kaart. De meeste rendering en 3D modellering software zal dit doen op de achtergrond voor u, hoewel, dus geen zweet als je niet opletten in lineaire algebra klasse. Er zijn meestal 3 verschillende oriëntaties om uit te kiezen:
- Raakruimte
- Objectruimte
- wereldruimte
elk van deze heeft zijn voor-en nadelen, afhankelijk van de toepassing van het object. We praten hier later wel over.
ongeacht welke oriëntatie wordt gebruikt, is het een belangrijke stap omdat het de rendering engine in staat stelt om de oppervlaktenormalen te berekenen op een manier dat ze allemaal soepel met elkaar verbonden zijn. Het resultaat is een waargenomen oppervlaktestructuur die uniform reageert op de Globale lichtbron.
dus dat is het grote verschil. Beide kaarten beïnvloeden de verlichting op een oppervlak, maar ze doen dat op verschillende manieren. De normale kaart blinkt uit in zijn vermogen om een oppervlaktestructuur te relateren aan de 3D-ruimte waarin het zich bevindt. Dit zal uiteindelijk meer geloofwaardige weergaven bieden, hoewel het niet ongewoon is om bumpkaarten en normale kaarten samen te gebruiken om zeer gedetailleerde oppervlakken te creëren.
nogmaals, geen van deze methoden wijzigt de 3D-geometrie van het onderliggende oppervlak.
een korte opmerking over de normale Kaartoriëntatie
aangezien normale kaarten de hoek bepalen waaronder het licht van een oppervlak weerkaatst, is het belangrijk om te overwegen hoe de kaart zelf is georiënteerd ten opzichte van het object waarop het wordt toegepast.
Raakruimte Is het meest gebruikelijk
wanneer een normale afbeelding is georiënteerd in raakruimte, worden de textuurnormalen opgeslagen ten opzichte van de geometrie normaal. Dit is meestal de meest veelzijdige omdat het object kan bewegen en vervormen in de ruimte, terwijl de effecten van de textuur intact. Dit is vooral handig bij het texturen van dingen zoals:
- de huid van een teken
- Textiel verplaatsen
- objecten die bewegen en interageren met de gebruiker
Bottom line; gebruik dit als het object dat u aan het textureren bent met de gebruiker in de ruimte zal bewegen.
Objectruimte creëert een hogere kwaliteit ten koste van veelzijdigheid
een normale kaart die in objectruimte is georiënteerd berekent zijn normalen ten opzichte van het object als geheel. Het object kan nog steeds bewegen, maar als de oppervlakken vervormen kunnen er problemen zijn met de normale. De kaarten zijn meestal specifiek afgestemd op het object waarop ze worden toegepast, wat leidt tot scherpere details en een betere smoothing.
dit maakt het echter moeilijk om de kaart op andere oppervlakken te hergebruiken of te Tegelen. Textuurcoördinaten kunnen ook niet gespiegeld worden. Dus, het modelleren van textuur op symmetrische objecten zal twee keer het werk zijn.
wereldruimte creëert een volledig vaste kaart
een normale kaart die in de wereldruimte is georiënteerd is op zijn plaats ten opzichte van de globale 3D-coördinaten. Dit betekent dat het object waarop het wordt aangebracht stil moet blijven staan; anders zal het “slip out” van onder de kaart als verplaatst.
dit is goed voor het creëren van hoge detailniveaus op grote, stationaire objecten in een omgeving.
Welke Kaart Heeft Een Betere Renderingssnelheid?
terwijl de rendering snelheid sterk afhankelijk is van de rendering engine zelf, nemen bump-kaarten en normale kaarten verschillende hoeveelheden geheugen in beslag.
normaal gesproken zijn normale kaarten sneller te renderen dan bump-kaarten.
het verschil is niet drastisch, maar het is er. Normale kaarten lichtjes rand uit bump kaarten omdat ze niet meerdere textuur monsters zoals bump kaarten nodig hebben.
wat voor soort kaart moet ik gebruiken?
zoals met alles is er geen unanieme consensus dat een van deze kaarten beter is dan de andere. Bump-kaarten en normale kaarten hebben beide voordelen in verschillende toepassingen. Laten we een paar van deze onderzoeken.
Best Uses for Normal Mapping
we hebben al op enkele van deze punten ingegaan toen we de verschillende oriëntaties van de normale kaart bespraken. Over het algemeen zijn normale kaarten de meest veelzijdige oplossing wanneer u behoefte heeft aan een textuur die goed reageert op beweging. Dit kan van toepassing zijn op zowat alles:
- karakters
- wapens / gereedschappen / voorwerpen
- Voertuigen
- Textiel
- loof
normale kaarten zijn ook nuttig voor het in detail brengen van delen van de omgeving die naar verwachting van dichtbij zullen worden bekeken.
- wanden
- loopbruggen
- bewegwijzering
normale kaarten zijn zeer veelzijdig, vooral met raakruimte-oriëntatie. Ze wikkelen ook rond randen om een gunstig afschuiningseffect te creëren, iets dat bump-kaarten niet kunnen doen. Dit verzacht anders scherpe randen op een object dat geen scherpe randen zou moeten hebben, waardoor het beeld geloofwaardiger wordt.
Dit niet het bereiken van hetzelfde niveau van detail als een verplaatsing kaart (die we zullen kort ingaan op aan het einde van dit artikel), maar het heeft tenminste de illusie van afgeronde hoeken op dingen zoals:
- Deurknoppen
- Wapen handgrepen
- Muur hoeken
Dit subtiel effect is niet haalbaar met een bump map.
Beste Toepassingen voor Bumpprojectie
Bumpprojectie wordt het beste gebruikt voor achtergrondoppervlakken of relatief kleine objecten. Denk aan milieukenmerken die in de verte moeten worden waargenomen.
- operatiekamer
- Landschappen
- stadsgezichten
omdat bumpprojectiekaarten niet zo goed zijn als normale kaarten op bewegende objecten, zijn ze gemakkelijk toepasbaar op de achtergrond van een scène of aspecten op het midden-detailniveau. Omdat ze gemakkelijker te maken zijn en niet zo veel vectorberekening vereisen, zijn ze de lagere inspanning optie.
echter, wanneer het wordt toegepast op Delen van een omgeving die niet onder zoveel controle zullen staan, geven bumpkaarten de meeste waar voor je spreekwoordelijke buck.
ze kunnen samen worden gebruikt, ook
vergeet niet dat bump-kaarten en normale kaarten over elkaar kunnen worden gelaagd om nog meer diepte van detail aan uw rendering te creëren.
zoals met elke textuurkaart, kunt u zoveel of zo weinig lagen als u wilt om het gewenste detailniveau te bereiken.
- Bumpkaarten pas de waargenomen hoogte van een oppervlak aan ten opzichte van zichzelf
- normale kaarten pas de waargenomen hoek aan waarbij het licht van het oppervlak weerkaatst
combineer deze twee om de voordelen van zowel hoogte-als hoekmanipulatie van uw oppervlak in evenwicht te brengen.
Om Het Samen Te Vatten.
het verschil tussen een bumpkaart en een normale kaart is hoe elk een oppervlak manipuleert om te interageren met licht. Bump-kaarten werken in “twee dimensies” door een grijswaarden te gebruiken om delen van een oppervlak kunstmatig omhoog of omlaag te bewegen. Omhoog gaan betekent helderder, en omlaag gaan betekent donkerder.
normale kaarten werken in “drie dimensies” door gebruik te maken van rode, groene en blauwe kleurkanalen om kunstmatig de richting te manipuleren waarin het licht van een oppervlak weerkaatst.
de afbeeldingen kunnen samen of afzonderlijk worden gebruikt, en geen van beide textuurafbeeldingen verandert de geometrie van het oppervlak. Terwijl normale kaarten kunnen wikkelen rond randen om een schuine effect te creëren, beide kaarten niet de mogelijkheid om de illusie van textuur langs een rand te produceren.
Bonus: Hoe Zit Het Met Verplaatsingskaarten?
als u de randen van een oppervlak zo wilt renderen dat het silhouet van het object overeenkomt met de textuur, zal een bumpprojectie of een normale kaart het niet knippen.
het voordeel van bump-kaarten en normale kaarten is dat ze de illusie van textuur creëren zonder daadwerkelijk het gaas van het oppervlak te veranderen. Dit betekent dat de modelgrootte klein kan blijven, en de rendertijd is nog steeds vrij snel. Maar dit beperkt de hoeveelheid detail op objectranden.
hier komen verplaatsingskaarten voor. Denk aan het voorbeeld van een bakstenen muur. De stenen steken uit ten opzichte van de mortel die ze bij elkaar houdt. Dus, als je om de rand van deze hoek zou kijken, zou het niet lijken op een rechte lijn, de stenen zouden uitsteken, en de mortel zou zich terugtrekken.
noch normale kaarten, noch bump-kaarten kunnen deze illusie bereiken, en het zou gewoon een vervelende taak zijn om daar te zitten en al die stenen daadwerkelijk te modelleren. Niet te vergeten, het zou je 3D-model behoorlijk onhandig maken.
dit is waar verplaatsing mapping komt in. Het past, net als een bumpkaart, de hoogte van een oppervlak aan. Maar in plaats van het manipuleren van de verlichting, het manipuleert de werkelijke vorm van het object wanneer weergegeven. Hierdoor vereist het meer rendering tijd en een veel fijnere gaas op het oppervlak. Bijvoorbeeld, het grotere oppervlak moet worden opgesplitst in honderden, waarschijnlijk duizenden, individuele oppervlakken.
dit is echter de moeite waard, als de rendering engine krachtig genoeg is en de details nodig zijn.
hieronder vindt u enkele nuttige video ‘ s om deze concepten visueel weer te geven:
Bumpprojectie: