Integrando Blender,
Boinc y Legión
Blender
¿Que es Blender?
●Creación de contenido 3D.
●Software libre.
●Multiples sistemas operativos.
●Licencia GNU General Public License.
Blender - GUI
Blender – Consola de Comandos
blender [-b <dir><file>
[-o <dir><file>][-F <format>]
-x [0|1]][-t <threads>][-S <name>]
[-f <frame>]
[-s <frame> -e <frame> -a]]
[[-P <scriptname> [-- <parameter>]]
# blender -b file.blend -x 1 -o //file -F MOVIE -s 003 -e 005 -a
Ejemplo de Blender - Sintel
Ejemplo de Blender - Big Bunny
Blender - Renderizar
Blender - Renderizar
Blender – API Python
● Python 3.x.
● Crear elementos de interfaz de
usuario, como menús, cabeceras y
paneles.
● Dibujar en la vista 3D.
● Crear nuevos motores de renderizado.
BOINC
Berkeley Open Infrastructure for Network
Computing
¿Que es BOINC?
● Infrastructura abierta de Berkley para
la Computacion en Red.
● Programas de código abierto para
computación voluntaria y computación
en red (grid).
BOINC - Proyectos
Fisica y Astronomía
Biología
Matemática
Ciencias de la Tierra
BOINC – Computación Distribuida
Secuencial
Distribuido
BOINC – ¿Como funciona?
BOINC - Componentes
Servidor
● Generador de Workunits (API C++).
● Calendarizador (Scheduling).
● Servidor de Archivos.
Cliente
● Core.
● Boinc Manager (RPC).
● Protector de pantalla.
BOINC – Servidor (I)
Config:
<boinc>
<platform>
<name>i686-pc-linux-gnu</name>
<user_friendly_name>
Linux Intel x86-compatible CPU
</user_friendly_name>
</platform>
<app>
<name>uppercase</name>
<user_friendly_name>
UperCASE
</user_friendly_name>
</app>
</boinc>
BOINC – Servidor (II)
Template Input:
<workunit>
<file_ref>
<file_number>0</file_number>
<open_name>in</open_name>
</file_ref>
<file_ref>
<file_number>1</file_number>
<open_name>logo.jpg</open_name>
</file_ref>
<delay_bound>600</delay_bound>
<target_nresults>1</target_nresults>
</workunit>
Template Output:
<file_info>
<name><OUTFILE_0/></name>
<generated_locally/>
<max_nbytes>20000000</max_nbytes>
<upload_when_present/>
</file_info>
<result>
<file_ref>
<file_name><OUTFILE_0/></file_name>
<open_name>out</open_name>
</file_ref>
</result>
BOINC – Servidor (III)
Crear una tarea:
./bin/create_work
-appname nombreapplicacion
-wu_name nombre_calculo
-wu_template templates/input.xml
-result_template templates/output.xml
in logo.jpg
BOINC – Cliente GUI
BOINC – Cliente Consola de Cmd.
Legión
¿Qué es Legión?
● Sistema de computación en malla.
● Procesamientos de grandes cálculos.
● Interface Web amigable.
● Dirección Informatica Académica (DIA).
Legión – Arquitectura
Legión – Web Interface (I)
Legión – Web Interface (II)
Legión – Web Interface (III)
Legión – Web Interface (IV)
Integración
Integración
Integración
● Interface de usuario
● Procesamiento
● Dividir y renderizar
● Unir partes
● Post Procesamiento
Legión – Formulario
Integración - Procesamiento
<task>
<name>{{Form:txtName}}</name>
<desc>{{Form:txtDescription}}</desc>
<exec_file>
<name>/usr/bin/python</name>
<out_filename>image.png</out_filename>
<cmd>
blender_render_split.py {{Form:sResolution}} 60
{{Form:chckTexture}} {x} {{Form:sMovie}}
</cmd>
<compress>{{Project:compress}}</compress>
<process>
<tag>x</tag>
<start>{{Form:txtFrameStart}}</start>
<stop>{{Math:{Form:txtFrameEnd}+1}}</stop>
<step>1</step>
</process>
</exec_file>
<process>
<tag>x</tag>
<start>{{Form:txtFrameStart}}</start>
<stop>{{Math:{Form:txtFrameEnd}+1}}</stop>
<step>1</step>
</process>
</exec_file>
<other_file>
<name>blender_render_split.py</name>
</other_file>
<other_file>
<name>frame_split.py</name>
</other_file>
<out_file>
<type>other</type>
<name>image.png</name>
</out_file>
</task>
Integración – Dividir Renderizar (I)
import bpy, sys
bpy.context.scene.render.resolution_x = int(sys.argv[7])
bpy.context.scene.render.resolution_y = int(sys.argv[8])
bpy.context.scene.render.fps = int(sys.argv[9])
bpy.context.scene.render.use_textures =
(int(sys.argv[10])==1)
bpy.context.scene.frame_set(int(sys.argv[11]))
Integración – Dividir Renderizar (II)
...
#Bucle por secciones 'n'x'm'
bpy.context.scene.render.border_min_x = b_min_x
bpy.context.scene.render.border_max_x = b_max_x
bpy.context.scene.render.border_min_y = b_smin_y
bpy.context.scene.render.border_max_y = b_smax_y
bpy.ops.render.render()
bpy.data.images["Result"].save_render("./file_n_m.bmp")
Conclusión
● La integración permite accelerar el
proceso de renderizado.
● Es posible realizar renderizado
utilizando Legión.
Referencias
● www.blender.org
● boinc.berkeley.edu
● wiki.blender.org/index.php
● www.renderfarm.fi
● blenderscripting.blogspot.com
● wiki.pucp.edu.pe/legion
Gracias por su atención
[email protected]
Preguntas?
Comentarios de: Integrando Blender, Boinc y Legión (0)
No hay comentarios