In het vorige artikel heb ik uitgelegd wat texturen zijn en hoe ze worden gebruikt in 3D renderen. Nu is er een belangrijke tussenstap die ik bewust nog even heb vermeden. En deze stap is hoe je een 2D textuur daadwerkelijk op een 3D object kunt krijgen. Hoe dat gebeurt, bespreek ik in dit artikel.
1. Wat is mapping?
Het proces om een 2D textuur op je 3D model te krijgen, wordt mapping genoemd. Nu zijn er min of meer 2 methoden die je kunt onderscheiden in het proces van mapping. Dat zijn Projectie mapping en UV mapping. UV mapping is eigenlijk een vorm van Projectie mapping. Maar het is een krachtigere en meer speciale vorm, waarvoor wat meer werk nodig is.
2. Wat is projection mapping?
Projectie mapping kan in principe worden beschouwd als het projecteren van een 2D textuur op een 3D object. Zoals een projector die een beeld op een scherm projecteert.
Maar in plaats van een projector (zoals je die in het echt zou hebben), heb je specifieke geometrische basisvormen van waaruit het 2D beeld wordt geprojecteerd. Hieronder zie je voorbeelden van projectiemethoden. Met behulp van een eenvoudige baksteen textuur kan je zien hoe elke methode de baksteen textuur op een 3D object projecteert.
Een vlakke projectievorm, projecterend op een 3D vlak.
Dezelfde vlakke projectievorm geschaald naar halve grootte, geprojecteerd op een 3D vlak.
Een doosprojectievorm, projecterend op een 3D kubus.
Een cilindrische projectievorm, projecterend op een 3D buis.
Een bolvormige projectievorm, projecterend op een 3D bol.
In de meeste 3D software kan je deze projectievormen verplaatsen ten opzichte van je 3D model. En je kunt ze kleiner of groter schalen (zoals je zag in het bovenstaande voorbeeld van een vlakke projectievorm). Op deze manier bepaal je de positie en grootte van de textuur.
Het probleem met deze projectiemethoden is, dat je altijd vervormingen van je 2D textuur krijgt als het 3D model waarop je projecteert geen geometrische basisvorm is die lijkt op de projectievorm. Dit is hieronder te zien.
Een vlakke projectievorm, projecterend op een 3D kubus.
Een doosprojectievorm, projecterend op een 3D bol.
Een cilindrische projectievorm, projecterend op een 3D kubus (de local stretching is dat de stenen aan de randen van de kubus langer worden door de cilindrische projectievorm).
Een bolvormige projectievorm, projecterend op een 3D kubus.
Om dit probleem tegen te gaan, hebben we een andere mapping methode tot onze beschikking, genaamd UV mapping.
3. Wat is UV mapping?
UV mapping is het proces van het ontvouwen van een 3D vorm naar een 2D platte vorm. Dus eigenlijk gaan we van een 3-dimensionale coördinatenruimte die wordt aangeduid door een X-, Y- en Z-as, naar een 2-dimensionale coördinatenruimte die wordt aangeduid door een U- en V-as. Vandaar de naam UV mapping. Dit proces wordt vaak unwrapping genoemd. Omdat je in feite een 3D object “unwrapped” naar een 2D ruimte. Zoals met het kubusvoorbeeld hieronder.
XYZ 3-Dimensionale ruimte.
UV 2-Dimensionale ruimte.
De 2D uitvouw waarmee je eindigt, wordt de UV map van het object genoemd. Je kan een dergelijke afbeelding exporteren en een op maat gemaakte textuur maken in een beeldbewerkingssoftware (met behulp van de UV map als referentie). Of er zijn speciale softwarepakketten voor het tekenen van texturen. Waarmee je rechtstreeks op een 3D model kan tekenen. De getekende textuur wordt direct omgevormd van 3D naar de 2D coördinaten van de UV map, voor een perfecte plaatsing van de textuur. Maar deze methode is voorlopig nog ver buiten de te behandelen scope.
Hieronder zie je hoe de UV map er voor de kubus uitziet. Plus hoe de Baksteen textuur eruitziet die we voor de kubus hebben gemaakt. Deze baksteen textuur past perfect in de UV map en wordt daardoor perfect geprojecteerd op het 3D model.
UV Map van de kubus
Baksteen textuur voor de kubus
Zoals je kan zien is het uitvouwen van een kubus vrij eenvoudig. Maar je kan je voorstellen dat voor complexere objecten, het UV unwrapping proces behoorlijk lastig kan worden.
4. Verrekijker UV mapping voorbeeld
We gebruiken de verrekijker uit de vorige artikelen wederom als voorbeeld. De handvaten van de verrekijker, zijn UV mapped. Omdat de leertextuur op de handvaten anders vervormd zou worden door de onregelmatige vorm van de handvaten.
Hieronder zie je de UV map die gemaakt is door de handvaten te unwrappen. Naast de UV map zie je een speciale gekleurde/genummerde test textuur die we gaan toepassen op de handvaten om aan te tonen dat de UV map goed is. Met goed bedoel ik dat het geen rare vervormingen veroorzaakt.
UV map voorbeeld voor de handvaten
Geruite test textuur
Hieronder zie je een interactieve animatie voor het 3D model van de linker-handgreep met de leertextuur aangebracht. Daaronder zie je nog een interactieve animatie van het 3D model van de linker-handgreep, maar deze keer met de geruite kleur/nummer test textuur toegepast. We kunnen zien dat er weinig tot geen vervorming (lokaal uitrekking of krimp) is van de geruite test textuur op het object. Wat betekent dat de UV map goed is. Dit is een kleine truc die 3D artist vaak gebruiken om te controleren of een UV map goed is.
En hieronder is nog een kleine vergelijking te vinden van de final render voor de verrekijker en een render met de geruite test textuur toegepast op de handvaten. Wederom is er geen vervorming (plaatselijk uitrekking of krimp) zichtbaar van de geruite test textuur op het object. Dus de UV map is goed.
Ik hoop dat je genoten hebt van deze post en iets nieuws hebt geleerd. Laat het me weten als je hieronder nog vragen of opmerkingen hebt.