|
||
BelichtingScènes die je wilt tekenen met bovenstaande functies zien er nogal plat uit omdat er geen licht is. De kleur van de oppervlakken is gelijk, onafhankelijk van hun oriëntatie. Om scènes er realistischer te maken moet je belichting inschakelen en lichten op de correcte plaatsen plaatsen. Goede lichtscènes maken is niet eenvoudig maar het effect is erg goed.Om belichting in te schakelen kun je de volgende functie gebruiken;
d3d_set_lighting(inschakelen) Schakelt het gebruik van belichting in (true) of uit (false). Wanneer je belichting gebruikt wordt voor elke vertex van een polygon de kleur vastgesteld. Vervolgens wordt de kleur van interne pixels gebaseerd op de kleur van deze vertices. Er zijn twee manieren waarop dit kan worden gedaan: of de hele polygon krijgt dezelfde kleur, of de kleur is vloeiend geïnterpoleerd over de polygon. Standaard wordt smooth shading gebruikt. Dit kan worden veranderd gebruikmakend van de volgende functie:
d3d_set_shading(smooth) Schakelt het gebruik van smooth shading in (true) of uit (false). Om belichting te gebruiken moet je natuurlijk lichten definiëren. Twee verschillende lichten bestaan: directionele lichten (zoals de zon), en positionele lichten. Lichten hebben een kleur. (We ondersteunen alleen diffuus licht, geen spectaculaire reflectie.) De volgende functies bestaan om lichten te definiëren en te gebruiken:
d3d_light_define_direction(ind, rx, ry, rz, klr) Definieert een directioneel licht. ind is de index van het licht (gebruik een klein positief getal). (rx,ry,rz) is de richting van het licht. klr is de kleur van het licht (vaak wil je c_white gebruiken). Deze functie zet het licht niet aan. De manier waarop een object het licht reflecteert hangt af van de rotatie tussen de lichtrichting en de normaal (loodlijn) van de oppervlakte, dat is de vector die loodrecht op de oppervlakte staat. Om belichte objecten te maken moet je niet alleen de positie van de vertices verschaffen, maar ook hun loodlijnen. Hiervoor zijn vier extra functies beschikbaar om de vertices van primitieven te definiëren:
d3d_vertex_normal(x, y, z, nx, ny, nz) Voeg vertex (x,y,z) toe aan de primitive, met normaal vector (nx,ny,nz). Merk op dat voor basisvormen die je kunt tekenen de loodlijnen automatisch goed worden ingesteld. « Fog | Modellen creëren » |
||





