Eu sou muito novo no desenvolvimento 3D de qualquer tipo, no entanto, jogos. Ao ler os tutoriais e os exemplos, percebo que as coordenadas X / Y / Z parecem um pouco anteriores ao meu primeiro palpite.
Eu imaginava que se uma pessoa estivesse andando em torno de um campo, sua posição X / Y estaria mudando e se ela pulasse ou subisse ou subisse uma colina, então sua posição Z estaria mudando. Minhas suposições parecem estar erradas porque caminhar ao redor de um campo parece mudar X / Z e pular ou subir / descer uma colina altera o Y.
1) Minhas observações estão corretas? O 3D é novo para mim e talvez eu não esteja pensando nas coisas corretamente.
2) Qual é a lógica por trás do movimento horizontal sendo X / Z e o movimento vertical sendo Y?
3) Seria tão errado da minha parte usar X / Y como movimento horizontal e Z como movimento vertical no XNA Framework?
fonte
Respostas:
Suas suposições não estão erradas: cada mecanismo trata essas coordenadas de maneira diferente. De um modo geral, X é quase sempre o eixo Leste-Oeste, mas se Y ou Z é o eixo Altitude tende a variar. Pelo que entendi, o Quake 3, o Source Engine e o Torque engine têm Z como ativo. O mesmo acontece com a ferramenta de modelagem 3DS Max. Não é incomum.
Faz sentido ter um sistema de coordenadas ordenado aproximadamente em ordem decrescente de importância, para facilitar o entendimento de achatar uma representação em menos dimensões. Por exemplo, se o seu jogo estiver definido em um mapa de altura 2D, faz sentido que Z seja 'up', porque suas coordenadas X e Y no mapa do mundo 3D diretamente para as coordenadas X e Y no mapa de altura. Por outro lado, se você pensa principalmente em termos de renderização (e muitos desenvolvedores de mecanismos de jogos pensam), você está acostumado a X e Y serem as coordenadas da tela; portanto, adicionar um terceiro eixo naturalmente entra ou sai da tela.
Use o que for mais fácil para você, mas lembre-se de que qualquer escolha é arbitrária e que você pode precisar converter entre eles e usar vários sistemas de coordenadas em um programa.
fonte
Imagine olhar para um pedaço de papel estendido à sua frente com uma tabela, os eixos são tipicamente rotulados como X na parte inferior e Y na vertical; isso deixa Z como o eixo externo ao longo do solo.
É apenas uma convenção, mas é muito usada em gráficos onde pensamos em Z como a profundidade da cena.
Em outros campos como o CAD, sua versão seria mais comum.
fonte
A idéia é que os eixos xey permaneçam iguais - y é 'up' na tela e x é do outro lado.
z - a terceira dimensão, projeta-se de volta para a tela (ignorando as questões de entrega aqui). Em três dimensões, isso é um pouco estranho, mas para posicionar as coisas no espaço da tela, faz mais sentido.
3) Você pode, se quiser, mas seria doloroso e desajeitado. Eu recomendaria apenas se acostumar com os projetos-Z dentro / fora do monitor.
fonte
1) Sim, suas observações estão corretas.
2) O sistema global de coordenadas XYZ padrão faz sentido quando você pensa em termos de um jogo de tiro em primeira pessoa, quando olha através dos olhos de um personagem na cena com uma matriz de transformação em branco (identidade). Como quando você desenha um sistema de coordenadas em um pedaço de papel, X aponta para a direita e Y aponta para cima. De acordo com a regra da mão direita (x-> polegar, y-> dedo indicador, z-> dedo médio), Z aponta para você.
3) Não seria errado, mas seria um desvio dos padrões. Existem três problemas em que posso pensar no momento: (a) Digamos que um dia você queira usar uma biblioteca de física que use o quadro de coordenadas padrão. Se você não seguiu o padrão, agora precisa pensar na transformação que o leva do seu mundo para o mundo da física. Pode ser irritante quando você deseja corrigir um erro. (b) Quando você deseja compartilhar código com alguém ou trazer alguém para ajudar no desenvolvimento, eles precisam se acostumar com a sua convenção. (c) Ao usar modelos 3D padrão, você sempre deve ter uma transformação acima deles para impedir que olhem de lado.
Agora, para adicionar à pergunta 2, é muito útil pensar em X, Y e Z como não apenas três letras, mas também como certas, para cima e para trás. Todos os personagens da cena têm um sistema de coordenadas local anexado a eles e, em seus quadros de coordenadas locais, X está sempre certo, Y está ativo e Z está invertido. Depois de ter isso, agora você pode entender os vetores impressos ou escrever seus algoritmos de uma maneira que faça sentido. Digamos que você tenha dois caracteres A e B e queira fazer algo se um deles estiver voltado para o outro. Você pode simplesmente encontrar a localização de B no quadro de coordenadas de A (Ta ^ -1 * p_b), olhar para o vetor obtido e ver se Z (para trás) é negativo e X (à direita) e Y (para cima) são pequenos, porque esse vetor informa quanto, para trás e para a direita, B está em relação a A.
fonte