Unity SkyBox

De MediaWiki
Ir a la navegación Ir a la búsqueda

Introducción

  • Un SkyBox es una textura panorámica que se dibuja detrás de todos los objetos de la escena y representa el cielo que rodea al juego.
Internamente está implementado haciendo uso de un Cubo formado por 6 texturas las cuales se encuentran 'conectadas' unas con otras formando el 'cielo' y el 'suelo'.
Representan los 6 direcciones visibles (arriba, abajo, derecha, izquierda, adelante y atrás)


  • Unity incorpora un SkyBox por defecto que es el que aparece cuando ejecutamos un juego por defecto:
Unity3d skybox 3.jpg


  • En cualquier momento podemos 'eliminar' el skybox si accedemos a las propiedades de la cámara y cambiamos su propiedad Clear Flags:
Este parámetro indica qué queremos que dibuje la cámara cuando limpie toda la pantalla.
Recordar que lo que se hace para realizar una animación es borrar continuamente (en cada frame) la pantalla y se vuelve a dibujar toda las escena.
Unity3d skybox 4.jpg
Los valores que normalmente se utilizan son:
  • SkyBox: Para dibujar una textura que tenga el efecto de un cielo.
  • Solid Color: Se dibujo un único color de fondo. En el caso de escoger esta opción tendremos que elegir el color que queremos que se dibuje.
  • Depth Only: Deje dibujado lo que se haya dibujado en el frame anterior.
  • Don´t Clear: No borra el contenido de la pantalla.


En la siguiente imagen se puede comprobar como al mover el cubo desde la ventana de Game, este deja un rastro ya que la cámara no está limpiando el buffer donde dibuja la escena (tiene puesta la opción Depth Only):
Unity3d skybox 5.jpg





Creando nuestro SkyBox

  • La forma más sencilla es descargar desde el propio Asset Store de Unity ejemplos de SkyBox ya realizados.
Si no encontramos ninguno que nos interese, podemos buscar por Google textures sky 360 download, por ejemplo.
Entre los resultados, aparece este: https://www.sketchuptexture.com/2013/02/panoramic-ski-360.html (por ejemplo)
Si descargamos el rar y lo descomprimimos tendremos imágenes jpg con fondos de 360º.
Unity3d skybox 6.jpg


  • El proceso sería el siguiente:




Descargando SkyBox desde el Asset Store

  • Si buscamos en el asset store por Sky Textures encontraremos múltiples texturas para ser empleadas como skybox.



Trabajando con imágenes HDR

De forma simplificado podemos indicar que este tipo de imágenes dan un mayor realismo a la escena.
En un renderizado 'normal', Unity asocia a cada pixel un valor entre 0..1 indicando el grado de intensidad del pixel, siendo 0 sin intensidad y 1 intensidad máxima.
Con las imágenes HDR, el grado de intensidad no está limitado a este rango, permitiendo renderizar de forma más realista como el ojo humano interpreta las condiciones de luz sobre los objetos en situaciones de oscuridad


  • Cuando importamos del Assets Store las texturas/materiales que conformaban el cielo también seleccionamos los archivos HDR:
Unity3d skybox 23.jpg
Dichos archivos son utilizados por el material que va a conformar el skybox:
Unity3d skybox 24.jpg


  • Fijarse que podríamos crear nuestro propio SkyBox a partir de los que tenemos.
Creamos un nuevo material de tipo Skybox/6 sides y arrastramos a cada cuadro la imagen correspondiente (Up = top y Down = Bottom)
Unity3d skybox 25.jpg
Podemos ver en la imagen como hemos creado un nuevo material de nombre SkyBoxPropio y del tipo Skybox/6 sides.
Para arrastrar las imágenes hdr a cada uno de los lados, he puesto el candado a las propiedades del material. De esta forma puedo ir a la carpeta de las imágenes HDR y seleccionar cualquiera de ellas para arrastrarlas sin que me cambie las propiedades de la ventana Inspector.
El efecto es el que se ve en la ventana Scene.










-- Ángel D. Fernández González -- (2018).