2011-09-20 8 views
5

Tengo dificultades para comprender la vista en perspectiva de OpenGL. He leído toneladas de información, sin embargo, no me ayudó a tratar de lograr lo que busco. Lo cual es asegurarse de que mi escena en 3D esté llenando toda la pantalla en cada dispositivo Android.Límites de las vistas en cualquier resolución con OpenGL ES

Para probar esto, dibujaré un quad en un espacio de 3d que al final debería tocar cada esquina, llenando toda la pantalla del dispositivo. Podría usar este quad o sus coordenadas para especificar un cuadro delimitador a cierta distancia Z que podría usar para poner mi geometría y asegurarme de que llenan mi pantalla. Cuando la pantalla cambia de tamaño, o debo ejecutarla en otra resolución de pantalla, volvería a calcular este cuadro delimitador y la geometría. No estoy hablando de geometría estática, pero por ejemplo digo que quiero llenar la pantalla con bolas y no importa qué tan grande o cuántas bolas haya, lo único importante es que la pantalla está llena y no hay redundancia bolas fuera del tronco visible.

enter image description here

  • Por lo que yo entiendo cuando se especifica el puerto de vista en realidad se enlaza valores de píxeles a los límites de la pirámide truncada. Sé que puedes establecer una vista ortográfica de manera que los píxeles de tu ventana coincidan con la posición de la geometría 3d, pero no estoy seguro de cómo funciona en la vista en perspectiva.
  • Aquí supongo que el ancho y el alto de la ventana gráfica se asignarán a la nearZ. Por lo tanto, cuando una bola está en Z = 1f tiene su tamaño original
  • Cuando mueva la bola hacia la pantalla en dirección a farZ, la bola se reducirá para que la perspectiva funcione. Entonces, una bola en Z = 51f, por ejemplo, parecería más pequeña en mi pantalla y necesitaría más bolas para llenar toda la pantalla.
  • Ahora para hacerlo, estoy buscando los límites morados
  • En realidad necesito estos límites para llenar toda la pantalla en diferentes tamaños de tronco (ancho x alto) mientras que el ángulo del tronco y la distancia Z para las bolas es siempre el mismo
  • Supongo que podría usar trig para calcular estos límites morados (ver nota triangular azul)
  • ¿Estoy marcando correctamente el ángulo del frustum, ya que es el ángulo vertical del tronco?
  • ¿Podría alguien explicar los valores 1f y -1f verdes ya que parece que he leído algo al respecto? Parece un escalar que se usa para cambiar el tamaño de la geometría dentro del tronco.

De hecho, quiero ser capaz de programar la geometría de la posición frente a los bordes de la ventana gráfica dentro de un espacio 3D en cualquier resolución/ventana para cualquier dispositivo Android arbitrario.

Nota: Tengo un fondo de flash que usa un escenario (área visual) con un ancho x altura conocida a cualquier resolución que hace que sea fácil posicionar/escalar activos usando mediciones absolutas o medidas porcentuales. Supongo que estoy tratando de descubrir cómo se aplica este sistema a la vista en perspectiva de OpenGL.

Respuesta

Cuestiones relacionadas