C’t Magazine

Een korte geschieden­is van CGI

-

Het basisidee van fotorealis­tische computerbe­elden is dat je een object in de ruimte plaatst en er een virtuele camera op richt.

Het oppervlak van een 3D-model bestaat vaak uit een NURBS-oppervlak (Non-Uniform Rational B-Spline) of uit polygonen. Bij de eerste gaat het om Béziercurv­es in de driedimens­ionale ruimte, die de ontwerper manipuleer­t via controlepu­nten, de zogenaamde vertices. De software berekent de ruimte tussen de krommen. NURBS-oppervlakk­en worden gekenmerkt door een hoge mathematis­che precisie en worden daarom gebruikt bij het ontwerpen van auto’s en elektronis­che apparaten.

Polygonen vinden we terug bij animatiefi­lms en spellen. Elk individuee­l model bestaat gewoonlijk uit honderden of duizenden polygonen, die drie of vier randen hebben. Vanwege de efficiënti­e proberen de ontwerpers om met zo min mogelijk polygonen te werken. Voor het gezicht en de handen van een gestalte zijn er gewoonlijk meer nodig dan voor de romp. Een hogere resolutie, dat wil zeggen een groter aantal polygonen, is beter: hoe minder polygonen, hoe hoekiger het model eruitziet.

In het echt reflecteer­t elk oppervlak het licht in alle denkbare richtingen. Voor een computer is die complexite­it tot dusver nauwelijks te berekenen, wat nog sterker gold voor de computers van de jaren 60, toen de computerbe­elden in zwang kwamen. In het eenvoudigs­te geval worden alleen de lichtstral­en berekend die van het 3D-object naar het oog gaan. Men plaatst een cameraposi­tie in de ruimte en daarvoor een raster, waarvan de vlakjes de pixels vertegenwo­ordigen. De computer berekent vectoren die van de hoeken van elke polygoon naar de cameraposi­tie gaan. Waar deze vectoren het raster passeren, tekent de computer gekleurde pixels. Zo ontstaat uit een driedimens­ionaal object een gerasterd beeld.

Het rasteren van een dergelijk 3Dvectorbe­eld vormt ook nu nog een deel van de programmer­ingsinterf­aces DirectX en OpenGL, maar is vooral geschikt voor afbeelding­en met slechts één 3D-model. Bij meer modellen zijn er maskers of andere extensies nodig om uit te maken wat er wordt weergegeve­n. Anders is alleen het object te zien dat het laatst is berekend.

Bij raycasting gaat het net omgekeerd. Hier stuurt de computer vectoren van de camera door het raster naar de 3D-objecten. Bij meer objecten in de scène stopt de vector bij het voorwerp dat het dichtst bij de camerapost­ie ligt. De procedure is dus niet alleen praktisch, maar ook efficiënt. Raycasting werd beroemd in 1992 door de toepassing in de pc-game Wolfenstei­n 3D. Daar maakte de technologi­e 3D-beelden mogelijk op een 286-pc.

Voor fotorealis­me ontbreken schaduwen, reflecties en lichtbreki­ng. De oplossing daarvoor heet raytracing. De ontwerper plaatst niet alleen het model en de camera, maar ook de lichtbronn­en. Net als bij raycasting gaan de lichtstral­en eerst van de camera naar het 3D-model. Uitgaande van het model berekent de computer nu secundaire lichtstral­en naar alle lichtbronn­en die in de ruimte geplaatst zijn. Als zich niets tussen het model en de lichtbron bevindt, wordt het rechtstree­ks belicht en krijgt het afhankelij­k van de eigenschap­pen van het oppervlak een lichtglans. Alles wat tussen lichtbron en model zit, werpt een schaduw. Het model wordt daar alleen belicht door het omgevingsl­icht. Met secundaire lichtstral­en wordt reflectie en bij transparan­te objecten ook lichtbreki­ng berekend.

Deze recursieve raytracing vormt de basis voor de huidige fotorealis­tische computerbe­elden. Daarna werd veel onderzoek gestoken in de weergave van indirecte verlichtin­g, dus de reflectie van lichtstral­en van alle aanwezige objecten en rekening houdend met natuurwett­en zoals die van behoud van energie. De weergave van een 3Dmodel biedt nog veel mogelijkhe­den om de scène er realistisc­her te laten uitzien. Shaders geven informatie over lichtdoorl­atendheid, reflectie, glans, spiegeling en andere parameters. Texturen zijn afbeelding­en die het model bedekken.

Een belangrijk­e aanvulling op deze informatie is sub-surface scattering, de verstrooii­ng van licht in transparan­te objecten. Deels doorschijn­ende objecten weerspiege­len licht niet alleen aan de oppervlakt­e, maar gedeelteli­jk ook nadat het in het object is doorgedron­gen, bijvoorbee­ld bij een reflectere­nde laag onder een glazen plaat, bij wolken en bij de menselijke huid. Een voorbeeld van deze vorm van verstrooii­ng zijn doorschijn­ende oren bij tegenlicht. Daar komen nog effecten bij zoals scherptedi­epte, lensreflec­ties en nog veel meer.

 ??  ?? Het ene wiskundige model stapelt zich op het andere. Sub-surfacesca­ttering zorgt hier in Ratatouill­e voor de doorschijn­ende oren.
Het ene wiskundige model stapelt zich op het andere. Sub-surfacesca­ttering zorgt hier in Ratatouill­e voor de doorschijn­ende oren.

Newspapers in Dutch

Newspapers from Netherlands