Raytracing

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Principe van raytracing.

Ray tracing of raytracing is een methode waarmee een scène (doorgaans in 3D) omgezet kan worden in een tweedimensionaal beeld. De objecten in een scène worden wiskundig omschreven samen met andere eigenschappen, zoals kleur, oppervlakte en mate van reflectie. In de scène bevinden zich ook lichten en een camera, het punt waaruit de scène bekeken wordt. Voor elke pixel in het 2D beeld wordt een lichtstraal (ray) vanuit de camera de scène in geschoten en gevolgd (tracing) om te kijken met welk object deze straal in aanraking komt. Voor het punt waar de straal het object raakt wordt de kleur berekend (door rekening te houden met de kleur van het object, de belichting en de andere eigenschappen die de kleur op dat punt kunnen beïnvloeden) en dat wordt de kleur van één pixel in het 2D beeld.

Shading[bewerken]

Shading wordt gebruikt om de kleur te bepalen van het voorwerp. De parameters die het resultaat van de shader beïnvloeden hangt af van het shadermodel. De beschikbare modellen zijn:

Reflectie, refractie en schaduw[bewerken]

Zonder schaduw, refractie of reflectie

Zonder gebruik te maken van deze technieken zien de meeste resultaten er niet spectaculair uit.

Met schaduw

Schaduw[bewerken]

Als bij shading enkel de locatie van het licht en het voorwerp in rekening wordt gebracht zal er geen schaduw optreden. Het is mogelijk dat er een voorwerp tussen het licht en de botsing staat. Hierdoor zal de botsing niet verlicht worden. Door een straal van de lichtbron te starten in de richting van de botsing kan dit gecontroleerd worden. Die straal moet in hetzelfde punt botsen als de oorspronkelijke straal. Als dat niet het geval is staat er een voorwerp tussen, dus zal er schaduw optreden. Het is ook mogelijk gebruik te maken van shadowmaps.

Met reflectie

Reflectie[bewerken]

Reflectie is het weerkaatsen van een straal. Dit kan gedaan worden door een nieuwe straal te creëren in de botsing van de eerste straal. Het resultaat van deze straal zal dan opgeteld worden bij de eerste oorspronkelijk straal. Op deze manier kan een raytracer spiegeling of spiegels tekenen.

Met refractie

Refractie[bewerken]

Refractie is het breken van licht aan een grensvlak. Bij transparante materialen, zoals glas en water, is dit nodig. De refractie van een straal kan berekend worden door een nieuwe straal te creëren op de plaats van de botsing met de richting van de gebroken straal. In het voorbeeld is refractie weergegeven met behulp van twee lenzen.

Met zachte schaduw

Zachte schaduw[bewerken]

Normaal gesproken levert raytracing schaduwen met een scherpe rand op, ook wel harde schaduwen genoemd. Dit komt doordat licht uit punten afkomstig is in plaats van oppervlakten. Zachte schaduwen worden gevormd door niet een punt als lichtbron te nemen maar een oppervlakte.

Omgevingslicht[bewerken]

Radiosity[bewerken]

1rightarrow blue.svg Zie Radiosity voor het hoofdartikel over dit onderwerp.
Ambient Occlusion

Omgevingsverberging[bewerken]

In het Engels Ambient Occlusion. Met deze methode kan men de verlichting van de hemel in rekening brengen. Dit kan verkregen worden door willekeurige stralen in het rond te sturen bij een botsing. Als deze straal de hemel raakt zal dit bijdragen tot de verlichting van dat punt.

Globale verlichting

Globale verlichting[bewerken]

In het Engels Global Illumination. Met deze methode zal elk punt belicht worden door alles in de omgeving. Als er bijvoorbeeld een groot rood oppervlak is, zal dit invloed uitoefenen op ander objecten. Deze zullen dan licht rood gekleurd worden. Er zijn verschillende methoden om dit te effect te bereiken.

Voor- en nadelen[bewerken]

(Tegenover Scanline Rendering)

Voordelen:

  • Accuraat
  • Makkelijk uit te breiden
  • Fysieke simulatie mogelijk (ten koste van snelheid)
  • Schaalbaar

Nadelen:

  • vereist veel rekenkracht en dus krachtige processoren (dedicated hardware is nog in experimentele fase)

Extra[bewerken]

1D, 2D, 3D, 4D, nD[bewerken]

Een raytracer hoeft niet beperkt te zijn tot 3 dimensies. Het is ook mogelijk 1D, 2D, 4D, ... , nD beelden te genereren.

Raytracers[bewerken]

Zie ook[bewerken]

Bronnen[bewerken]