3D Renders en product visualisaties

Een plaatje zegt meer dan 1000 woorden zeggen ze wel eens. En online is dat zeker het geval. Zoals in een webshop mooie product fotografie de conversie verhoogt, zo kun je 3D renders of 3D product visualisaties goed inzetten bij het verkopen van een idee of om als visual mee te sturen met een offerte. Zo kun je, zonder dat het eindresultaat al bestaat, bijvoorbeeld de renovatie van een badkamer, een nieuwe lay-out of ontwerp van een tuin en bijvoorbeeld de restyling van een (woon)kamer vóóraf fotorealistisch in beeld brengen.

Ik werk met de beste software in dit vakgebied wat natuurlijk bijdraagt aan een super realistisch eindresultaat. Ik modelleer in Maya (Autodesk), textures maak ik in Substance (Allegorithmic) en MudBox (Autodesk) en ik render uiteindelijk in Arnold (SolidWorks). Er komt behoorlijk wat bij kijken. En om je een idee te geven, beschrijf ik hieronder wat dit proces precies inhoudt. Dat is interessant voor jou zodat je een beetje kunt volgen wat ik moet doen om tot een visual te komen en voor mij omdat ik als geeky nerd graag praat over mijn passies. Het bijkomende SEO-voordeel van deze informatie pagina laat ik even buiten beschouwing…. ;-)

“Na een 2-jarige HBO opleiding in 3D (Autodesk Maya) in Amsterdam bij het SAE Institute heb ik me een aantal jaar hobbymatig beziggehouden met 3D. Ik ben regelmatig aan het “3D’en”, maar het laatste jaar heb ik mezelf een aantal doelen gesteld en ben ik meer dan fanatiek mijn skills aan het oppoetsen.
Mijn fascinatie en het mooie aan 3D is dat er geen grenzen meer zijn tussen de realiteit en Computer Generated Images (CGI), wat je kan bedenken kun je maken. Althans, dat is mijn theorie…”

Een 3D-productie proces ziet er (minimaal) als volgt uit:

Modelling Texture Mapping Rigging & Animation Lighting & Rendering

In een productieomgeving wordt dit proces eventueel nog aangevuld met effecten (FX) en post-productie werk zoals het samenvoegen van render lagen (Compositing). Voor deze korte uitleg laat ik die voor het gemak even buiten beschouwing.

Om alle stappen duidelijk uit te kunnen leggen, neem ik als voorbeeld een appel.

Modelling

Referentie appel 3D proces | Multimediafabriek

Referentie appel | bron: pxhere.com

Net als bij realistisch tekenen is het bij fotorealisme in 3D heel gebruikelijk om referentie materiaal bij de hand te houden. Het liefst vanuit verschillende hoeken zodat je goed kunt zien hoe e.e.a. eigenlijk in elkaar steekt. Een van de foto’s die ik heb gebruikt in deze proces beschrijving is de foto van een appel, zie ‘Referentie appel”.

Het (polygon) modelleerproces gaat altijd uit van een basis mathematische vorm, zoals een kubus, bol, platvlak, cilinder, pijp, etc. Voor een appel begin je uiteraard met een bol (sphere). Een polygon-model bestaat uit vlakken (faces), randen (edges) en punten (vertices). Tussen 2 vertices zit een edge en in onderstaand voorbeeld heeft elk vlak 4 edges en 4 vertices.

Door de vertices of edges in 3D space te verplaatsen kun je dus de vorm van de oorspronkelijke bol veranderen, net zolang tot het polygon model (of geometry mesh) de juiste vorm heeft. Als je tevreden bent met je mesh, kun je deze gaan voorzien van kleuren en relief, ook wel textures.

De software heeft een handige functie (Smooth Mesh); hierdoor krijgen de wat ‘hoekige’ vormen een gladde vloeiende vorm.

Texture Mapping

Als het model klaar is gaan we het kenmerkende eigenschappen geven door het te texturen met een vóórgedefinieerd materiaal (material). Een material zegt veel meer over het te renderen object dan alleen de kleur. Al deze eigenschappen worden gedefinieerd in aparte texture maps. Een texture map beschrijft in visuele vorm hoe een object reageert op licht. Dit is essentieel omdat het uiteindelijke plaatje wordt gerenderd o.b.v. ray-tracing, maar daarover later meer. Ik beperk me tot de basics, maar veel gebruikte material eigenschappen of texture maps zijn:

Diffuse map (basecolor)Definieert de kleur of kleuren van het object
Normal mapDefinieert het relief van het oppervlak door het object qua vorm te veranderen
Bump mapDefinieert ook het relief van het oppervlak maar simuleert schaduwen op het oppervlak, zonder het object qua vorm te veranderen
Roughness mapDefinieert hoe glad een oppervlak is en waar
Glossiness mapDefinieert de glans van een opppervlak en waar
Specular mapDefinieert de reflectie (waar en in welke kleur)
Opacity mapDefinieert hoe doorzichtig een oppervlak is en waar
Metalic mapDefinieert in hoeverre het oppervlak metaal is
Subsurface ScatteringDefinieert hoe licht reageert op een translucent oppervlak, zoals de menselijke huid of een kaars

Al deze eigenschappen (texture maps) worden in de software visueel in de ‘Hypershade’ aan het materiaal gekoppeld (letterlijk). Zie (onder) de nodegraph in het laatste plaatje. Deze wirwar van eigenschappen heeft als uiteindelijke resultaat het materiaal wat we kunnen gebruiken in onze render en wordt de surface shader genoemd.

