XSIforum.com

RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos

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

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)  >:D

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!  O0
« Última modificación: 08 Agosto 2008, 17:33:57 por surfaze »

dracon

  • ***
  • 1582
  • XSI: the very best.
Muchisimas gracias!!!!!!!!!!! a ver si puedo probarlo antes de irme de vacatas mañana, si no a la vuelta.

 O0

Epar

Muchisimas gracias Surface!!!!!!
Me será de gran utilidad.
 O0 O0 O0

M-TUNE

  • **
  • 668
  • Mental Reeeyyy..!!!
buenisimo.!

Acabo de modificar el post original para añadir algunas fotos y explicar como usar el FXTree para luego componer las imagenes obtenidas. A ver si así alguien más se anima a probarlo.

Gracias por los comentarios.

Está muy bien, si lo empaquetas en un addon (desde el plugin manager) le pones la guinda a la torta :)

Que ventaja tiene el Addon frente al Plugin?

es lo mismo pero empaquetado para una más fácil distribución, con un simple drag and drop copia todos los archivos necesarios en la rutas correspondiente :)

photon

  • *
  • 88
  • Te veo como un Poligono
Muchas Gracias Surfaze.

cojonudo. Cuando lo use te contare mas cosas.

Si en Addon, Seria la Guinda para distribuirlo. Kd mas pofesional.

Chao
« Última modificación: 08 Agosto 2008, 19:12:03 por photon »

alanf

  • *****
  • 6029
  • Pipeline Developer @ Felix & Paul Studios
Una vez que tenemos todos los trozitos de nuestra imagen, es muy sencillo componerlos todos juntos en el FXTree mediante el nodo Over.

Esto podria ser parte del script. Puedes scriptear la creacion del arbol del fxtree. :)