Een kor­te ge­schie­de­nis van CGI

C’t Magazine - - Achtergrond | 3d-fotorealisme -

Het ba­sis­idee van fo­to­re­a­lis­ti­sche com­pu­ter­beel­den is dat je een ob­ject in de ruim­te plaatst en er een vir­tu­e­le ca­me­ra op richt.

Het op­per­vlak van een 3D-mo­del be­staat vaak uit een NURBS-op­per­vlak (Non-Uni­form Ra­ti­o­nal B-Spli­ne) of uit po­ly­go­nen. Bij de eerste gaat het om Bé­zier­cur­ves in de drie­di­men­si­o­na­le ruim­te, die de ont­wer­per ma­ni­pu­leert via con­tro­le­pun­ten, de zo­ge­naam­de ver­ti­ces. De soft­wa­re be­re­kent de ruim­te tus­sen de krom­men. NURBS-op­per­vlak­ken wor­den ge­ken­merkt door een ho­ge ma­the­ma­ti­sche pre­ci­sie en wor­den daar­om ge­bruikt bij het ont­wer­pen van au­to’s en elek­tro­ni­sche ap­pa­ra­ten.

Po­ly­go­nen vin­den we te­rug bij ani­ma­tie­films en spel­len. Elk in­di­vi­du­eel mo­del be­staat ge­woon­lijk uit hon­der­den of dui­zen­den po­ly­go­nen, die drie of vier ran­den heb­ben. Van­we­ge de ef­fi­ci­ën­tie pro­be­ren de ont­wer­pers om met zo min mo­ge­lijk po­ly­go­nen te wer­ken. Voor het ge­zicht en de han­den van een ge­stal­te zijn er ge­woon­lijk meer no­dig dan voor de romp. Een ho­ge­re re­so­lu­tie, dat wil zeg­gen een gro­ter aan­tal po­ly­go­nen, is be­ter: hoe min­der po­ly­go­nen, hoe hoe­ki­ger het mo­del er­uit­ziet.

In het echt re­flec­teert elk op­per­vlak het licht in al­le denk­ba­re rich­tin­gen. Voor een com­pu­ter is die com­plexi­teit tot dus­ver nau­we­lijks te be­re­ke­nen, wat nog ster­ker gold voor de com­pu­ters van de ja­ren 60, toen de com­pu­ter­beel­den in zwang kwa­men. In het een­vou­dig­ste ge­val wor­den al­leen de licht­stra­len be­re­kend die van het 3D-ob­ject naar het oog gaan. Men plaatst een ca­me­ra­po­si­tie in de ruim­te en daar­voor een ras­ter, waar­van de vlak­jes de pixels ver­te­gen­woor­di­gen. De com­pu­ter be­re­kent vec­to­ren die van de hoe­ken van el­ke po­ly­goon naar de ca­me­ra­po­si­tie gaan. Waar de­ze vec­to­ren het ras­ter pas­se­ren, te­kent de com­pu­ter ge­kleur­de pixels. Zo ont­staat uit een drie­di­men­si­o­naal ob­ject een ge­ras­terd beeld.

Het ras­te­ren van een der­ge­lijk 3Dvec­tor­beeld vormt ook nu nog een deel van de pro­gram­me­rings­in­ter­fa­ces Di­rec­tX en OpenGL, maar is voor­al ge­schikt voor af­beel­din­gen met slechts één 3D-mo­del. Bij meer mo­del­len zijn er mas­kers of an­de­re ex­ten­sies no­dig om uit te ma­ken wat er wordt weer­ge­ge­ven. An­ders is al­leen het ob­ject te zien dat het laatst is be­re­kend.

Bij ray­cas­ting gaat het net om­ge­keerd. Hier stuurt de com­pu­ter vec­to­ren van de ca­me­ra door het ras­ter naar de 3D-ob­jec­ten. Bij meer ob­jec­ten in de scè­ne stopt de vec­tor bij het voor­werp dat het dichtst bij de ca­me­ra­pos­tie ligt. De pro­ce­du­re is dus niet al­leen prak­tisch, maar ook ef­fi­ci­ënt. Ray­cas­ting werd be­roemd in 1992 door de toe­pas­sing in de pc-ga­me Wol­fen­stein 3D. Daar maak­te de tech­no­lo­gie 3D-beel­den mo­ge­lijk op een 286-pc.

Voor fo­to­re­a­lis­me ont­bre­ken scha­du­wen, re­flec­ties en licht­bre­king. De op­los­sing daar­voor heet ray­tra­cing. De ont­wer­per plaatst niet al­leen het mo­del en de ca­me­ra, maar ook de licht­bron­nen. Net als bij ray­cas­ting gaan de licht­stra­len eerst van de ca­me­ra naar het 3D-mo­del. Uit­gaan­de van het mo­del be­re­kent de com­pu­ter nu se­cun­dai­re licht­stra­len naar al­le licht­bron­nen die in de ruim­te ge­plaatst zijn. Als zich niets tus­sen het mo­del en de licht­bron be­vindt, wordt het recht­streeks be­licht en krijgt het af­han­ke­lijk van de ei­gen­schap­pen van het op­per­vlak een licht­glans. Al­les wat tus­sen licht­bron en mo­del zit, werpt een scha­duw. Het mo­del wordt daar al­leen be­licht door het om­ge­vings­licht. Met se­cun­dai­re licht­stra­len wordt re­flec­tie en bij trans­pa­ran­te ob­jec­ten ook licht­bre­king be­re­kend.

De­ze re­cur­sie­ve ray­tra­cing vormt de ba­sis voor de hui­di­ge fo­to­re­a­lis­ti­sche com­pu­ter­beel­den. Daar­na werd veel on­der­zoek ge­sto­ken in de weer­ga­ve van in­di­rec­te ver­lich­ting, dus de re­flec­tie van licht­stra­len van al­le aan­we­zi­ge ob­jec­ten en re­ke­ning hou­dend met na­tuur­wet­ten zo­als die van be­houd van ener­gie. De weer­ga­ve van een 3Dmo­del biedt nog veel mo­ge­lijk­he­den om de scè­ne er re­a­lis­ti­scher te la­ten uit­zien. Sha­ders ge­ven in­for­ma­tie over licht­door­la­tend­heid, re­flec­tie, glans, spie­ge­ling en an­de­re pa­ra­me­ters. Tex­tu­ren zijn af­beel­din­gen die het mo­del be­dek­ken.

Een be­lang­rij­ke aan­vul­ling op de­ze in­for­ma­tie is sub-surfa­ce scat­te­ring, de ver­strooi­ing van licht in trans­pa­ran­te ob­jec­ten. Deels door­schij­nen­de ob­jec­ten weer­spie­ge­len licht niet al­leen aan de op­per­vlak­te, maar ge­deel­te­lijk ook na­dat het in het ob­ject is door­ge­dron­gen, bij­voor­beeld bij een re­flec­te­ren­de laag on­der een gla­zen plaat, bij wol­ken en bij de men­se­lij­ke huid. Een voor­beeld van de­ze vorm van ver­strooi­ing zijn door­schij­nen­de oren bij te­gen­licht. Daar ko­men nog ef­fec­ten bij zo­als scherp­te­diep­te, lens­re­flec­ties en nog veel meer.

Het ene wis­kun­di­ge mo­del sta­pelt zich op het an­de­re. Sub-surfa­ce­s­cat­te­ring zorgt hier in Ra­ta­touil­le voor de door­schij­nen­de oren.

Newspapers in Dutch

Newspapers from Netherlands

© PressReader. All rights reserved.