XSIforum.com

LA CONDENADA LINEA NEGRA! (o 'Quien es Mr.Premultiply y por que es mi salvador')

0 Usuarios y 1 Visitante están viendo este tema.

alanf

  • *****
  • 6029
  • Pipeline Developer @ Felix & Paul Studios
- "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.)
« Última modificación: 16 Agosto 2007, 20:55:55 por Wounded Knee »

emo

Genial. ;) Gracias por el mini-mini-tuto ;)

Ojo, no siempre hay que tirar premultiplicado, de hecho yo prefiero tirar sin premultiplicar, para tener el RGB intacto, y según vea en postpro lo activo antes o después... (pero sí, es indispensable saber de dónde viene el "borde negro"). Para ver más claro lo que hace, tirad un render con y sin premult de un objecto con motion blur.

alanf

  • *****
  • 6029
  • Pipeline Developer @ Felix & Paul Studios
Ojo, no siempre hay que tirar premultiplicado, de hecho yo prefiero tirar sin premultiplicar, para tener el RGB intacto, y según vea en postpro lo activo antes o después... (pero sí, es indispensable saber de dónde viene el "borde negro").

Te doy toda la razon. El tema es saber de donde viene y por que. jeje

Bravo Alanf. Un minituto de calidad, bien detallado, fácil de entender y encima de sorpresa. Si tu participación en el libro es así estoy deseando leerlo.

Tomás

  • O_O
  • *****
  • 4621
  • Mi no entender
Gracias por el tuto alanf, si no fuese mucho pedir podias además adjuntar las imágenes al foro para que no se pierdan, que luego hay tutos que se quedan huerfanos.

saludos

Epar

Gracias Alanf, un gran aporte sin duda.

El otro día en un spot conjunto mi productora con otra y que yo coordinaba, el material que me llegó de la otra productora estaba con premultiply, le llamé al tio para que tirara de nuevo el render sin premultiply y me dijo que no sabía que era eso. Entonces flipé en colores!
Todo, absolutamente todo render que se vaya a componer, sobre todo si es para televisión (animación) debe llevar quitado el premultiply. Acordáos!

Mak_01

  • **
  • 323

La verdad es que en mi vida oí hablar del premultiply. Muchas gracias por la información.

dingdong

  • **
  • 522
  • espera, que ya llegoooo!!!!!
muchas gracias por aclarar estos temas