- "Ay! Que es esta linea negra que me aparece al rededor de mi render?!"
- "Dichosa linea negra!! Oh pixeles misteriosos.. decidme de donde venis! Mostradme a vuesto lider, cobardes!"
- "Socorro! Ayudame, Mr.Premultiply!"
- "AAAAGHHHHRHHhhhhHhhHh!!!"Estas son algunas lineas que me imagino que alguno habra dicho tras presenciar, en algun momento, que un render pass (o "render layer", si usais Maya ocasionalmente) tiene una linea negra al rededor de los objetos que fueron renderizados.
Esto os puede pasar en XSI, Maya, Max o el paquete 3D que sea. Que conste que NO es un bug.
Hay una opcion que suele venir activada que a veces por la razon que sea es desactivada, o quizas nuestro programa no lo tenga activado por defecto. Se llama "
premultiply".
Odio las matematicas y no me metere en detalle, pero todo lo que habeis de saber es que "premultiply" multiplica los valores de color por una fraccion entre 0 y 1 (de los pixeles del canal alpha).
"Straight alpha" (o alpha directo, que es lo opuesto a "premultiplied alpha"), deja al color en paz, pero al recortar en un fondo inexistente (usando el alpha channel), debido al antialiasing, los bordes suavizados del canal alpha no afectan a los pixeles.
O sea, el canal alpha en ambos metodos es lo mismo. No cambia!
Lo que cambia es la forma en la que tratamos el color. Premultiply multiplica el RGB por el valor del pixel A(lpha),
lo que da bordes suaves y correctos. Sin multiplicacion los bordes del color (con nada de fondo, o no se notaria) se ven ligeramente mas expandidos y el color que el motor de render asume por defecto es negro, asi que te da una linea de 1 pixel negra al rededor de tu canal RGB de tu render.
Premultiply se puede hacer directamente desde el render, o tras haber renderizado. (O sea, no hay que re-renderizar si os paso, pero si no habeis renderizado aun, no duele comprobar para ahorrar problemas luego. Ademas, es bueno saberlo y ser consciente de su uso para el futuro.)
Os he preparado una ilustracion explicando lo que pasa si no se usa:
Y para que la gente sepa....
En XSI6, la opcion esta bajo "Render", en Render->Renderer Options. Luego en "Framebuffer" se encuentra:
(En versiones previas esta en los render settings, en "Framebuffer" tambien.)
En Maya Software & mentalray render:
En AfterEffects al importar una secuencia/video: (
Import footage)
En el FXtree del XSI, al usar el nodo "Over" para mezclar dos layers:
Y Photoshop tambien tiene algo para solucionarlo:
Espero que esto sirva de ayuda a alguien.
Dejo este hilo para referenciar si sale el tema en el futuro......
(PD: Doy permiso para usar esta ilustracion para el eventual libro, si gusta.)