Saltar al contenido

Elegir material: el árbol de decisión y la tabla de coste

Cinco preguntas en orden que resuelven qué material usar, con el coste relativo de cada uno y los tres casos en los que la respuesta obvia es la equivocada.

El árbol

La primera pregunta descarta más de lo que parece. Interfaz dentro de la escena, geometría de depuración, iluminación horneada en la textura, esquemas y diagramas: todo eso no necesita luces, y usar un material que las consulte es pagar por nada.

La tercera pregunta, la de “realismo físico”, tiene una trampa. No pregunta si tu escena debe parecer real, pregunta si quieres que el material se comporte correctamente bajo cualquier iluminación. Un estilo ilustrado puede necesitar perfectamente un MeshStandardMaterial con colores planos, porque lo que quieres del PBR no es el fotorrealismo sino que la superficie reaccione de forma coherente cuando el usuario mueva la cámara.

La última pregunta, la de las dos capas, es la más operativa de todas. Pintura más barniz, jabón más aire, fibra más pelusa, líquido más recipiente, metal más óxido: si tu material se describe con dos superficies apiladas, es un MeshPhysicalMaterial. Si se describe con una, MeshStandardMaterial te basta y te ahorras el coste.

El coste, en órdenes de magnitud

Los números exactos dependen de la GPU, del número de luces y de cuántas texturas tenga el material, pero la proporción se mantiene notablemente estable entre dispositivos:

material coste relativo qué lo domina
MeshBasicMaterial 1 una lectura de textura
MeshMatcapMaterial 1 una lectura de textura
MeshLambertMaterial 2 un producto escalar por luz
MeshToonMaterial 2 lo anterior más una consulta al gradiente
MeshPhongMaterial 3 un lóbulo especular por luz
MeshStandardMaterial 6 BRDF de microfacetas más entorno prefiltrado
MeshPhysicalMaterial sin capas 6 igual que Standard
con clearcoat 8 un lóbulo y una normal más
con transmission 15 o más obliga a redibujar la escena a un render target

La fila que importa es la última. transmission no es una capa más: cuando hay al menos un material con transmisión en la escena, el renderer tiene que dibujar todo lo demás a una textura auxiliar para que el objeto transmisivo pueda muestrear lo que hay detrás de él. Estás dibujando la escena dos veces. Con un objeto de cristal en primer plano puede merecer la pena; con quince botellas en una estantería, casi nunca.

Tres casos donde el material simple gana

Las etiquetas y los marcadores. Cualquier cosa que sea información sobre la escena y no parte de la escena debe ser MeshBasicMaterial. Un marcador con MeshStandardMaterial se oscurece cuando queda en sombra, que es justo lo que no quieres de un marcador.

El fondo y el atrezo lejano. Un objeto que ocupa treinta píxeles en pantalla no muestra ninguna diferencia entre Lambert y Standard, y si tienes cien de esos, la diferencia de coste sí se nota. Es la aplicación natural del nivel de detalle: geometría más simple y material más simple a partir de cierta distancia.

El visor de modelos. Un matcap bien elegido produce un resultado más legible que un PBR con un entorno mediocre, cuesta una fracción, y no depende de que hayas cargado un HDRI de varios megabytes. Es la razón por la que los visores profesionales de modelos lo ofrecen como modo por defecto.

Con la elección hecha, lo que queda es parametrizar bien el material que has elegido. Si has llegado a MeshStandardMaterial o a MeshPhysicalMaterial, esa parametrización no es cuestión de mover deslizadores hasta que quede bonito: hay un modelo físico detrás que dice qué valores son posibles y cuáles no, y es lo que viene a continuación.