Bueno por fin he finalizado el plugin para el renderizado de imagenes grandes en pequeños trozos. Para evitar tener que escribir todo de nuevo os hago un copy/paste del .txt que adjunto con el plugin.
El IU está en inglés, sin embargo los comentarios del código fuente están en castellano por si queréis echarle un ojo. A ver si tengo tiempo y os pongo algunas capturas de pantalla.
Espero vuestros comentarios
**
** RenderCrop 1.0 para Softimage XSI
** =================================
** Plugin que permite el render de grandes imágenes mediante la división de la imagen en pequeños trozos que serán
** renderizados por separado, evitando de este modo los típicos problemas de memoria
**
**
Necesidad del Plugin
====================
Si alguna vez has intentado renderizar una gran imagen de por ejemplo 3000x3000 pixels o más, sabrás lo complicado que resulta realizar el render sin sufrir problemas de memoria que dan al traste con el render al cabo de haber esperado unas horas.
La situación se agrava cuando tras realizar unos cuantos ajustes, lanzamos de nuevo el render, para darnos cuenta de nuevo, tras varias horas de espera, que nuestro render ha vuelto a fallar.
Este problema, rara vez ocurre al renderizar la imagen a resoluciones más pequeñas, como por ejemplo de 600 u 800 pixeles. Por tanto, la solución parece obvia: divido la imagen original de gran tamaño en pequeñas porciones o trozos a renderizar y que por tanto obtendremos sin problemas de memoria.
Desde la versión 6 de Softimage XSI existe una funcionalidad denominada "Render Manager". Dentro de él existe una opción denominada "Pass Crop Window" que nos permite renderizar una porción de la imagen y que es justo lo que necesitamos.
( Por cierto, nadie parece conocer esta funcionalidad. Yo la descubrí examinando como funcionaba el Deadline)
Entonces, ¿por qué necesitamos un plugin?. La opción "Pass Crop Window" nos permite especificar un Offset en X e Y, así como la anchura y la altura de la porción a renderizar. En el caso de que queramos renderizar la imagen en dos trozos, calcular estos datos es relativamente sencillo, sin embargo obtenerlos cuando queremos renderizar la imagen en 9 trozos (3 filas x 3 columnas) la cosa se complica exponencialmente.
RenderCrop, permite especificar en cuantas celdas queremos dividir nuestro render, así como especificar la celda y el pase a renderizar.
Una vez seleccionados estos datos, RenderCrop configura el "Pass Crop Window" para que renderize la celda seleccionada. Así mismo antepone a los nombre de fichero generados el texto "fXc_" donde la "f" es el número de fila y "c" es el número de columna renderizado.
Esta labor también tendriamos que realizarla a mano (y con extremo cuidado de no confundirnos) si no dispusiesemos de RenderCrop.
Es así de sencillo!
Instalación
===========
Copiar el fichero RenderCrop.js al directorio Plugins dentro del directorio de instalación de XSI. Creará una nueva opción dentro de las opciones de render de XSI llamada "RenderCrop...".
Utilización
===========
Accedemos al menú de Render | Render | RenderCrop...
Nos mostrará la ventana de RenderCrop. Esta ventana se crea como una CustomProperty que puede ser accedida en caso de que sea cerrada a traves del Object Explorer ( tecla 8 ). Esta CustomProperty nos almacena los datos seleccionados por última vez junto con la escena, por lo que si retomamos el render de ciertas porciones en días posteriores, sabremos en que celda nos quedamos la última vez.
Si una vez creada la CustomProperty, volvemos a pulsar en el menú RenderCrop, nos creará otra CustomProperty, por lo que podremos disponer de varias configuraciones de render en trozos si es necesario.
En la ventana de RenderCrop seleccionamos los datos que deseamos:
Number of rows and Columns
--------------------------
>>Número de Filas y Columnas en las que deseamos dividir el Render. Si seleccionamos el valor 1 y 1, desactivaremos el "Pass Crop Window".
>> Valor por defecto: 2,2
Cell to Render
--------------
>>Celda o lo que es lo mismo, fila y columna a renderizar
>> Valor por defecto: 1,1
Render Pass
-----------
>>Pase a renderizar. Es necesario especificarlo, ya que la configuración del "Pass Crop Window" y del nombre de los ficheros se aplican a un pase determinado
>> Valor por defecto: Pase en el que nos encontramos actualmente
Apply Render Crop
-----------------
>>Aplica los valores necesarios a los parámetros OffsetX, OffsetY, Width y Height del "Pass Crop Window". Así mismo establece el nombre de fichero fXc_[Pass]_[FrameBuffer] (donde "f" es el número de fila y "c" es el número de columna) para todos los canales del Pase seleccionado.
Atención: Tened esto último en cuenta si estamos utilizando nombres de fichero no estándares para nuestras escenas, ya que RenderCrop los modifica.
Ya podemos lanzar el render de nuestro pase y obtendremos el render de nuestra celda seleccionada.
Una vez que tenemos todos los trozitos de nuestra imagen, es muy sencillo componerlos todos juntos en el FXTree mediante el nodo Over.
Lo dicho a disfrutarlo y espero vuestros comentarios!