Soy bastante nuevo en el desarrollo 3D de cualquier tipo, sin embargo, juegos. A medida que leo los tutoriales y ejemplos, encuentro que las coordenadas X / Y / Z parecen un poco al revés que mi primera suposición.
Me había imaginado que si una persona estuviera caminando por un campo, su posición X / Y estaría cambiando y si saltaran o subieran o bajaran una colina, entonces su posición Z estaría cambiando. Mis suposiciones parecen estar equivocadas porque caminar alrededor de un campo parece cambiar X / Z y saltar o subir / bajar una colina altera la Y.
1) ¿Son correctas mis observaciones? 3D es nuevo para mí y es posible que no esté pensando en las cosas correctamente.
2) ¿Cuál es la lógica detrás del movimiento horizontal que es X / Z y el movimiento vertical es Y?
3) ¿Sería tan malo de mi parte usar X / Y como movimiento horizontal y Z como movimiento vertical en el Marco XNA?
fuente
Respuestas:
Sus suposiciones no están equivocadas: cada motor trata estas coordenadas de manera diferente. En términos generales, X es casi siempre el eje Este-Oeste, pero si Y o Z es el eje Altitud tiende a variar. Según tengo entendido, Quake 3, Source Engine y Torque tienen Z como activo. Lo mismo ocurre con la herramienta de modelado 3DS Max. No es raro
Tiene sentido tener un sistema de coordenadas que esté ordenado aproximadamente en orden descendente de importancia, de modo que aplanar una representación en menos dimensiones sea más fácil de entender. Por ejemplo, si su juego está configurado en un mapa de altura 2D, tiene sentido que Z esté 'arriba', porque entonces sus coordenadas X e Y en el mapa mundial 3D directamente a las coordenadas X e Y en el mapa de altura. Por otro lado, si piensas principalmente en términos de renderizado (y muchos desarrolladores de motores de juego lo hacen), estás acostumbrado a que X e Y sean las coordenadas de la pantalla, por lo que agregar un tercer eje naturalmente entra o sale de la pantalla.
Use lo que sea más fácil para usted, pero tenga en cuenta que cualquier elección es arbitraria y que puede necesitar convertir entre ellos y usar múltiples sistemas de coordenadas dentro de un programa.
fuente
Imagínese mirando un trozo de papel extendido frente a usted con una tabla en él, los ejes generalmente están etiquetados como X en la parte inferior e Y en la vertical; Esto deja a Z como el eje externo a lo largo del suelo.
Es simplemente una convención, pero se usa mucho en gráficos donde pensamos que Z es la profundidad de la escena.
En otros campos como CAD, su versión sería más común.
fuente
La idea es que los ejes xey permanezcan igual, y está "arriba" en la pantalla y x está al otro lado.
z - la tercera dimensión, los proyectos vuelven a la pantalla (ignorando los problemas de la mano aquí). En 3 dimensiones esto se vuelve un poco extraño, pero para colocar cosas en el espacio de la pantalla tiene más sentido.
3) Puedes hacerlo si quieres, pero sería doloroso y torpe. Aconsejaría que se acostumbrara a los proyectos Z dentro / fuera del monitor.
fuente
1) Sí, sus observaciones son correctas.
2) El sistema de coordenadas XYZ global estándar tiene sentido cuando piensas en términos de un tirador en primera persona, cuando estás mirando a través de los ojos de un personaje en la escena con una matriz de transformación en blanco (identidad). Al igual que cuando dibujas un sistema de coordenadas en una hoja de papel, X apunta a la derecha e Y apunta hacia arriba. De acuerdo con la regla de la mano derecha (x-> pulgar, y-> dedo índice, z-> dedo medio), Z apunta hacia usted.
3) No estaría mal, pero sería una desviación de los estándares. Hay tres problemas en los que puedo pensar en este momento: (a) Digamos que un día quiere usar una biblioteca de física que use el marco de coordenadas estándar. Si no siguió el estándar, ahora tiene que pensar en la transformación que lo lleva de su mundo al mundo de la física. Puede ser molesto cuando quieres arreglar un error. (b) Cuando desee compartir código con alguien o traer a alguien para que lo ayude con el desarrollo, debe acostumbrarse a su convención. (c) Al utilizar modelos 3D estándar, siempre debe tener una transformación por encima de ellos para evitar que se vean de lado.
Ahora, para agregar a la pregunta 2, es muy útil pensar en X, Y y Z no solo como tres letras, sino como correctas, hacia arriba y hacia atrás. Cada personaje en la escena tiene un sistema de coordenadas local adjunto, y en sus marcos de coordenadas locales X siempre tiene la razón, Y está arriba y Z está atrás. Una vez que tenga esto, ahora puede dar sentido a los vectores que imprime o escribir sus algoritmos de una manera que tenga sentido. Digamos que tienes dos caracteres A y B, y quieres hacer algo si uno de ellos está frente al otro. Simplemente puede encontrar la ubicación de B en el marco de coordenadas de A (Ta ^ -1 * p_b), mirar el vector que obtiene y ver si Z (hacia atrás) es negativo y X (derecha) e Y (arriba) son pequeños, porque ese vector te dice cuánto hacia atrás, derecha y arriba es B con respecto a A.
fuente