Reflexión planar en el BGE

Después de algunas peticiones acerca de como hacer objetos planares reflejántes en el motor de juegos de blender, decidí hacer un pequeño post acerca del tema.

Hasta donde tengo conocimiento, existen tres técnicas para conseguir el efecto reflejánte en superficies planas en el motor de juegos de blender, las cuales se mencionan a continuación.

  • Shader based (fragment viewport coordinates – buen GPU)
  • Render to texture (with texture.ImageMirror() )
  • Duplicated and mirrored geometry

Demos un vistazo a cada metodo

Los reflejos basados en “shaders” son aquellos utilizados por los motores de juegos modernos. Martinsh (un conocido usuario de blender y desarrollador) desarrolló un demo en el BGE en el cual usa “fragment viewport coordinates” en lugar de reflejos basados en UV’s, el cual, de acuerdo a la descripcion la superficie reflejante puede ser ilimitada utilizando este metodo, pero hay que tomar en cuenta que es necesario contar con una tarjeta de video decente que soporte este tipo de procesos.

Aqui esta la liga al foro de Blenderartists donde puedes ver los archivos demo y varios videos con diferentes configuraciones.

 


El modulo de “Render a textura” nos permite manipular texturas durante la ejecución de un juego.

Varios tipos de texturas son posibles de usar: archivos de video, imagenes, captura de video, memoria buffer, render de una camara o una mezcla de estos.

Los videos y las imagenes pueden ser cargadas de internet usando URL’s en lugar de un nombre de archivo.

Adicionalmente, puedes aplicar filtros en las imagenes antes de enviarlas al GPU, permitiendo efectos como: pantalla azul, banda de colores, gris y normal map.

El modulo bge.texture usa FFmpeg para cargar imagenes y videos. Todos los formatos y codecs que soporte FFmpeg estan disponibles para este modulo, incluyendo pero no limitado a:

  •  AVI
  •  Ogg
  •  Xvid
  •  Theora
  •  dv1394 camera
  •  video4linux capture card (this includes many webcams)
  •  videoForWindows capture card (this includes many webcams)
  •  JPG

(fuente y mas informacion – idioma ingles)

Y observa este video y lee la descripción en la pagina de youtube (un agradecimiento a maykon por el video)

El usuario de Blenderartist Monster ha desarrollado un módulo bastante amigable que nos permite usar el modulo de video textura, descarga el archivo de ejemplo y dale un vistazo.

Mas información respecto al modulo de textura aquí:

Video Texture ImageMirror: flip

Render to Texture


 Y el ultimo ejemplo es mediante hacer una copia de los objetos del escenario y aplicar un “mirror” (ya sea con un modificador o bien en modo edición, presionando Control+M y presionar la tecla Z) tan simple como eso. Quizas no es una de las mejores formas de conseguir el efecto de reflejado pero al menos se consigue un resultado decente, y por algunos juegos que he visto para plataformas móviles se puede decir que es bastante usado por las restricciones que se tienen en esas plataformas.

Como nota, no olviden desactivar colisiones a los objetos duplicados para evitar calculos innecesarios.

[cml_media_alt id='1970']fake_reflections[/cml_media_alt]

Descarga el archivo de ejemplo aqui.

Espero que hayan encontrado esto útil, gracias!

Leave a Reply