¿Sombreado suave con nodos?
Actualmente estoy tratando de construir un sombreador de estilo Anime en Blender y editar las normales para obtener un mejor sombreado. Pero también quiero un efecto Fresnel que no se vea afectado por las normales editadas. Sé que existe esta verdadera salida normal en el nodo de geometría, pero me da solo las normales sombreadas planas. Entonces, ¿alguien sabe una manera de suavizar las normales con nodos vectoriales o algo más que me proporcione normales sombreadas suaves para el efecto Fresnel?
Respuestas
Espero que haya una mejor manera de hacer esto, pero aquí hay una solución que utilicé:
Copié normales 'normales' a una capa ultravioleta a través de un script. Dos capas para ser exactos. Si bien podría haberlos compactado en una sola capa, habría aumentado la complejidad del sombreador
import bpy
ob = bpy.context.object
for loop in ob.data.loops :
normal = ob.data.vertices[loop.vertex_index].normal
ob.data.uv_layers["XY"].data[loop.index].uv = (normal.x, normal.y)
ob.data.uv_layers["ZW"].data[loop.index].uv = (normal.z, 0)
Luego, en los sombreadores, conecto el valor combinado en la entrada de normales de Fresnel.
Aquí hay resultados de muestra de izquierda a derecha:
- Mono predeterminado con fresnel predeterminado
- Con
normals edity normales personalizados conectados a Fresnel - Con
normals edity fresnel predeterminado
Los artefactos (áreas blancas nítidas) se deben a una pésima edición normal, que apuesto a que no tendrá en su modelo. De lo contrario, las normales transferidas de los rayos UV parecen ser casi idénticas a las normales suavizadas originales
EDITAR: Como señaló Heinrich Tester, lo normal de UV también debe transformarse de objeto a espacio mundial antes de su uso