¿Se distorsiona el color normal renderizado?
Estoy tratando de renderizar la salida Normal del nodo de geometría y luego traerla de vuelta como una textura proyectada en una ventana. Pero cuando lo hago, la imagen es muy diferente de la salida del socket original:
¿Por qué mi imagen es diferente, cuando literalmente es solo una representación de lo mismo? Soy consciente de que la gestión del color distorsiona el renderizado. He intentado renderizar con diferentes dispositivos de visualización, transformaciones de vista, tanto .png como .exr, diferentes espacios de color en el nodo de textura, deshabilitando Guardar como renderizado, etc.
Según tengo entendido, estar en Dispositivo de visualización: sRGB, transformación de vista estándar y luego configurar el nodo de textura en Datos lineales o sin color debería funcionar, pero no es así. ¿Qué más podría estar pasando?
Respuestas
Creo que la causa principal de las diferencias es la forma en que se codifican los datos cuando se procesaron las normales inicialmente.
Si lo guarda en jpg o png, los colores se codifican como números enteros. Eso conduce a algunos valores redondeados que no se pueden convertir a los valores normales iniciales exactos.
Entonces puede guardar este archivo renderizado con formato OpenExr para mantener las cosas como valores flotantes:
(El códec puede ser "ninguno" o "zip suelto" para mayor precisión, si es necesario ... pruebe los códecs según lo que desee, tamaño de archivo frente a precisión).
El resultado puede ser este (aunque no perfecto):
En lugar de esto usando png:
Además, mantenga la textura de la imagen como "sin color" o "sin procesar" y, como dijo en la pregunta, establezca "sin procesar" y "sin color" en la parte de gestión del color.
Editar: otra cosa que altera el renderizado es el anti aliasing. Si usa Ciclos, configure el filtro de píxeles en el cuadro en la sección de película. Renderizado usando la textura de la imagen proyectada en la ventana debería dar un mejor resultado.