Sistemas de coordenadas (Direct3D 9)

Normalmente, os aplicativos gráficos 3D usam dois tipos de sistemas de coordenadas Cartesian: 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 lembrar para qual direção o eixo z positivo aponta, apontando os dedos de sua mão direita ou esquerda na direção x positiva e curvando-os na direção y positiva. A direção do seu polegar aponta em sua direção ou para longe de você, é a direção em que o eixo z positivo aponta para esse sistema de coordenadas. A ilustração a seguir mostra esses dois sistemas de coordenadas.

ilustração dos sistemas de coordenadas cartesianas à esquerda e à direita

O Direct3D usa um sistema de coordenadas à esquerda. Se você estiver portando um aplicativo baseado em um sistema de coordenadas destro, deverá fazer duas alterações nos dados passados para o Direct3D.

  • Inverter a ordem dos vértices de triângulos, de modo que o sistema os percorra em sentido horário, a partir da frente. Em outras palavras, se os vértices forem v0, v1, v2, passe-os para o Direct3D como v0, v2, v1.
  • Use a matriz de visualização para dimensionar o espaço do mundo em -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 as funções D3DXMatrixPerspectiveRH e D3DXMatrixOrthoRH para definir a transformação de projeção. No entanto, tenha cuidado para usar a função D3DXMatrixLookAtRH correspondente, reverter a ordem de abate de backface e definir os mapas de cubo de acordo.

Apesar das coordenadas de esquerda e direita serem os sistemas mais comuns, há uma variedade de outros sistemas de coordenadas usados no software 3D. Por exemplo, não é incomum para apps de modelagem 3D usar um sistema de coordenadas no qual o eixo y aponta para o visualizador ou para longe dele, 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, a base será considerada 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 tradução, rotação e dimensionamento. Você pode combinar essas transformações básicas para criar uma matriz de transformação. Para obter detalhes, consulte Transformações (Direct3D 9).

Quando você combina essas operações, os resultados não são comutativos; a ordem em que você faz multiplicação das matrizes é importante.

Sistemas de coordenadas e geometria