3ds Max Tips & Tricks
In dit artikel rondom tips en tricks voor 3ds Max ga ik onder andere in op de compleet vernieuwde texture baking workflow in 3ds Max 2021. Texture baking is ooit eens geïntroduceerd in 3D Studio Max versie 7 en was dus hoognodig toe aan een serieuze update.
Door Jean-Pierre van Gastel
De in 3D Studio Max 7 geïntroduceerde mogelijkheden voor texture baking zijn nog altijd aanwezig in 3ds Max 2021 en terug te vinden in het Render to Texture-dialoogvenster. De nieuwe mogelijkheden voor het zogenaamde texture baken zijn aanwezig in het Bake to Texture-dialoogvenster. Beide maken overigens deel uit van het 3ds Max 2021 Rendering-menu. Het eerste grote verschil tussen beide mogelijkheden is dat het nieuwe Bake to Texture-dialoogvenster is geschreven in het QT framework en daardoor het dialoogvenster dynamisch te verkleinen of vergroten is, zie afbeelding 1. Vaak wordt hierbij de vraag gesteld waarom de oude mogelijkheden dan niet eenvoudig worden verwijderd door Autodesk. Dit heeft ermee te maken dat oudere 3ds Max-bestanden, ooit gemaakt met ondertussen verouderde mogelijkheden, nog wel moeten kunnen worden geopend in een nieuwe versie van 3ds Max.
Samensmelten
Eerst nog even terug naar de basis. Waarom zou een 3ds Max-gebruiker überhaupt gebruik willen maken van texture baking? Wie binnen 3ds Max blijft, dus alleen maar beelden of animaties wil renderen, zal deze mogelijkheden niet heel erg interessant vinden. De render engine zoals Arnold kan tal van effecten renderen gebaseerd op complexe materialen en bijbehorende texturen. Wanneer een gebruiker deze echter wil exporteren naar bijvoorbeeld een real-time engine zoals Unity, worden al deze complexe materialen en bijbehorende texturen niet herkend door de real-time engine. Alleen al om die reden maken animators gebruik van texture baking in 3ds Max. Met de Bake to Texture-mogelijkheden zijn complex samengestelde materialen en texturen in 3ds Max samen te smelten tot een enkele textuur. Doordat alle oorspronkelijke complexe visuele effecten slechts in een enkele textuur worden weergegeven, neemt de performance van de real-time engine toe omdat alle oorspronkelijke effecten niet kunnen of berekend hoeven te worden.
Light Baking
Ook het indirect en direct licht, gebaseerd op aanwezige lichtbronnen, is naar texturen weg te schrijven. Dit wordt ook wel Light Baking genoemd of het maken van Light Maps. Light Baking is overigens ook vaak direct in de real-time engine mogelijk (gebaseerd op de CPU of de GPU), afbeelding 2. Vervolgens zijn de oorspronkelijke lichtbronnen niet meer nodig aangezien al het licht en schaduw is weggeschreven in textuurinformatie. Deze technieken zijn echter alleen te gebruiken bij statische (stilstaande) objecten. Bewegende objecten zijn dynamisch en kunnen continu veranderen met betrekking tot de hoeveelheid licht die ze ontvangen.
Voordat de gebruiker aan Bake to Texture begint, is het van groot belang dat de scene in 3ds Max er gerenderd precies zo uitziet als hij zou willen. Elke fout die in de rendering zit zal immers ook aanwezig zijn in de uiteindelijke texture maps. Bij Light Maps is het van groot belang dat er geen overlappende UV’s (textuurcoördinaten) aanwezig zijn in het 3D-model. Door gebruik te maken van de 3ds Max Unwrap UWV modifier is elk 3D-model te voorzien van juiste UV’s.
Het proces van Bake to Texture is niet heel erg ingewikkeld. Gebaseerd op de huidig ingestelde Render Engine selecteert de gebruiker de objecten in de 3ds Max viewport. Vervolgens is in de linkerkant van het Bake to Texture-dialoogvenster een keuze te maken uit de verschillende maps. Voor een light map zijn bijvoorbeeld alleen de Arnold_albedo en de Lighting map nodig, zie afbeelding 3. De Albedo map is alleen de kleur en de Lighting map bevat alle lichtdata. Vervolgens kiest de gebruiker bij Output de optie Create a New Material. Hierbij wordt het Standard (Legacy) materiaal gebruikt, aangezien deze herkend wordt door elke real-time engine. De Light map wordt vervolgens verbonden met de Self-Illumination-optie en de Albedo map gaat in de Diffuse input. Vervolgens is het nodig om de Output folder voor de nieuwe texturen aan te geven. Nadat het Bake to Texture-proces is doorlopen, is direct het resultaat in te zien in de 3ds Max viewport door de kwaliteit van de viewport op High Quality te plaatsen, zie afbeelding 4. Het oorspronkelijke materiaal maakt deel uit van een Shell-materiaal, dat is terug te vinden in de 3ds Max-materiaaleditor. Door gebruik te maken van een Shell-materiaal is het mogelijk om altijd terug te keren naar het oorspronkelijke resultaat.
Renderingen en resolutie
Het renderen tijdens het Bake to Texture-proces kan wel enige tijd in beslag nemen, maar is uiteraard volledig afhankelijk van de resolutie die de gebruiker kiest. De maximale resolutie is maar liefst 8192 pixels in zowel de breedte als de hoogte. Texturen voor real-time engines kennen altijd een 1:1-verhouding in verband met de ingebouwde MIP mapping in de game engine. MIP mapping is niets anders dan een techniek die de resolutie van een textuur automatisch verhoogt of verlaagt tijdens het navigeren in een real-time omgeving.
Uiteraard is de complexiteit van een 3D-model ook van groot belang in een real-time omgeving. Een 3D-model bestaande uit 1 miljoen vertexpunten verbruikt meer geheugen en CPU-gebruik dan een 3D-model bestaande uit 500 vertexpunten. Door toch voldoende details in een gedetailleerd 3D-model te stoppen wordt er gebruikgemaakt van zogenaamde Normal maps in een real-time omgeving. Normal maps zijn standaard te downloaden op een website waar texturen worden aangeboden voor een real-time workflow, bijvoorbeeld www.cc0textures.com.
Eigen Normal maps
Wie een eigen Normal map wil genereren om een model met zeer hoge resolutie om te kunnen zetten naar een model met lagere resolutie, zal eigen Normal maps moeten maken. Het Bake to Texture-proces biedt mogelijkheden om op basis van een hogeresolutie-Mesh een Normal map te genereren. Deze laatste wordt vervolgens gebruikt als Normal map op het lageresolutiemodel en zal er in real-time vervolgens net zo uitzien als het hogeresolutie-3D-model. Normal maps werken namelijk op basis van face normals in de X-, Y- en Z-richting. Het is echter wel noodzakelijk om twee modellen te hebben, een hoge- en een lageresolutieversie. Dit is overigens met bijvoorbeeld de ProOptimizer modifier vrij eenvoudig tot stand te brengen. Beide modellen dienen exact over elkaar heen te worden geplaatst, waarna de gebruiker vervolgens een selectie maakt van het lageresolutiemodel. Uit de lijst met beschikbare maps aan de linkerzijde in het dialoogvenster is het vervolgens mogelijk om te kiezen voor de Normal map en met de Pick from List-optie in de Projection Kolom is het hogeresolutiemodel te selecteren. Het is nog wel belangrijk om de zogenaamde cage goed passend te maken en het type Normal map te kiezen. In Unity zijn bijvoorbeeld MikkT normal maps de standaard.
Jean-Pierre van Gastel jpvangastel@techdata.com is freelance redacteur voor BIGnieuws.