He estado varias semanas muy liado con muchas cosas y ahora toca ponerse a todo gas para terminar el proyecto a tiempo, por suerte no falta mucho. La semana pasada estuve hablando con mi director de proyecto para contarle lo que tenía y me faltaba y estuvimos hablando de como hacer que el escenario sea invisible pero que sirva como máscara de recorte para ocultar a los enemigos que hay tras él. En principio esto se hace con la funcionalidad “stencil” de OpenGL, que al parecer no está soportada por el motor gráfico que estoy utilizando. Menudo fastidio.
Pero no perdamos las esperanzas… si recordais cuando hablaba de las capas que componían cada frame, había una de fondo con la imagen de la cámara del teléfono, sobre la que se dibujaba la capa de OpenGL, que tenía un color de borrado con un valor alpha totalmente transparente. De ahí ha venido dos posibles ideas… la primera prueba ha sido hacer totalmente transparente el objeto que contiene el escenario, aunque no ha funcionado, pero si que añadía algo de transparencia a los objetos que había detrás… interesante. Viendo que un objeto transparente estaba provocando transparencias sobre objetos traseros, parecía claro que era posible utilizar eso para hacer esa especie de máscara de recorte que estaba buscando.
¿La solución? Si un color de borrado para el fondo con un valor alpha totalmente transparente permite ver la imagen de la cámara de la capa inferior de la aplicación, era lógico pensar que pintar un objeto con ese mismo color permitiría conseguir el efecto que estaba buscando. Creamos una textura de tamaño mínimo con valor alpha a 0, la aplicamos al escenario y arrancamos la aplicación… ¡Eureka! El escenario se comporta como una máscara de recorte en la que no se muestran los objetos 3D tras el mismo, pero si que se muestra la imagen que está capturando la cámara del dispositivo.
Ahora el escenario es invisible, de forma que será la propia imagen de la cámara del teléfono la que forme el escenario, con enemigos que aparecerán ocultos tras los edificios que capture la cámara, asomándose tras las esquinas… eso sí, siempre dependiendo de la precisión que de el GPS.
Etiquetas: android, jpct, realidad aumentada