Mostrando entradas con la etiqueta tips. Mostrar todas las entradas
Mostrando entradas con la etiqueta tips. Mostrar todas las entradas

jueves, 2 de noviembre de 2017

TIP#4. Corrección de color con Unreal.

El pasado lunes os hablamos de la corrección de color en Unreal. Pero, ¿como se hace? Pues bien, primero haremos una captura (o varias) de nuestro juego en directamente desde el engine. Después necesitaremos ir a la página de documentación oficial de Unreal y copiar esta imagen del rango de colores:

Rango de colores sin retocar de Unreal.
Nos iremos a nuestro editor de imágenes de confianza (Gimp, Photoshop, etc) y pondremos nuestra captura del juego y la imagen del rango de colores. Haremos una copia del rango de colores y la ocultaremos, y la que hemos dejado visible la uniremos con la captura de la imagen del juego. Así todas las correcciones de color que hagamos a la captura del juego, se la estaremos haciendo también al rango de colores, que es el que nos llevaremos a Unreal después.

Captura sin modificar con el rango de colores inicial.


Luego, haremos las correcciones que creamos convenientes para darle el color que queramos al juego. Modificaremos los balances, los tonos, la saturación o lo que sea para conseguir el color que queremos que tiña el juego. Os aconsejamos que esta corrección no la hagáis solo con una captura, podríais estar obviando otros elementos de vuestro juego que igual no os gusta como quedan con esas correcciones de color que habéis hecho pensando que en otros elementos del juego sí quedaban bien.

Captura modificada con el rango de colores modificado.


Una vez tenemos la corrección que queremos, necesitamos llevarnos solo la imagen del rango de colores que se ha modificado, así que seleccionando la copia que hemos ocultado del rango de colores pero copiando la que hemos modificado, nos iremos a un nuevo archivo y pegaremos ese rango de colores cambiado y lo guardaremos en formato TGA.

Este archivo lo cargaremos en Unreal. Le daremos doble clic para abrirlo, y cambiaremos a ColorLookupTable el parámetro Texture Group del Level of Detail. Lo que suavizará todos los colores haciendo transiciones de uno a otro.

Modificamos la imagen de la corrección de color que acabamos de importar a Unreal.


Cerramos y dentro del World Outliner, en PostProcessVolume, buscaremos en el buscador el parámetro Unbound para asegurarnos que está activado.

Aseguramos que el parámetro Unbound está activado.


Finalmente, arrastraremos nuestro nuevo rango de colores al parámetro (lo buscamos de igual forma) Color Grading. En cuanto lo pongamos, veremos la diferencia.

Arrastramos la imagen del rango de colores que hemos creado en el parámetro de Color Grading.


A partir de aquí, se trata de hacer pruebas hasta que consigáis el efecto deseado. Si tenéis cualquier duda, no os lo penséis y ¡comentad!.

jueves, 26 de enero de 2017

TIP#3. Append, link e instancias en Blender.

Hoy vamos con un tip muy rápido y sencillo, pero si no lo conoces puedes dar rodeos fácilmente evitables.

Cuando estás trabajando para encontrar un pipeline cómodo y lo más eficaz posible, hay que mirar diferentes maneras de hacer las cosas. Con nuestro proyecto actual estamos intentando construir una ciudad bastante grande, donde los objetos no pueden ser únicos, los vamos a aprovechar por toda la urbe, intentando que se note lo menos posible.

Imaginemos que tenemos una escena donde montar toda la ciudad y luego tenemos otra escena con los distintos tipos de edificios que hemos hecho. El motivo de tener las cosas en archivos distintos es para que no ocupe demasiado, a parte de para mantener un orden.

El caso es que necesitamos pasar los edificios al archivo de la ciudad e ir copiándolos. Para ello es necesario estudiar la mejor manera de importar los objetos y en blender existen dos formas de hacerlo:
  • Append: seleccionaremos los objetos que queremos traer a la escena de la ciudad y los importará automáticamente. Podemos traer cuantos objetos queramos y los podremos modificar a nuestro antojo. Eso sí, si queremos hacer una corrección a uno de los objetos, tendremos que retocarlos todos.
  • Link: funciona exactamente igual que el anterior. La diferencia con el método anterior es que no podremos modificarlos desde la escena donde lo hemos importado (esto lo detallamos mejor enseguida). Para ello, deberemos ir al archivo donde se encontraba el objeto original y cambiar lo que queramos. Lo bueno es que cuando volvamos a entrar a la escena de la ciudad, se habrán hecho las modificaciones también.
