Koordinatsystem (Direct3D 9)
Vanligtvis använder 3D-grafikprogram två typer av kartesiska koordinatsystem: vänsterhänta och högerhänta. I båda koordinatsystemen pekar den positiva x-axeln åt höger och den positiva y-axeln pekar uppåt. Du kan komma ihåg vilken riktning den positiva z-axeln pekar genom att peka fingrarna på antingen vänster eller höger hand i positiv x-riktning och curling dem i positiv y-riktning. Riktningen tummen pekar, antingen mot eller bort från dig, är riktningen som den positiva z-axeln pekar för det koordinatsystemet. Följande bild visar dessa två koordinatsystem.
Direct3D använder ett vänsterkoordinatsystem. Om du porterar ett program som baseras på ett högerhänt koordinatsystem måste du göra två ändringar i data som skickas till Direct3D.
- Vänd ordningen på triangelhörn så att systemet passerar dem medsols framifrån. Med andra ord, om hörnen är v0, v1, v2, skicka dem till Direct3D som v0, v2, v1.
- Använd vymatrisen för att skala världsutrymmet genom att -1 i z-riktningen. Det gör du genom att vända tecknet för den _31-, _32-, _33- och _34-medlem i den D3DMATRIX struktur som du använder för visningsmatrisen.
Om du vill hämta vad som motsvarar en högerhänt värld använder du funktionerna D3DXMatrixPerspectiveRH och D3DXMatrixOrthoRH för att definiera projektionstransformen. Var dock noga med att använda motsvarande D3DXMatrixLookAtRH- funktion, ångra backface-culling-ordningen och lägg ut kubkarttor i enlighet med detta.
Även om vänster- och högerhänta koordinater är de vanligaste systemen, finns det en mängd andra koordinatsystem som används i 3D-programvara. Det är till exempel inte ovanligt att 3D-modelleringsprogram använder ett koordinatsystem där y-axeln pekar mot eller bort från visningsprogrammet och z-axeln pekar uppåt.
Formellt kan orienteringen av en uppsättning basvektorer (dvs. ett koordinatsystem) hittas genom beräkning av den determinant för matrisen som definieras av den specifika uppsättningen basvektorer. Om determinanten är positiv sägs grunden vara "positivt" orienterad (eller högerhänt). Om determinanten är negativ sägs grunden vara "negativt" orienterad (eller vänsterhänt). En förklaring av vad en determinant är finns i alla linjära algebraresurser.
Informellt kan du använda regeln "höger/vänster" för att avgöra om en viss uppsättning basvektorer utgör antingen ett höger- eller vänsterkoordinatsystem.
De viktigaste åtgärderna som utförs på objekt som definierats i ett 3D-koordinatsystem är översättning, rotation och skalning. Du kan kombinera dessa grundläggande transformeringar för att skapa en transformeringsmatris. Mer information finns i Transformeringar (Direct3D 9).
När du kombinerar dessa åtgärder är resultaten inte kommutativa. i vilken ordning du multiplicerar matriser är viktigt.
Relaterade ämnen