Dela via


Matematik av belysning (Direct3D 9)

Direct3D Light Model omfattar omgivande, diffus, spekulär och emitterande belysning. Detta är tillräckligt flexibel för att lösa en mängd olika belysningssituationer. Du refererar till den totala mängden ljus i en scen som global belysning och beräknar den med hjälp av följande ekvation.

Global Illumination = Ambient Light + Diffuse Light + Specular Light + Emissive Light 

Omgivande belysning (Direct3D 9) är konstant belysning. Det är konstant i alla riktningar och det färgar alla bildpunkter i ett objekt på samma sätt. Det går snabbt att beräkna men lämnar objekten platta och orealistiska. Information om hur omgivande belysning beräknas av Direct3D finns i Ambient Lighting (Direct3D 9).

Diffus ljussättning (Direct3D 9) beror på både ljusriktningen och det normala på objektets yta. Det varierar mellan ytan på ett objekt som ett resultat av den föränderliga ljusriktningen och den föränderliga ytnumreringsvektorn. Det tar längre tid att beräkna diffus belysning eftersom den ändras för varje objekthörn, men fördelen med att använda den är att den skuggar objekt och ger dem tredimensionellt djup (3D). Information om hur diffus belysning beräknas i Direct3D finns i Diffus belysning (Direct3D 9).

Specular Lighting (Direct3D 9) identifierar de ljusa spektulära höjdpunkterna som uppstår när ljus träffar en objektyta och reflekterar tillbaka mot kameran. Det är mer intensivt än diffust ljus och faller av snabbare över objektytan. Det tar längre tid att beräkna spektulär belysning än diffus belysning, men fördelen med att använda den är att den lägger till betydande detaljer till en yta. Information om hur spektulär belysning beräknas i Direct3D finns i Specular Lighting (Direct3D 9).

Emissive Lighting (Direct3D 9) är ljus som avges av ett objekt; till exempel en glöd. För att se hur emissiv belysning beräknas i Direct3D, se Emissive Lighting (Direct3D 9).

Realistisk belysning kan uppnås genom att tillämpa var och en av dessa typer av belysning på en 3D-scen. Värdena som beräknas för omgivande, emissiv och diffusa komponenter matas ut som diffus hörnfärg; värdet för den spekulära belysningskomponenten matas ut som spekulär hörnfärg. Omgivande, diffusa och spektulära ljusvärden kan påverkas av en viss ljusdämpnings- och spotlightfaktor. Mer information om hur dämpning fungerar finns i Attenuation och Spotlight Factor (Direct3D 9).

För att uppnå en mer realistisk belysningseffekt lägger du till fler lampor; Scenen tar dock längre tid att rendera. För att uppnå alla effekter som en designer vill ha använder vissa spel mer CPU-kraft än vad som är vanligt tillgängligt. I det här fallet är det typiskt att minska antalet belysningsberäkningar till ett minimum genom att använda belysningskartor och miljökartor för att lägga till belysning i en scen när du använder texturkartor.

Belysning beräknas i kamerautrymmet. Information om hur belysningstransformeringar beräknas finns i Camera Space Transformations (Direct3D 9). Optimerad belysning kan beräknas i modellutrymmet, när särskilda förhållanden finns: normala vektorer är redan normaliserade (D3DRS_NORMALIZENORMALS är Sant), hörnblandning behövs inte, omvandlingsmatriser är ortogoniala och så vidare.

ljus och material