Por tanto, la que nos deja más libres es el primer método. Simplemente importas y ya puedes duplicar, modificar, etc. Pero si te has dejado algo y quieres modificar el objeto, deberás modificarlo y volver a importarlo. Y en caso de haber copiado muchas veces ese objeto por la escena, deberás volverlos a copiar y ponerlos en su sitio.

El segundo método es ideal si quieres traer objetos que pesen mucho y que pueden sufrir cambios con el tiempo. Lo malo es que está más restringido si quieres duplicarlos. Al final funciona como un proxy. Una vez importado, solo tendrás ese elemento enlazado, con lo cuál, el objeto importado no se podrá mover, así que tendrás que crearlos en la posición donde te interese. Pero, hay una solución.

Para poder mover o modificar un objeto que hemos enlazado, seleccionaremos el objeto (veremos como el objeto se ilumina de color azul y no el naranja habitual) y le daremos a la L. Saldrá un desplegable y seleccionaremos "Selected objects". De inmediato, el azul cambiará a naranja, aunque seguiremos viendo el puntito azul, pero ya podremos alterar el objeto.

Podremos moverlo, rotarlo y escalarlo, pero no podremos poner el "Edit Mode". Si modificamos el objeto original, se verán los cambios aplicados en la escena donde lo hemos importado. También podremos duplicar el objeto, pero esas copias nunca estarán enlazadas con el objeto original, así que si hacemos cambios, las copias no cambiarán. Eso si, las copias sí las podremos modificar en "Edit Mode".

Instancias

Una instancia es una copia de un objeto, y como tal, solo cuenta una vez. Podremos crear tantas instancias como queramos de un objeto y repartirlo por todo el escenario. Así, siguiendo el ejemplo de los edificios, traeremos el que queramos a nuestra escena (ya sea con un append o con un link) y crearemos copias de tipo instancia (ALT + D) tantas veces como queramos, que blender solo lo contará una sola vez y si además se modifica, se modificará en todas las copias.

Como veis, todo tiene sus pros y contras, y deberemos trabajar con distintos métodos según su finalidad y lo que nos pueda venir mejor.

Esperamos que os pueda resultar útil esta información.

jueves, 12 de enero de 2017

TIP#2. Solución al problema de los ejes entre Blender y Unity.

Seguimos con nuestra nueva sección de tips con un problema bastante molesto que nos hemos encontrado al trabajar con el software que usamos.

Para los más despistados, blender es un programa de código libre que sirve para modelar objetos 3D y animarlos (eso a grandes rasgos, porqué hace mucho más :D).

Una de las ventajas realmente buenas que tiene unity es que puedes importar archivos creados en blender de manera fácil, simplemente arrastrando el archivo .blend dentro de la carpeta del proyecto de unity.

Pero uno de los primeros problemas que uno se encuentra cuando hace esto, es que los ejes de coordenadas XYZ que vienen por defecto de blender no coinciden con los ejes de unity. Para concretar, el eje vertical en blender es el Z mientras que en unity es el Y; y el eje Y en blender es el -Z en unity. Un lío vamos. Esto conlleva que una vez importado el objeto dentro de unity, los ejes locales del objeto no coinciden con los ejes globales de la escena.

En la siguiente imagen se muestra el problema. Es un objeto que se ha importado tal cual a unity. Este objeto tiene varios subobjetos (el bloque de casas, la acera, etc.). Si seleccionamos todo el objeto en si (el objeto padre) los ejes coinciden con los de unity, pero si en cambio seleccionamos uno de los subobjetos, vemos que no, tal y como se muestra en la imagen.
Imagen de los ejes del objeto sin aplicar ninguna corrección.

Aunque pueda parecer un problema insignificante para un objeto de este tipo, realmente puede traer muchos dolores de cabeza para otro tipo de objetos. Pongamos que en lugar de unas casas queremos importar un coche, el cual luego moveremos por programación a partir de un script. Si los ejes no coinciden con los de unity, intentar mover el coche aplicando los vectores de físicas será un auténtico calvario.

