Sistemas de coordenadas (Direct3D 9)
Normalmente, os aplicativos gráficos 3D usam dois tipos de sistemas de coordenadas cartesianos: canhoto e destro. Em ambos os sistemas de coordenadas, o eixo x positivo aponta para a direita e o eixo y positivo aponta para cima. Você pode se lembrar de qual direção o eixo z positivo aponta apontando os dedos da mão esquerda ou direita na direção x positiva e enrolando-os na direção y positiva. A direção que seu polegar aponta, em direção ou longe de você, é a direção que o eixo z positivo aponta para esse sistema de coordenadas. A ilustração a seguir mostra esses dois sistemas de coordenadas.
O Direct3D usa um sistema de coordenadas canhoto. Se você estiver portando um aplicativo baseado em um sistema de coordenadas destro, deverá fazer duas alterações nos dados passados para o Direct3D.
- Inverte a ordem dos vértices de triângulo para que o sistema os percorra no sentido horário da frente. Em outras palavras, se os vértices forem v0, v1, v2, passe-os para Direct3D como v0, v2, v1.
- Use a matriz de exibição para dimensionar o espaço mundial -1 na direção z. Para fazer isso, inverte o sinal do membro _31, _32, _33 e _34 da estrutura D3DMATRIX que você usa para sua matriz de exibição.
Para obter o que equivale a um mundo destro, use oD3DXMatrixPerspectiveRHe D3DXMatrixOrthoRH funções para definir a transformação de projeção. No entanto, tenha cuidado para usar a função deD3DXMatrixLookAtRHcorrespondente, inverter a ordem de abate de backface e definir os mapas de cubo adequadamente.
Embora coordenadas canhotas e destros sejam os sistemas mais comuns, há uma variedade de outros sistemas de coordenadas usados no software 3D. Por exemplo, não é incomum que aplicativos de modelagem 3D usem um sistema de coordenadas no qual o eixo y aponta para ou para longe do visualizador e o eixo z aponta para cima.
Formalmente, a orientação de um conjunto de vetores de base (ou seja, um sistema de coordenadas) pode ser encontrada pela computação do determinante da matriz definida pelo conjunto específico de vetores de base. Se o determinante for positivo, diz-se que a base é orientada "positivamente" (ou destro). Se o determinante for negativo, a base será considerada "negativamente" orientada (ou canhota). Para obter uma explicação do que é determinante, consulte qualquer recurso de álgebra linear.
Informalmente, você pode usar a "regra direita/esquerda" para determinar se um determinado conjunto de vetores de base forma um sistema de coordenadas à direita ou à esquerda.
As operações essenciais executadas em objetos definidos em um sistema de coordenadas 3D são conversão, rotação e dimensionamento. Você pode combinar essas transformações básicas para criar uma matriz de transformação. Para obter detalhes, consulte Transforms (Direct3D 9).
Quando você combina essas operações, os resultados não são comutativos; a ordem na qual você multiplica matrizes é importante.
Tópicos relacionados
-
sistemas de coordenadas e geometria