Actualizado el 2 de Marzo del 2020 (Publicado el 3 de Marzo del 2017)
1.410 visualizaciones desde el 3 de Marzo del 2017
10,4 MB
249 paginas
Creado hace 18a (06/07/2006)
UNIVERSIDAD DE CASTILLA-LA MANCHA
ESCUELA SUPERIOR DE INFORM ÁTICA
INGENIERÍA
EN INFORM ÁTICA
PROYECTO FIN DE CARRERA
Sistema GRID para el Render de Escenas 3D
Distribuido: YAFRID
José Antonio Fernández Sorribes
Julio, 2006
UNIVERSIDAD DE CASTILLA-LA MANCHA
ESCUELA SUPERIOR DE INFORM ÁTICA
Departamento de Informática
PROYECTO FIN DE CARRERA
Sistema GRID para el Render de Escenas 3D
Distribuido: YAFRID
Autor:
Director: Carlos González Morcillo
José Antonio Fernández Sorribes
Julio, 2006
c José Antonio Fernández Sorribes. Se permite la copia, distribución y/o modificación de este
documento bajo los términos de la licencia de documentación libre GNU, versión 1.1 o cualquier
versión posterior publicada por la Free Software Foundation, sin secciones invariantes. Puede consultar
esta licencia en http://www.gnu.org.
Este documento ha sido compuesto con LATEX. Las figuras que contiene han sido en su mayoría creadas
con OpenOffice y El GIMP y los diagramas UML con ArgoUML y Umbrello.
Las figuras que aparecen en la introducción a sistemas distribuidos (Apartado 3.5) han sido sacadas
de [Moy05].
Las imágenes de los dragones de la Figura 3.5 han sido cedidas por Carlos González.
Los derechos de la imagen de Toy Story que aparece en la Introducción pertenecen a Pixar Animation
Studios (TM y c 1986 - 2006).
TRIBUNAL:
Presidente:
Vocal:
Secretario:
FECHA DE DEFENSA:
CALIFICACI ÓN:
PRESIDENTE
VOCAL
SECRETARIO
Fdo.:
Fdo.:
Fdo.:
Resumen
El último paso en el proceso para la generación de imágenes y animaciones 3D por
ordenador es el llamado render. En esta fase se genera una imagen bidimensional (o un
conjunto de imágenes en el caso de las animaciones) a partir de la descripción de una escena
3D. Para la obtención de imágenes fotorrealistas se utilizan algoritmos computacionalmente
exigentes como el trazado de rayos.
En los proyectos relacionados con la síntesis de imágenes, la etapa de render se suele
considerar el cuello de botella debido al tiempo necesario para llevarla a cabo.
Generalmente, el problema se resuelve usando granjas de render que pertenecen a
empresas del sector en las que los frames de una animación se distribuyen en distintos
ordenadores. El presente proyecto ofrece una alternativa para acometer el render tanto de
animaciones como de imágenes basada en computación grid. Para ello, se ha desarrollado
un sistema en el que tienen cabida ordenadores heterogéneos tanto en software como en
hardware, distribuidos geográficamente y conectados al grid vía Internet.
I
Abstract
Rendering is the last step of the 3D image synthesis process. This phase consists in
generating a bi-dimensional image (or a set of them in animations) from a formal description
of a 3D scene.
In order to obtain realistic results, it is necessary to use computationally intensive
algorithms like raytracing. Due to the time that those algorithms require, the rendering is
often considered to be the bottleneck of the projects related to realistic image synthesis.
A common solution to this problem consists in spread the render of animations among a
large number of computers where each one process one single frame. Those sets of computers
are often owned by a single organization and are referred as render farms.
This project offers a different approach to solve the problem of rendering both images and
animations, an approach based on grid computing. A system like this one can be composed by
heterogeneous, in terms of hardware and software, and geographically distributed computers.
The only requirement is having an Internet connection.
III
A mis padres, mi hermana y mi abuela,
por estar siempre ahí aguantándome y
porque a ellos les dedico todo cuanto hago.
Agradecimientos
A Carlos por sus ánimos, su entrega y por tener más fe en mí a veces de la que incluso yo
mismo tenía.
A mis padres por la revisión de este documento.
A Raúl por echarme una mano en la implantación del sistema.
A todos los que de una u otra manera han tenido algo que ver con el resultado final.
V
Índice general
Índice de figuras
Índice de cuadros
Índice de listados
Índice de algoritmos
Terminología
Notación
1. INTRODUCCI ÓN
1.1. ENFOQUE DEL PROYECTO . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. ESTRUCTURA DE ESTE DOCUMENTO . . . . . . . . . . . . . . . . . .
2. OBJETIVOS DEL PROYECTO
3. ANTECEDENTES, ESTADO DE LA CUESTI ÓN
XI
XV
XVI
XVIII
XX
XXII
1
5
6
7
9
10
10
12
14
15
16
18
22
26
29
32
33
35
35
36
37
38
3.1. COMPUTACI ÓN GRID . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1. Definición de grid . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.2. Clasificación de sistemas grid . . . . . . . . . . . . . . . . . . . . .
3.1.3. Arquitectura OGSA . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.4. Relación entre redes peer-to-peer, clusters y grid . . . . . . . . . . .
3.2. SÍNTESIS DE IM ÁGENES 3D . . . . . . . . . . . . . . . . . . . . . . . .
Introducción a la síntesis de imagen fotorrealista . . . . . . . . . . .
3.2.1.
3.2.2. Métodos de renderizado . . . . . . . . . . . . . . . . . . . . . . . .
3.2.3. Casos de estudio en motores de render . . . . . . . . . . . . . . . . .
3.3. SISTEMAS RELACIONADOS . . . . . . . . . . . . . . . . . . . . . . . .
3.4. DESARROLLO DE APLICACIONES WEB . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1. PHP .
3.4.2.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
JSP .
3.4.3. ASP y ASP .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.4. Hojas de Estilo en Cascada . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.5.
3.5. SISTEMAS DISTRIBUIDOS . . . . . . . . . . . . . . . . . . . . . . . . .
JavaScript . .
.
.
.
.
.
.
.
.
.
.
.
.
VII
VIII
ÍNDICE GENERAL
Introducción a los Sistemas Distribuidos . . . . . . . . . . . . . . . .
3.5.1.
3.5.2. Middleware para Sistemas Distribuidos . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.3.
3.6. LENGUAJES DE SCRIPT Y GLUE-CODE . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ICE .
.
.
.
.
.
.
38
39
42
45
46
3.6.1. Python .
. .
4. M ÉTODO DE TRABAJO
4.1. ARQUITECTURA .
.
.
.
.
.
4.6. COMUNICACIONES .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1. Servidor Yafrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.2. Proveedor .
4.2. ASPECTOS DE INGENIERÍA DEL SOFTWARE . . . . . . . . . . . . . .
4.2.1. Ciclo de Vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.2. Metodología
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Iteraciones del Ciclo de Vida en Yafrid . . . . . . . . . . . . . . . .
4.2.3.
4.3. GENERALIDADES SOBRE EL DISE ÑO . . . . . . . . . . . . . . . . . . .
4.3.1. Diseño Multicapa . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.2. Patrones de diseño . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4. ELEMENTOS B ÁSICOS DE YAFRID . . . . . . . . . . . . . . . . . . . .
4.5. PERSISTENCIA .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.1. Construcción de la base de datos . . . . . . . . . . . . . . . . . . . .
4.5.2. Clases de persistencia
. . . . . . . . . . . . . . . . . . . . . . . . .
4.5.3. Generación automática de clases . . . . . . . . . . . . . . . . . . . .
4.5.4. Tecnología de base de datos
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.1. Creación de proxies . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.2. Protocolo de comunicaciones
. . . . . . . . . . . . . . . . . . . . .
4.7. GESTI ÓN DE PROCESOS . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.8. PARAMETRIZACI ÓN .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
INTERNALIZACI ÓN .
4.9.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.10. MOTORES DE RENDER . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.10.1. Generación de parámetros . . . . . . . . . . . . . . . . . . . . . . .
4.10.2. Render
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.10.3. Post-procesado . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.11. TRATAMIENTO DE IM ÁGENES . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.12. PRIORIDADES . .
4.13. YAFRID-CORE .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.13.1. Parametrización . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.13.2. Distribuidor .
.
4.13.3. Identificador
.
.
49
50
51
57
57
58
59
61
63
63
65
66
70
70
71
73
74
75
75
77
78
80
81
83
86
90
91
92
97
97
98
98
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.14.1. Tecnologías web . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.14.2. Generalidades sobre Yafrid-WEB . . . . . . . . . . . . . . . . . . . 109
4.14.3. Creación de cuentas
. . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.14.4. Usuarios de Yafrid . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.14.5. Parametrización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
4.14. YAFRID-WEB .
. .
.
.
.
.
.
.
.
.
ÍNDICE GENERAL
IX
4.15. PROVEEDOR .
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.15.1. Interfaz gráfica de usuario . . . . . . . . . . . . . . . . . . . . . . . 121
4.15.2. Conexión con el grid . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.15.3. Render de unidades de trabajo . . . . . . . . . . . . . . . . . . . . . 127
4.15.4. Desconexión del grid . . . . . . . . . . . . . .
Comentarios de: Sistema GRID para el Render de Escenas 3D Distribuido: YAFRID (0)
No hay comentarios