Het nieuwe 3D van Crytek doet alles anders, maar ziet er hetzelfde uit



Dit artikel is geschreven is geschreven in samenwerking met Marries van de Hoef.

Eind dit jaar liggen ze in de winkel: schermen die de illusie geven dat je diepte ziet. Er zijn veel woorden gewisseld over wat er te zien is op deze schermen. Niemand heeft het echter over de lastige keuze waar ontwikkelaars voor staan: het weergeven van een spel in 3D is een zware belasting voor de processor. Een game maken met het optische trucje zou betekenen dat je minder fraaie effecten op het scherm kan toveren, minder grote levels kan bouwen en minder ingewikkelde simulaties kan maken.

De technici van Crytek vonden deze opoffering onacceptabel en gingen op zoek naar een oplossing. Zij konden hem al tonen op de GDC 2010.

Het probleem

Zoals Robert Hoogendoorn al uitlegde, kan je diepte zien omdat je ogen twee verschillende beelden waarnemen. Daar zit meteen het probleem: voor elk oog moet tegelijk een ander beeld gebouwd worden, dus dan heeft de grafische processor het tweemaal zo druk als normaal.

De twee beelden die gemaakt worden, verschillen nauwelijks van elkaar. Het enige verschil is een subtiele verschuiving van de objecten, die voor de illusie van diepte zorgt. Je kan het verschil zelf ervaren: kijk nu naar rechts, knijp je linker oog dicht en wissel dan door je linkeroog te openen, terwijl je de rechter sluit. Je ziet objecten ‘verschuiven’ omdat ieder oog ze net anders ziet. Dat er een verschil is, neemt niet weg dat beide ogen voor een groot deel dezelfde dingen zien. Het zou mooi zijn als de overeenkomst tussen de gewenste beelden uitgebuit zou kunnen worden, zodat er minder werk gedaan hoeft te worden. Hier stuit de ontwikkelaar op een probleem: er is nog geen bekende oplossing om al die informatie in één keer te berekenen en dan te verdelen over de twee plaatjes. Dus voor het kleine verschil tussen die twee beelden moet het gehele beeld opnieuw gebouwd worden, met alle nadelen van dien.

De oplossing

De kern van de oplossing van Crytek is verbluffend eenvoudig: ze negeren het probleem. Zij weigeren twee aparte beelden te bouwen voor dat kleine verschil, dus geven ze beide ogen hetzelfde plaatje. Met een twist: ze hebben een techniek om met de identieke plaatjes toch een gevoel van diepte te geven. Binnen de spelwereld weten ze alle afstanden van objecten tot het virtuele oog van de speler. Gebaseerd op die informatie vervormen ze het beeld. Op de plaatsen waar beeldinformatie voor een oog ontbreekt, wordt het beeld wat opgerekt. Het resultaat is verrassend: het gebrek aan informatie valt totaal niet op. Het diepte-effect er overtuigend uit, zonder opvallende fouten.

Deze aanpak zorgt ervoor dat de diepte als laatste stap kan worden toegevoegd aan het beeld door de grafische kaart. Het werkt nu als een grafische filter. Crytek bericht dat het effect maar 1,5% van de totale bouwtijd voor een beeldje bedraagt. Dit zorgt ervoor dat performance slechts een verwaarloosbare belemmering is bij het toevoegen van 3D.

Problemen van de oplossing

Er zitten natuurlijk ook nadelen aan de techniek. Zo is er theoretisch minder scherpte doordat het beeld vervormd wordt en hebben transparante objecten geen diepte. Het belangrijkste nadeel is dat het diepte-effect niet meer goed werkt als de objecten te ver uit het scherm naar voren komen. Dat zit zo: als een object ver weg staat, dan is er een miniem verschil in de informatie die de ogen krijgen dus het valt niet op dat dit weggelaten wordt. Als een object zeer dichtbij is, dan is er juist een groot verschil in de informatie die beide ogen krijgen. De techniek is daar niet op ingesteld en dan valt de illusie uit elkaar. Bij Crytek vinden ze dit geen probleem. Het effect dat er dingen ver uit het beeldscherm steken zou niet te vaak gebruikt moeten worden. Het is vermoeiend voor de ogen en kan misselijkheid veroorzaken. Bovendien is het effect alleen de eerste paar keer spectaculair, daarna voegt het weinig meer toe aan de beleving. Zij duiken de diepte in, in plaats van dat er monsters en kogels uit het beeldscherm vliegen.

Een goede benadering

Crytek heeft dus een goede benadering. Daar is niets mis mee, het is zelfs zeer gebruikelijk bij grafische technieken in games. Deze truc is in te zetten op alle platformen die 3D ondersteunen, bril of geen bril, en zal waarschijnlijk snel in de spelmotor van Crytek belanden: de Cryengine 3. Ontwikkelaars hebben ze in ieder geval geholpen: die hoeven zich geen zorgen meer te maken over de zware technische beperkingen van ‘ouderwets 3D’. Zij kunnen zich weer vol richten op waar het om gaat: de games.

Volg de reacties op deze post via RSS

Plaats een reactie

Registreer je als vaste gebruiker. Heb je dit al eens gedaan, log dan in.

Hou de discussie menselijk en inhoudelijk. Reageer bij voorkeur onder je echte naam, met je foto als avatar (via Gravatar).

Toegestane HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>