Archivo de la etiqueta: maya

2-Sided Shader para Unity

Una de las principales carencias a la hora de importar objetos .FBX  desde 3D Studio Max, Maya, Blender, etc… a Unity, es la ausencia de un material por defecto 2-Sided.

Este material es necesario para evitar el siguiente “glitch” gráfico:

1-side falda 1-side

Ocurre el mismo efecto que con un plano. Es decir: si creamos un objeto “Plane” y le asignamos un material cualquiera (Diffuse por defecto), observamos que es visible únicamente por uno de los lados.

Para que este plano, y por lo tanto, cualquier objeto .fbx tenga material visible por ambos lados, sin necesidad de modelar un polígono cerrado por completo (como son el caso de melenas, faldas, telas, etc…), necesitamos un material que haga visible a estos planos por ambos lados.

Para ello podemos programar un shader propio.

Click derecho -> Create -> Shader.

Doble click y comenzamos a programar el shader (no confundir con “Open compiled shader”, ya que éste código es el generado por Unity tras compilar el shader).

El siguiente código muestra las propiedades para crear un shader de tipo diffuse y double-sided:

La propiedad más importante para conseguir esto es “Cull Off“. Con esto estamos desactivando una propiedad que sirve para optimizar el rendimiento a la hora de renderizar texturas y propiedades gráficas Direct3D.

Backface Culling” es una técnica de optimización que por defecto está activada para que no se rendericen las caras de los polígonos que el visor (o jugador) no este visualizando en ese momento. Por tanto, no es recomendable desactivar esta propiedad en todos los materiales, puesto que incrementaría de forma desmesurada los requisitos necesarios.

El siguiente código ShaderLab crea un material de tipo “Bumped Specular” y double-sided:

Y es el que uso para solucionar el glitch gráfico del anterior ejemplo, el cual queda así:

2-sided falda 2-side zapato.gif

Nótese que tanto la falda, como la tela roja de delante, como el interior de las botas ahora sí tienen textura, por lo que el resultado final es mucho más satisfactorio.

Modelo sobre el que aplico los shaders cedido por cortesía de Miguel Ángel López Amodeo (alias Hiwa).