Delen via


Lichttypen (Direct3D 9)

De eigenschap lichttype definieert welk type lichtbron u gebruikt. Het lichttype wordt ingesteld met behulp van een waarde uit de opsomming D3DLIGHTTYPE C++ in het typelid van de D3DLIGHT9 structuur van het licht. Er zijn drie soorten lichten in Direct3D - puntlichten, spotlights en richtingslichten. Elk type verlicht objecten in een scène anders, met verschillende rekenkrachtniveaus.

Puntlicht

Puntlichten hebben kleur en positie binnen een scène, maar geen enkele richting. Ze geven licht even in alle richtingen af, zoals wordt weergegeven in de volgende afbeelding.

illustratie van puntlicht

Een gloeilamp is een goed voorbeeld van een puntlicht. Puntlichten worden beïnvloed door vertenuatie en bereik, en verlichten een mesh op hoekpunt-per-hoekpuntbasis. Tijdens de verlichting gebruikt Direct3D de positie van het puntlicht in de wereldruimte en de coördinaten van het hoekpunt dat wordt verlicht om een vector af te leiden voor de richting van het licht en de afstand die het licht heeft afgelegd. Beide worden gebruikt, samen met het hoekpunt normaal, om de bijdrage van het licht aan de verlichting van het oppervlak te berekenen.

Directioneel licht

Richtingslichten hebben alleen kleur en richting, geen positie. Ze zenden parallel licht uit. Dit betekent dat alle licht dat door richtingslichten wordt gegenereerd, door een scène in dezelfde richting reist. Stel je een richtingslicht voor als een lichtbron op vrijwel oneindige afstand, zoals de zon. Richtingslichten worden niet beïnvloed door vertenuatie of bereik, dus de richting en kleur die u opgeeft, zijn de enige factoren die worden overwogen wanneer Direct3D hoekpuntkleuren berekent. Vanwege het kleine aantal verlichtingsfactoren zijn dit de minst rekenintensieve lichten die moeten worden gebruikt.

Spotlight

Spotlights hebben kleur, positie en richting waarin ze licht uitzenden. Licht dat uit een spotlight wordt uitgezonden, bestaat uit een helder binnenste kegel en een grotere buitenste kegel, waarbij de lichtintensiteit tussen de twee afneemt, zoals wordt weergegeven in de volgende afbeelding.

illustratie van een spotlight met een binnenste kegel en een buitenste kegel

Spotlights worden beïnvloed door uitval, intenuatie en bereik. Deze factoren, evenals de afstand die licht naar elk hoekpunt reist, worden in beeld gezien bij het berekenen van belichtingseffecten voor objecten in een scène. Het berekenen van deze effecten voor elk hoekpunt maakt spotlights de meest rekenkundige tijdrovende van alle lichten in Direct3D.

De D3DLIGHT9 C++-structuur bevat drie leden die alleen door spotlights worden gebruikt. Deze leden - Falloff, Theta en Phi - bepalen hoe groot of klein de binnenste en buitenste kegels van een spotlightobject zijn en hoe licht ertussen afneemt.

De Theta-waarde is de radiale hoek van de binnenste kegel van de spotlight en de Phi-waarde is de hoek voor de buitenste kegel van licht. De falloff-waarde bepaalt hoe de lichtintensiteit afneemt tussen de buitenrand van de binnenste kegel en de binnenrand van de buitenste kegel. De meeste toepassingen stellen Falloff in op 1.0 om een falloff te maken die gelijkmatig tussen de twee kegels plaatsvindt, maar u kunt indien nodig andere waarden instellen.

In de volgende afbeelding ziet u de relatie tussen de waarden voor deze leden en hoe ze de binnenste en buitenste kegels van het licht van een spotlight kunnen beïnvloeden.

illustratie van hoe de phi- en theta-waarden zich verhouden tot de spotlight-kegels

Spotlights geven een kegel van licht uit die twee delen heeft: een helder binnenste kegel en een buitenste kegel. Licht is helderst in de binnenste kegel en is niet aanwezig buiten de buitenste kegel, met lichte intensiteit die zich tussen de twee gebieden bevindt. Dit type attenuatie wordt meestal aangeduid als falloff.

De hoeveelheid licht dat een hoekpunt ontvangt, is gebaseerd op de locatie van het hoekpunt in de binnenste of buitenste kegels. Direct3D berekent het puntproduct van de richtingsvector (L) van de spotlight en de vector van het licht naar het hoekpunt (D). Deze waarde is gelijk aan de cosinus van de hoek tussen de twee vectoren en fungeert als een indicator van de positie van het hoekpunt dat kan worden vergeleken met de kegelhoeken van het licht om te bepalen waar het hoekpunt zich in de binnenste of buitenste kegels kan bevinden. In de volgende afbeelding ziet u een grafische weergave van de koppeling tussen deze twee vectoren.

illustratie van de spotlightrichtingsvector en de vector van het hoekpunt naar de spotlight

Het systeem vergelijkt deze waarde met de cosinus van de binnenste en buitenste kegelhoeken van de spotlight. In de D3DLIGHT9 structuur van het licht vertegenwoordigen de Theta- en Phi-leden de totale kegelhoeken voor de binnenste en buitenste kegels. Omdat de vertenuatie plaatsvindt wanneer het hoekpunt zich verder van het midden van verlichting (in plaats van over de totale kegelhoek) bevindt, verdeelt de runtime deze kegelhoeken in de helft voordat de cosines worden berekend.

Als het puntproduct van vectoren L en D kleiner is dan of gelijk is aan de cosinus van de buitenste kegelhoek, ligt het hoekpunt buiten de buitenste kegel en ontvangt het geen licht. Als het puntproduct van L en D groter is dan de cosinus van de binnenste kegelhoek, dan bevindt het hoekpunt zich binnen de binnenste kegel en ontvangt de maximale hoeveelheid licht, rekening houdend met de vertenuatie over afstand. Als het hoekpunt zich ergens tussen de twee regio's bevindt, wordt de falloff berekend met de volgende vergelijking.

formule voor lichtintensiteit op hoekpunt, na

Waar:

  • Ik f is lichtintensiteit na uitval
  • Alfa is de hoek tussen vectoren L en D
  • Theta is de binnenste kegelhoek
  • Phi is de buitenste kegelhoek
  • p is de val

Met deze formule wordt een waarde tussen 0,0 en 1,0 gegenereerd waarmee de intensiteit van het licht op het hoekpunt wordt geschaald om rekening te houden met uitval. De intenuatie als factor van de afstand van het hoekpunt van het licht wordt ook toegepast. In de volgende grafiek ziet u hoe verschillende afvalwaarden van invloed kunnen zijn op de dalingscurve.

grafiek van lichtintensiteit versus de hoekpuntafstand van het licht

Het effect van verschillende afvalwaarden op de werkelijke belichting is subtiel en er wordt een kleine prestatiestraf gemaakt door de afvalcurve vorm te geven met andere waarden dan 1,0. Om deze redenen is deze waarde doorgaans ingesteld op 1,0.

lichten en materialen