Al deze eigenschappen (texture maps) worden in de software visueel in de ‘Hypershade’ aan het materiaal gekoppeld (letterlijk). Zie de nodegraph in het laatste plaatje. Deze wirwar van eigenschappen heeft als uiteindelijke resultaat het materiaal wat we kunnen gebruiken in onze render en wordt de surface shader genoemd.

Een texture kan opgebouwd zijn uit kleuren (sRGB of linear colorspace) of uit een intensiteit waarde (van wit tot zwart of 0 tot 255). Zoals te zien is in bovenstaande roughness map (plaatje 3). In een roughness map geeft wit 100% ruw aan en zwart 100% glad. Alle grijswaarden ertussen in zijn gradaties. Een vreemde eend in de bijt is de normal map. De normal map is weliswaar opgebouwd uit RGB kleuren, maar beschrijft de vector (of richting) waarop licht breekt op het oppervlak tov de surface normal. De surface normal staat altijd 90 graden haaks op het oppervlak. Door de afwijking t.o.v. de surface normal in 3D space (X, Y en Z-as) als kleur weer te geven, wordt in feite het relief van het oppervlak beschreven.

Voordat de textures correct kunnen worden weergegeven in onze render, moet eerst worden bepaald waar op het oppervlak deze texture moet worden geplaatst. Dit doen we door eerst ons object zodanig doormidden te snijden (zie de witte lijn (texture edge of sew) in bovenstaande appel) dat we deze als het ware kunnen platslaan. We kunnen nu ( in een UV texture editor) het 2D plaatje over ons platgeslagen 3D model leggen. We kunnen nu nauwkeurig gebruikmaken van UV texture coördinaten. Waar we in 3D space nog praten over X, Y en Z, mist een texture dus de waarde van de Z-as. Om deze niet door elkaar te halen wordt in texture maps gesproken over U en V, die eigenlijk de X- en Y-waarde weergeven.

Rigging & Animation

In het voorbeeld van de appel in deze beschrijving is rigging en animation niet van toepassing omdat we uiteindelijk een stilstaand beeld willen renderen. Maar als er sprake is van een animatie (bewegend beeld) wordt bijvoorbeeld in keyframe animation van alle te animeren objecten of object onderdelen via een timeline de XYZ-waarden vastgezet (key). Dan wordt het object (of onderdeel iets verplaatst in 3D space en wordt een nieuwe key gezet.

Een rig wordt bijvoorbeeld gebruikt om een character makkelijker te animeren. Stel we animeren een character (zoals in een tekenfilm) en we willen deze laten lopen, dan koppelen we het 3D-model aan een rig (wat een versimpelde vorm is van een skelet). Door de rig te animeren beweegt dus ook het model die we aan de rig aan hebben gekoppeld. Om ons werk wat makkelijker te maken en tijd te besparen zijn er van veel voorkomende bewegingen (motions) voor gedefinieerde patronen te koppelen, zoals bijvoorbeeld een walk-cycle. Een walk-cycle gaat uit van een standaard rig en beweegt de joints (gewrichten) van onze rig altijd op dezelfde manier. Een specifieke vorm van rigging is een facial rig, hierdoor kunnen gezichtsuitdrukkingen worden nagebootst of de mond worden gesynchroniseerd met de uitgesproken tekst.

Lighting & Rendering

Mooi, we hebben op dit moment het model klaar en we hebben deze voorzien van alle texture maps die we willen gebruiken. Tijd om een render te starten zou je zeggen. Nope… want als we nu een render starten zal deze alleen zwart weergeven. De render engine die ik gebruik (Arnold) is een raytracing render engine en heeft net als je ogen licht (light rays) nodig om iets te kunnen waarnemen.

Zoals je hieronder kunt zien in het pre-render plaatje heb ik 2 lichtobjecten in de scene toegevoegd die fungeren als spotlight. Ik heb in de tussentijd de appel 2 keer gekopieerd, een simpele schaal gemaakt en 4 kubussen met afgeronde hoeken gemodelleerd om de illusie van een houten tafel te geven. Deze objecten zijn op dezelfde manier van textures voorzien. Alleen nu met de natuurkundige specificaties van porselein en hout

Om de lichtval wat interessanter te maken plaats je de lichten nooit direct boven het model, zoals een tl-lichtbak. Ik benader een beauty render als portret fotografie. Hierbij wordt uitgegaan van een 2- of 3-point light setup. Dit geeft een natuurlijke belichting en interessante schaduwval.

3D scene ongerenderd | Multimediafabriek

Als we alle settings hebben nagelopen is het tijd voor de daadwerkelijke render. Dit is waar alle voorgaande handelingen en voorbereidingen bij elkaar komen. Om de render zo optimaal en realistisch mogelijk te krijgen kun je in alle voorgaande stappen zoveel tijd steken als je wilt. Interessant detail is dat het meeste werk in een fotorealistische render zit in het nabootsen van alle imperfecties. Standaard is elke vorm in 3D-software mathematisch perfect. In real life is dat zelden het geval. Zo heeft elk object in het echt wel een krasje, een vingerafdruk of een stoflaagje. Ook bestaan er in het echt geen exacte 90 graden hoeken dus elke rand moet in 3D renders worden afgerond (met een bevel) anders zal de illusie van realisme nooit lukken.

In dit voorbeeld heb ik me hier niet druk om gemaakt. De totale tijd van het modelleren, texture mapping, UV-mapping, lighting en rendering is bij elkaar ergens tussen de 1 en 2 uur geweest. Het toevoegen van imperfecties maakt het eindresultaat dan wel overtuigender maar daar zou ik zomaar nog 10 uur aan kwijt kunnen zijn.

Als je nog steeds aan het lezen bent (chappeau!)…. hieronder zie je het resultaat van de beauty render.

Final beauty render appels | Multimediafabriek