Dimensies kun je uitdrukken in lengte, breedte en hoogte. Een punt is oneindig klein en heeft in grond van de zaak geen lengte, breedte en hoogte. Eén punt zou je de nulde dimensie kunnen noemen (0D). Een lijn heeft een lengte, maar geen breedte en hoogte. Een lijn heeft één dimensie (1D). Een rechthoek heeft een lengte en een breedte Een rechthoek heeft twéé dimensies (2D). Een kubus heeft een lengte, breedte en een hoogte Een kubus heeft drié dimensies (3D).
Je gaat leren hoe je een computer kunt aansturen om 3D-figuren te genereren.
Als eerste ga je in een code-editor code
schrijven die de vorm van de 3D-figuur definieert.
Daarna voeg je textures (uiterlijk) toe om het oppervlak van de 3D-figuur
bepaalde eigenschappen te geven.
Uiteindelijk koppel je het uiterlijk (een afbeelding)
en de vorm (code) aan elkaar en krijg je
bijvoorbeeld een 'Minecraft™' achtige figuur.
Een veelgebruikt 3D computerbestand is het .obj bestand. In een .obj bestand worden eerst alle hoekpunten gedefinieerd. Als alle punten met elkaar verbonden worden door lijnen dan krijgen we vlakken. Meestal zijn deze vlakken driehoeken of rechthoeken.
Het product van deze bewerking noemen we een mesh. Daarna kan er nog een textuur worden toegevoegd, door middel van een afbeelding. Textuur is de ligging, ruwheid en vorm van het materiaal van een oppervlak.
Net zoals je bij een 2D assenstelsel één X-as en één Y-as hebt, heb je bij een 3D assenstelsel één X-as, één Y-as en één Z-as.
1 Teken op ruitjespapier een 3D assenstelsel.
Vertice/vertex = v (Eng: hoekpunt).
v 0 0 0
v 0 0 4
v 4 0 4
v 4 0 0
enz.
faces/face = f (Eng: vlak)
f 2 3 7 6
Een vlak bestaat in een .obj-bestand maar aan één kant. (Zoals je ook je gezicht (face) maar aan een kant hebt). Daarom is de volgorde belangrijk waarin je de hoekpunten opsomt. Vanaf de kant waar je kijkt ga je de nummers af, tegen de klok in.
f 2 3 7 6
f 1 4 3 2
Een texture is een afbeelding die je op een mesh kunt projecteren. In games en andere 3D objecten worden textures gebruikt om meshes meer realistisch te laten lijken.
2 Zoek of maak een plaatje wat we op een face (Eng: vlak) kunnen zetten; als het een vierkant plaatje is heb je geen vervorming.
Om textures toe te kunnen voegen wordt een nieuw bestand gemaakt,
waarin de materialen (en eventueel textures) gedefinieerd worden.
In het voorbeeld wat hieronder gebruikt wordt worden
twee afbeeldingen gebruikt:
minecraft-head-face.png en
minecraft-head-not-face.png.
minecraft-head-face.png bevat de texture voor de voorzijde van het 'Minecraft™ gezichtje' en
minecraft-head-not-face.png bevat de texture voor de overige vijf vlakken van het Minecraft™ gezichtje'.
newmtl headFace
map_Kd minecraft-head-face.png
newmtl headNotFace
map_Kd minecraft-head-not-face.png
newmtl headFace
headFace gebruik je later weer in het .obj bestand.
map_Kd minecraft-head-face.png
map_Kd wordt de locatie van het bestand
minecraft-head-face.png gedefinieerd.
newmtl headNotFace
headNotFace gebruik je later weer in het .obj bestand.
map_Kd minecraft-head-not-face.png
map_Kd wordt de locatie van het bestand
minecraft-head-not-face.png gedefinieerd.
Inmiddels heb je vier bestanden in dezelfde map staan:
De informatie die in het .mtl bestand staat moet nog gekoppeld worden aan het .obj bestand.
In het .obj bestand moet bepaalde code toegevoegd worden
om de textures zichtbaar te krijgen op de kubus.
mtllib kubus.mtl
v)
en de faces (f) gedefinieerd.
v)
en de faces (f)
de code met het volgende format:
vt 0 0 #coordinaten punt 1
vt 1 0 #coordinaten punt 2
enz.
Uiteindelijk moet je de hoekpunten van de afbeelding koppelen
aan de faces (f) in het kubus.obj bestand.
minecraft-head-face.png en
minecraft-head-not-face.png.
minecraft-head-face.png
gekoppeld aan de variabele headFace
minecraft-head-not-face.png
gekoppeld aan de variabele headNotFace
usemtl headFace
f) toevoegen:
code van de faces (f)
als volgt te wijzigen:
f 2 3 7 6
usemtl headFace
f 2/1 3/2 7/4 6/3
minecraft-head-face.png gekoppeld
aan het eerste vlak.
minecraft-head-not-face.png wordt in het voorbeeld gebruikt voor de overige
5 vlakken.
usemtl headNotFace
f 3/1 4/2 8/4 7/3
Een piramide (een vijfvlak) is net als een kubus een ruimtelijke figuur.
3 Maak een .obj-bestand van een piramide en koppel in een .mtl-bestand een texture toe.