Exportar capas desde 3ds Max a Photoshop con Maxscript e Illustrate
El comportamiento que describes ocurre porque el script está diseñado para un flujo de trabajo basado en el Scanline Renderer, el cual permite un control directo sobre el material Matte/Shadow y la visibilidad de los objetos a través de la pila de deshacer. Este sistema se rompe cuando cambias a un motor como Illustrate!, ya que dicho plugin no procesa las exclusiones de objeto del mismo modo. En lugar de renderizar solo la selección activa, el motor vectorial evalúa la escena completa, generando así la misma imagen en cada pasada del bucle.
El modo correcto de abordar esto es separar la lógica del script en dos niveles: uno para el manejo de la selección de objetos y otro para la ejecución del render. El primero puede mantenerse igual, pero el segundo no debe depender de la asignación temporal de materiales o de la grabación de deshacer. En su lugar, puedes usar la propiedad object.visibility para controlar qué partes de la escena son visibles en cada iteración. Por ejemplo, antes de cada render, establece la visibilidad de todos los objetos a 0, y luego activa solo el que necesites renderizar con obj.visibility = 1. Illustrate! respetará esa propiedad y solo generará líneas del objeto visible.
Otro punto importante es que Illustrate! no trabaja bien con el formato Targa si el objetivo es exportar múltiples capas para Photoshop. Es preferible que el script renderice directamente a formato EPS o AI, los cuales preservan el trazo vectorial y pueden abrirse como capas en Photoshop o Illustrator sin pérdida. Si deseas mantenerlo en raster, cambia la exportación a TIFF de 32 bits, asegurándote de usar nombres únicos en cada iteración del bucle para evitar sobreescrituras.
En cuanto a la repetición de la misma imagen, la causa exacta es que el comando render scene en tu script se ejecuta antes de que el motor haya procesado el cambio de visibilidad o exclusión. Puedes forzar la actualización insertando un completeRedraw() o un redrawViews() justo antes del render, lo cual obliga a que el motor reconozca el nuevo estado de la escena. Si aun así persiste, una alternativa más robusta sería usar renderers.current = Illustrate() y ejecutar el render dentro de un for loop con control directo de visibilidad y nombre de salida.
En resumen, no es un error del plugin ni del script en sí, sino una incompatibilidad en la forma en que Illustrate! gestiona los objetos activos. Modificando el control de visibilidad y forzando la actualización de la vista antes de cada render, el script podrá exportar correctamente cada capa a un archivo independiente listo para componer en Photoshop.
|Agradecer cuando alguien te ayuda es de ser agradecido|