Unity por defecto no tiene una solución a este problema, así que cada uno se tiene que buscar la vida para encontrar la manera de solventarlo. En nuestro caso, después de buscar bastante y probar varias cosas, dimos con un script para unity que corrige este error automáticamente.

El autor del código tiene como apodo Edy y ésta es la página en cuestión dónde comenta este problema.

Además enlaza a la página dónde se puede descargar el script y dónde también hay las instrucciones de uso, aunque es bastante sencillo de utilizar.

En nuestro caso, para facilitaros un poco el trabajo, os comentaremos por pasos como debéis aplicar el script y cómo tenéis que configurar unity para que funcione automáticamente. Así que vamos a ello.
  1. Ir a este enlace y hacer clic al botón verde de arriba a la derecha para descargar en formato ZIP el archivo.
  2. Dentro del archivo descargado veremos que hay una carpeta llamada Editor. Debemos copiar esta carpeta a la raíz de nuestro proyecto de unity.
  3. Finalmente, debemos editar el nombre de la carpeta de nuestro proyecto donde importaremos los archivos .blend y añadir al nombre la palabra [importer]. De este modo, todos los objetos que arrastremos dentro de esta carpeta serán tratados y corregidos automáticamente por el script.
Para que veáis como queda la carpeta del proyecto después de estas modificaciones os mostramos una captura de pantalla del resultado.
Árbol de carpetas de nuestro proyecto en Unity.
Aunque esto ya va a gustos de cada uno, normalmente dentro de la carpeta Assets se crea una nueva carpeta Prefabs dónde se incluye todos los prefabs del proyecto, los cuáles son los objetos 3D importados de blender. En este caso hemos renombrado esta carpeta a Prefabs [importer] para que cada vez que arrastramos un archivo .blend dentro de esta carpeta, aplique la corrección de ejes automáticamente.

Ahora sí, una vez importado nuestro objeto de ejemplo, si comprobamos los ejes del mismo subobjeto de la primera captura vemos que estos coinciden con los de unity, tal y como se muestra en la siguiente imagen.
Imagen de los ejes del objeto luego de aplicar la corrección del script.
Eso es todo! Solo cabe darle las gracias a Edy por su gran trabajo haciendo este código y sobretodo, por compartirlo con la comunidad de unity. Cosas como estas se valoran mucho.

Esperamos que os haya sido útil :).

jueves, 22 de diciembre de 2016

TIP#1. Atlas de color.

Inauguramos sección de nuestros tips  para hablar un poquito de blender. Así, nuestro primer tip de la sección será para comentar maneras de texturizar.

Hasta ahora lo que hemos ido haciendo para texturizar (para Torii, por ejemplo) era crear el modelo en 3D, sacar su UV y "pintarla" desde el propio blender o desde cualquier programa editor de imágenes.

Otra manera de conseguir lo mismo, "colorear" un modelo, es con un atlas de color. Que básicamente se trata de poner en una sola imagen todos los colores que necesitemos y aplicar esa textura al modelo. La única diferencia será que cuando creemos la UV, posicionaremos cada parte del modelo en el color que nos interese.

Como veréis, es el mismo proceso pero al revés. Con el primer método, hacemos la UV, posicionamos las partes como mejor creamos para texturizar correctamente y "coloreamos". Con el atlas de color, hacemos primero la textura que creamos y al hacer la UV posicionamos las partes del modelo en el color que necesitemos.

Por ejemplo, si tenemos como modelo un coche, crearemos su UV y pondremos el chasis en el rojo, las ventanillas en el azul claro, las gomas de las ruedas en el negro, etc.

Este método es especialmente útil cuando creemos que podemos aprovechar una misma textura para varios modelos.

Además, se puede crear un atlas de color con texturas, de manera que podemos tener una única textura con imágenes y no colores planos. A continuación os mostramos una imagen para todos conocida de Minecraft que explica lo que comentamos:
Textura de minecraft.
Textura de Minecraft.
Con este proceso conseguimos evitarnos hacer una textura por modelo, ahorrando espacio y tiempo. Además, podemos crear nuevas texturas mucho más fácilmente y aplicarlas solo arrastrando la nueva imagen al modelo.