Tarea 1: Ejemplo básico en otro ambiente diferente a WebGL


Despues de ver distintos ejemplos en Unity o Processing, DirectX 11 se he analizado una demostración del 2014 sacada para Unity 5: Viking Village

Para quien no esté familiarizado en Unity, se descargó del Asset Store, pagina de donde salen todos los artefactos 3D para Unity y se importó a un proyecto nuevo. Al ejecutar brinda un jugador de una sensación de primer persona para recorrer toda la villa.
















Unity provee la visualización de ver los triangulos shaded, en donde se puede ver que facilmente son más de 1000 por objeto.


Para entender de manera más facil el pipeline de renderizado en Unity se creo una escena más facil donde se tuviera unos pocos objetos: un barril, un escudo y una roca.



A continuación se analiza cómo es que se renderizó, por ejemplo, el barril. El objeto 3D es un denominado  GameObject con distintos componentes para ir agregando propiedades (físicas, de interacción o scripts mismos). Por ejemplo el componente Transform define las triadas de posición, orientación y escala para cualquier Game Object.



Si se desea más detalle en Visual Studio se puede ver por medio de un debuggeo, que dicho componente alberga más propiedades como los vectores forward, up y right o si tiene padres o hijos en la jerarquía de Unity





Renderizado en Unity


En el caso de los objetos 3D se tienen dos componentes adicionales: 

Mesh filter


Es un componente que importa un objeto .FBX el cual viene con las coordenadas de cada vertice y por ende de triangulo. Es lo más cercano que se puede ver del Vertex Shader. En otras palabras, el vertex shader proviene del programa que exporto dicho FBX.

   














Mesh Renderer


El mesh renderer es el que le da los materiales, las luces y sombras respectivamente al objeto ya creado. De acuerdo a lo aprendido es lo más parecido al Fragment shader. Precisamente el Mesh Renderer utiliza el material (.mat) el cual viene definido con un denominado shader que se puede parametrizar en el inspector con atributos de color (Albedo), metalizado, suavizado, etc.



Tambien es posible programar estos shaders para despues parametrizarlos en la interfaz de Unity. Tal es el caso del shader del terreno. Estos estan escritos en HLSL tal como se informa en la documentación de Unity:





Comentarios

Entradas populares