(+34) 958084455 informacion[arroba]academiaandroid.com
OpenGL2 Img11

Proyecto Android con OpenGL: iluminación e interacción con objetos 3D

Post Series: Gráficos 2D-3D en Android: OpenGL (II)

En este tutorial vamos a desarrollar un proyecto Android, donde a partir de objetos 3D representados, se establecerán los parámetros de iluminación, además de implementar eventos de interacción con el usuario cómo la pantalla táctil o el acelerómetro. Para este ejemplo, sólo se hará hincapié en las modificaciones que hagamos respecto al primer caso práctico que publicamos sobre OpenGL.

Puedes descargar todo el código del proyecto, al final de este tutorial

En la Aplicación Android que vamos a crear, se definirá un menú principal, en el que podremos seleccionar la opción “Interacción usuario con objetos 3D”, mostrando posteriormente los objetos cubo y pirámide en la misma vista.

Interfaz de la App Android ejemplo

Elementos necesarios:

  • Una clase principal llamada MainActivity, que heredará de la clase base Activity, donde se definen los elementos enlazados con sus recursos a nivel de layout, además desde esta Activity se realiza la llamada a una nueva View, encargada de construir los objetos gráficos (sólo nos centraremos en la opción “Interacción usuario con objetos 3D” del componente RadioButton definido):
  • Una clase llamada GLRender, que implementará la interfaz Renderer, encargada de construir la vista dónde se representará el objeto, además de definir los parámetros de iluminación y posición de las luces.
  • Una clase llamada Cubo3D y Piramide3D, dónde se definen los parámetros del objeto 3D que será invocado desde la clase GLRender.
  • Una clase llamada HiloEventosUsuario, encargada de controlar las acciones que realice el usuario al tocar la pantalla del dispositivo. Esta clase hereda de la clase base GLSurfaceView.

Objetos 3D renderizados en la Aplicación Android

En la imagen vemos  que como se muestran los objetos 3D en la vista. El usuario podrá manejar la rotación de ambos, mediante el sensor de la pantalla táctil del dispositivo, pudiendo observar los cambios de iluminación de las caras de los objetos.

FormasPrimitivas/src/com.academiaandroid.formasprimitivas/HiloEventosUsuario.java

Vamos a ver paso a paso el desarrollo de este proyecto:

Se crea una nueva clase llamada HiloEventosUsuario, encargada de controlar las acciones que realice el usuario al tocar la pantalla del dispositivo. Esta clase hereda de la clase base GLSurfaceView, y su principal tarea es implementar el evento onTouchEvent(final MotionEvent event) , que cazará las pulsaciones en la pantalla del usuario, invocando el método girarObjetos() de la clase GLRender:

 

FormasPrimitivas/src/com.academiaandroid.formasprimitivas/GLRender.java

En primer lugar definimos e inicializamos las variables, a nivel de clase, necesarias para establecer la iluminación en la escena representada. También se definen tres variables de tipo float, que almacenarán las coordenadas de la posición de la pantalla que seleccione el usuario:


Contenido disponible para los usuarios Premium. ¡Únete a nosotros!