XSIforum.com

Foros 3D => Autodesk Softimage => Rigging y Scripting => Mensaje iniciado por: surfaze en 08 Agosto 2008, 14:20:02

Título: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos
Publicado por: surfaze en 08 Agosto 2008, 14:20:02
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...

(http://www.fumpr.com/thumbs/cqs1218209222d.png) (http://www.fumpr.com/viewer.php?id=cqs1218209222d.png)

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.

(http://www.fumpr.com/thumbs/viu1218209266d.png) (http://www.fumpr.com/viewer.php?id=viu1218209266d.png)

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.

(http://www.fumpr.com/thumbs/opt1218209303s.png) (http://www.fumpr.com/viewer.php?id=opt1218209303s.png)

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.

(http://www.fumpr.com/thumbs/rgh1218209347x.png) (http://www.fumpr.com/viewer.php?id=rgh1218209347x.png)

(http://www.fumpr.com/thumbs/jdv1218209374e.png) (http://www.fumpr.com/viewer.php?id=jdv1218209374e.png)

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.

(http://www.fumpr.com/thumbs/arx1218209521m.png) (http://www.fumpr.com/viewer.php?id=arx1218209521m.png)

(http://www.fumpr.com/thumbs/cqs1218209558p.png) (http://www.fumpr.com/viewer.php?id=cqs1218209558p.png)

Una vez que tenemos todos los trozitos de nuestra imagen, es muy sencillo componerlos todos juntos en el FXTree mediante el nodo Over.

(http://www.fumpr.com/thumbs/bfi1218209632d.png) (http://www.fumpr.com/viewer.php?id=bfi1218209632d.png)

Lo dicho a disfrutarlo y espero vuestros comentarios!  O0
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos
Publicado por: dracon en 08 Agosto 2008, 15:02:55
Muchisimas gracias!!!!!!!!!!! a ver si puedo probarlo antes de irme de vacatas mañana, si no a la vuelta.

 O0
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozo
Publicado por: Epar en 08 Agosto 2008, 15:18:27
Muchisimas gracias Surface!!!!!!
Me será de gran utilidad.
 O0 O0 O0
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos
Publicado por: M-TUNE en 08 Agosto 2008, 15:42:23
buenisimo.!
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos
Publicado por: surfaze en 08 Agosto 2008, 17:35:39
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.
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos
Publicado por: Cesar Saez en 08 Agosto 2008, 17:42:59
Está muy bien, si lo empaquetas en un addon (desde el plugin manager) le pones la guinda a la torta :)
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos
Publicado por: surfaze en 08 Agosto 2008, 18:00:27
Que ventaja tiene el Addon frente al Plugin?
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos
Publicado por: Cesar Saez en 08 Agosto 2008, 18:50:11
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 :)
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos
Publicado por: photon en 08 Agosto 2008, 19:00:29
Muchas Gracias Surfaze.

cojonudo. Cuando lo use te contare mas cosas.

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

Chao
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos
Publicado por: alanf en 08 Agosto 2008, 22:21:55
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. :)
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos
Publicado por: surfaze en 08 Agosto 2008, 22:44:43
Jejeje... Alanf, me quieres matar :D
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos
Publicado por: surfaze en 10 Agosto 2008, 01:02:51
Lo que sí que sería interesante, sería que el script generase un .bat (lo malo de esto es los usuarios de linux) donde llamase al xsibatch y generase todos los trozos, sin necesidad de hacerlo uno a uno nosotros.

Mañana me voy de vacaciones, pero a la vuelta y si os parece buena idea me lo curro.
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos
Publicado por: oscurart en 26 Agosto 2008, 14:14:28
Buenisimo!, gracias!
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozos
Publicado por: sirdavid32 en 15 Septiembre 2009, 20:02:39
lo del render crop está bien. pero no veo dónde bajar el .js. Está por aqui??
Título: Re: RenderCrop. Plugin para el renderizado de imagenes grandes en pequeños trozo
Publicado por: alanf en 16 Septiembre 2009, 19:34:04
Es archivo adjunto (RenderCrop.zip) en el primer post y esta dentro, hombre. :P