Back-face-borttagningsalgoritmen är en metod som används i datorgrafik för att förbättra återgivningseffektiviteten genom att kassera polygoner som inte är synliga för tittaren. Det utnyttjar det faktum att polygoner som vetter bort från betraktaren döljs av de som vetter mot betraktaren, förutsatt att ett icke-transparent, ogenomskinligt objekt. Därför är det onödigt att beräkna skuggningen och göra de bakåtriktade polygonerna.
Så här fungerar det:
1. Definiera visningsriktningen: En visningsriktningsvektor (ofta helt enkelt den negativa z-axeln i ett standardkoordinatsystem) är etablerat. Detta representerar riktningen från vilken tittaren tittar på scenen.
2. Beräkna polygons normala vektor: Varje polygon i 3D -modellen har en normal vektor. Denna vektor är vinkelrätt mot ytan på polygonen och pekar utåt. Det finns olika sätt att beräkna detta, som ofta involverar tvärprodukten från två kanter på polygonen.
3. Bestämma polygonorientering: Algoritmen jämför riktningen för polygons normala vektor med visningsriktningsvektorn. Detta görs vanligtvis genom DOT -produkten:
* dot Product> 0: Den normala vektorn pekar generellt mot tittaren. Detta är en * frontläge * polygon. Det ska göras.
* dot -produkt <0: Den normala vektorn pekar i allmänhet bort från betraktaren. Detta är en * bakåtriktad * polygon. Det ska tas bort (avtagen).
* dot -produkt ≈ 0: Polygonen är parallell med visningsriktningen. Hanteringen av detta fall kan variera; Det kan göras eller släppas beroende på implementeringen.
4. Culling back-facing polygons: Baserat på POT-produktresultatet kasseras de bakåtvända polygonerna. Renderaren bearbetar bara de framåtvända polygonerna, vilket minskar arbetsbelastningen avsevärt.
Fördelar:
* Förbättrad prestanda: Algoritmen minskar antalet polygon som måste behandlas avsevärt, vilket leder till snabbare återgivningstider, särskilt för komplexa scener med många polygoner.
* reducerat minnesbandbredd: Mindre data måste överföras till grafikkortet för behandling.
Nackdelar:
* Felaktiga resultat med icke-konvexa objekt: Back-face culling kan ge felaktiga resultat om objektet inte är konvex (dvs har konkava delar). I sådana fall kan vissa framåtriktade polygoner vara dolda bakom bakåtriktade. En mer sofistikerad algoritm som Z-buffern behövs i dessa situationer för att lösa dolda ytproblem.
* Hanterar inte transparens: Den här metoden fungerar inte för transparenta föremål, eftersom baksidan fortfarande kan vara synliga genom de transparenta framsidorna.
* Hanterar inte tvåsidiga polygoner: Vissa polygoner kan behöva vara synliga från båda sidor, och ryggfaktor skulle felaktigt ta bort en sida.
Sammanfattningsvis är borttagning av backytor en enkel och effektiv teknik för att förbättra återgivningseffektiviteten i datorgrafik genom att snabbt identifiera och kassera osynliga polygoner. Det är emellertid avgörande att förstå dess begränsningar och kombinera den med andra tekniker, såsom Z-buffering, för fullständig och korrekt återgivning i komplexa scener.