Een introductie in 3D

CC-BY: At Mind - B3d101
Bron: Game Development with Blender door Dalai Felinto and Mike Pan

Als je onbekend bent met 3D is het handig om iets te weten over een aantal basisconcepten van computer graphics. Hier volgt een korte introductie.

Coördinatenstelsel

In het dagelijks leven leven wij in een 3 dimensionale wereld, waarbij we onderscheidt maken in lengte, breedte en diepte. Om deze 3 dimensies in een computer te representeren gebruiken we het Cartesisch coördinatenstelsel, waar de 3 dimensies worden gerepresenteerd als X, Y en Z, langs 3 loodrecht op elkaar staande assen (x-as, y-as en z-as). Waar de 3 assen elkaar snijden heet de oorsprong. Een punt in dit coordinaten stelsel wordt gerepresenteerd door de afstand vanaf de oorsprong; punt (2, 4, 8) is een punt dat 2 eenheden verwijderd is van de oorsprong langs de x-as, 4 eenheden verwijderd is vanaf de oorsprong langs de y-as en 8 eenheden verwijderd is vanaf de oorsprong langs de z-as. In 3D zul je moeten denken en werken in deze 3 dimensies.

../../_images/axis.png

Punten, lijnen, driehoeken en meshes

Wij kunnen een punt (ook wel vertex genoemd. Vertex is een gangbare naam in computer graphics) definieren gebruikmakend van het Cartesisch coördinatenstelsel XYZ. Een punt alleen is niet heel handig. Hoogstwaarschijnlijk kun je deze ook niet zien. Maar als je meerdere punten hebt en deze met elkaar verbindt ontsaat er een lijn. Door lijnen met elkaar te verbinden onstaat een driehoek, ook wel face genoemd. Door driehoeken met elkaar te verbinden ontstaat een vorm of model, ook wel een mesh genoemd.

Waarom is een driehoek zo belangrijk? Omdat computers in het bijzonder de grafische kaart van een computer de driehoek gebruikt als basis vorm. Een rechthoek kun je vormen door 2 driehoeken naast elkaar te leggen. Een bal wordt gemaakt van hele kleine driehoeken ook wel facelets genoemd gerangschikt naar de vorm van een bal.

Modelleren

Modelleren is het proces voor het creëren en herschikken van punten, lijnen en driehoeken, een mesh. Het is vermeldenswaard dat modellen geen volume bevatten, ze zijn hol van binnen.

Animatie

Animatie in deze context is het proces voor het creëren van de illusie van beweging en of verandering door heel snel achterelkaar een serie afbeeldingen te tonen met minimale verschillen tussen deze afbeeldingen. Denk aan bijvoorbeeld een flip boek (op YouTube staan diverse voorbeelden van flip boek animaties, zoek op “Flip Book animation” voor voorbeelden). In feite laat je dingen veranderen over de tijd heen zoals het verplaatsen van een object, het veranderen van de vorm of kleur van een object. Om een animatie op te zetten creëer je keyframes. Keyframes zijn snapshots die hele specifieke informatie over de animatie opslaan. Een tool als Blender interpoleert automatisch tussen de waarden van de keyframes om een soepele overgang te creëren.

Camera

Als je een animatie afspeelt of een spel speelt, dan bekijk je de animatie of het spel door een vooraf opgestelde camera. De camera staat niet vast maar beweegt door de animatie of bij een spel beweegt deze naar aanleiding van een gebruikers actie.

Game

Een spel in de basis gebruikt de gemaakte 3D objecten en voegt hier logica aan toe, zodat de 3D objecten weten hoe te reageren op events. Logica kun je definieren in de vorm van logic bricks (kan verschillende acties uitvoeren afhankelijk van de input van de gebruiker), scripts (kan de functionaliteit van logic bricks uitbreiden) of door gebruik te maken van fysieke eigenschappen van een object (bijvoorbeeld eigenschap “rigid body” om realistisch gedrag te krijgen). Een game engine bestaat uit verschillende componenten. Een aantal basis componenten zijn:

  • Een rendering engine: reproduceert de 3D scene dat je hebt gecreërd inclusief modellen, licht en cameras als een afbeelding.

  • Physics: om botsingen van objecten te berekenen en fysiek gedrag te simuleren.

  • Logica of scripting: maakt beslissingen op basis van gebruikersinput en houdt bij wat er zoal in het spel gebeurt.

  • Geluid: voor geluid.

Basis transformaties

In computer graphics zijn er 3 basis transformaties:

  • Translaties. Verplaatsen van een object van een positie naar een andere, in welke richting dan ook (x, y, z).

  • Schalen. Vergroeten of verkleinen van een object.

  • Rotaties. Roteren van een object rond 1 of meerder assen (x, y, z).

Normaalvector

Een normaalvector van een punt op een vlak is een vector die loodrecht staat op dat punt op dat vlak. De normaalvector wordt vaak gebruikt bij het berekenen van schaduwen van een vlak. Normaal wijzen de normaalvectoren naar buiten toe. Een verkeerd georiënteerde normaalvector kan ervoor zorgen dat een mesh heel donker of zwart eruit ziet, of onzichtbaar is.

Materialen & Textures

Om de kleur en uiting van een vorm te veranderen passen we materialen toe aan de vorm. Door toepassing van materialen kun je de kleur, de glans, de structuur en doorzichtigheid van een object beheren. Soms is het niet voldoende om de kleur of glans van een vorm aan te passen en wil je meer detail toevoegen om het zo echt mogelijk eruit te laten zien. Dan gebruiken we texturing. Texturing is een techniek om meer kleur en detail aan een mesh toe te voegen door de mesh te voorzien van een omhulsel, als een sticker die je op de mesh plakt. De projectie van een 2D afbeelding, oftewel een texture map, op een 3D mesh wordt texture mapping genoemd. Texture mapping kan automatisch berekend worden door gebruik te maken van een van de voorgedefinieerde projecties, of handmatig door gebruik te maken van een UV layout om de 2D afbeelding te projecteren op de 3D mesh.

Een texture veranderd niet alleen de kleur van een oppervlak maar kan ook andere eigenschappen beïnvloeden zoals de doorzichtigheid, reflectie en structuur. Hiermee wordt de illusie gecreërd van een meer gedetailleerd oppervlak. Naast texture map bestaat ook diffuse map, normal map en specular map. Met een diffuse map kun je de kleur van een oppervlak beïnvloeden. Met een normal map kun je de normaalvector van een object of oppervlak beïnvloeden, door een hobbelig effect te creëren en de manier waarop licht van het object weerkaatst te veranderen. Met een specular map kun je de spiegelende refectie van een object beïnvloeden zodanig dat deze glanst op bepaalde plaatsen en op andere plaatsen er mat uitziet.

Licht

Met behulp van licht kunnen we dingen waarnemen. Met licht kunnen we ook schaduwen creëren. De meeste 3D tools bevatten 1 of meerdere typen lampen; een spot, een zonnelamp, een hemi lamp en een omgevingslamp. Met goede belichting kun je bepaalde details naar voren halen (highlighten) en andere details verbergen. Door je licht zodanig te plaatsen kun je ook een drama effect of gevoel van realisme creëren. In Blender wordt een lichtbron gezien als een regulier object die je in de scene kunt plaatsen.