Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De diffuse en speculaire verlichtingsonderdelen van de globale verlichtingsvergelijking bevatten termen die lichtintenuatie en de spotlight-kegel beschrijven. Deze voorwaarden worden hieronder beschreven.
Demping
De vertenuatie van een licht hangt af van het type licht en de afstand tussen het licht en de hoekpuntpositie. Gebruik een van de volgende vergelijkingen om de attenuatie te berekenen.
Atten = 1/( att0i + att1i * d + att2i * d²)
Waar:
| Parameter | Standaardwaarde | Type | Beschrijving | Bereik |
|---|---|---|---|---|
| att0i | 0.0 | DRIJVEN | Constante vertenuatiefactor | 0 tot +oneindig |
| att1i | 0.0 | DRIJVEN | Lineaire attenuatiefactor | 0 tot +oneindig |
| att2i | 0.0 | DRIJVEN | Kwadratische vertenuatiefactor | 0 tot +oneindig |
| d | N.V.T | DRIJVEN | Afstand van hoekpuntpositie tot lichtpositie | N.V.T |
- Atten = 1, als het licht een richtingslicht is.
- Atten = 0, als de afstand tussen het licht en het hoekpunt het lichtbereik overschrijdt.
De att0-, att1-, att2-waarden worden opgegeven door de leden attenuation0, Attenuation1 en Attenuation2 van D3DLIGHT9.
De afstand tussen het licht en de hoekpuntpositie is altijd positief.
d = | Ldir |
Waar:
| Parameter | Standaardwaarde | Type | Beschrijving |
|---|---|---|---|
| Ldir | N.V.T | D3DVECTOR | Richtingsvector van hoekpuntpositie tot lichtpositie |
Als d groter is dan het lichtbereik, dat wil gezegd, het bereiklid van een D3DLIGHT9 structuur, maakt Direct3D geen verdere vertenuatieberekeningen en past geen effecten van het licht op het hoekpunt toe.
De vertenuatieconstanten fungeren als coëfficiënten in de formule. U kunt verschillende vertenuatiecurven produceren door ze eenvoudig aan te passen. U kunt Attenuation1 instellen op 1,0 om een licht te maken dat niet wordt afgezwakd, maar nog steeds wordt beperkt door een bereik, of u kunt experimenteren met verschillende waarden om verschillende vertenuatie-effecten te bereiken.
De intenuatie bij het maximale bereik van het licht is niet 0,0. Om te voorkomen dat lichten plotseling verschijnen wanneer ze zich in het lichtbereik bevinden, kan een toepassing het lichtbereik vergroten. Of de toepassing kan attenuatieconstanten instellen, zodat de vertenuatiefactor dicht bij 0,0 ligt bij het lichtbereik. De vertenuatiewaarde wordt vermenigvuldigd met de rode, groene en blauwe componenten van de kleur van het licht om de intensiteit van het licht te schalen als factor van de afstandslicht gaat naar een hoekpunt.
Spotlight-factor
De volgende vergelijking geeft de spotlightfactor aan.
| Parameter | Standaardwaarde | Type | Beschrijving | Bereik |
|---|---|---|---|---|
| rhoi | N.V.T | DRIJVEN | cosinus(hoek) voor spotlight i | N.V.T |
| phii | 0.0 | DRIJVEN | Penumbra hoek van spotlight i in radialen | [thetai, pi) |
| thetai | 0.0 | DRIJVEN | Umbra hoek van spotlight i in radialen | [0, pi) |
| falloff | 0.0 | DRIJVEN | Afvalfactor | (-oneindig, +oneindig) |
Waar:
rho = norm(Ldcs).norm (Ldir)
en:
| Parameter | Standaardwaarde | Type | Beschrijving |
|---|---|---|---|
| Ldcs | N.V.T | D3DVECTOR | Het negatieve van de lichtrichting in de cameraruimte |
| Ldir | N.V.T | D3DVECTOR | Richtingsvector van hoekpuntpositie tot lichtpositie |
Na het berekenen van de lichttenuatie, houdt Direct3D ook rekening met spotlight-effecten, indien van toepassing, de hoek die het licht weerspiegelt van een oppervlak en de reflectantie van het huidige materiaal om de diffuse en speculatieve componenten voor dat hoekpunt te berekenen. Zie SpotLightvoor meer informatie.
Verwante onderwerpen