GRADO EN INGENIERÍA MULTIMEDIA
TRABAJO DE FIN DE GRADO
DESARROLLO DE PLUG-IN PARA MODELADOR 3D Y
ANÀLISIS DE ALGORITMOS PARA LA GENERACIÓN DE
TERRENO PROCEDURAL
AUTOR:
JORGE GARCÍA SOLA
TUTORÍA:
JOSÉ ANTONIO BOLUDA GRAU
IGNACIO GARCÍA FERNÁNDEZ
MAYO, 2017
2
GRADO EN INGENIERÍA MULTIMEDIA
TRABAJO DE FIN DE GRADO
DESARROLLO DE PLUG-IN PARA MODELADOR 3D Y
ANÀLISIS DE ALGORITMOS PARA LA GENERACIÓN DE
TERRENO PROCEDURAL
AUTOR:
JORGE GARCÍA SOLA
TUTORÍA:
JOSÉ ANTONIO BOLUDA GRAU
IGNACIO GARCÍA FERNÁNDEZ
TRIBUNAL:
PRESIDENTE/PRESIDENTA:
VOCAL 1:
VOCAL 2:
FECHA DE DEFENSA:
CALIFICACIÓN:
3
Resumen
El modelado procedural de terrenos es una de las soluciones que ha presentado la
informática grafica para los diversos problemas que aparecen en el modelado 3D. Busca
aliviar la carga de trabajo de los diseñadores.
Este proyecto consiste en la creación de una herramienta para modelador 3D, en concreto,
Blender. Para generar esta extensión se han evaluado las distintas técnicas existentes para el
modelado de terrenos y se han seleccionado algunas, explicando el porqué de estas
decisiones. En la memoria se han evaluado los resultados obtenidos y se ha estudiado cada
algoritmo implementado, comparándolos entre ellos. La herramienta también incluye un
algoritmo de coloración o texturizado básico.
Al ser esto la memoria de un proyecto de ingeniería se han detallado todas las fases del
proyecto y se han realizado las fases pertinentes. Siendo estas la redacción de las
motivaciones y los objetivos del proyecto, un estado del arte, en el que se expone en que
parte de la informática grafica esta este proyecto, se estudian las distintas herramientas que
sería posible utilizar para este proyecto y se evalúan las distintas técnicas existentes para la
modelación de terrenos 3D, una especificación en la que se detalla la planificación del
proyecto incluyendo un análisis de riesgos, el propio desarrollo del proyecto, las pruebas y
estudios realizados sobre la herramienta finalizada y finalmente las conclusiones y un breve
comentario sobre el trabajo futuro.
Se ha conseguido desarrollar una herramienta con resultados satisfactorios y se han estudiado
los algoritmos implementados desde un punto de vista objetivo, utilizando para analizar las
partes más subjetivas de este trabajo un grupo variado de usuarios.
4
Contenido
1. Introducción ................................................................................................................12
1.1 Desglose de la estructura del documento............................................................................................................ 12
2. Motivación y objetivos..................................................................................................14
2.1 Motivación......................................................................................................................................................... 14
2.2 Objetivos............................................................................................................................................................ 15
3. Estado del Arte.............................................................................................................16
3.1 Gráficos 3D ...................................................................................................................................................... 16
3.2 Modelado 3D.................................................................................................................................................... 17
3.3 Generación de terreno........................................................................................................................................ 19
Proceso de Poisson ........................................................................................................................................... 21
Filtrado de Fourier ............................................................................................................................................ 21
Síntesis de ruido ................................................................................................................................................. 22
Spectral synthesis .................................................................................................................................................... 22
Desplazamiento aleatorio del punto medio ............................................................................................... 22
Diagramas de Voronoi..................................................................................................................................... 22
3.4 Algoritmos de simulación natural de terreno:................................................................................................... 24
Erosión hídrica y alzamiento tectónico ....................................................................................................... 24
Erosión térmica.................................................................................................................................................. 25
Erosión fluvial .................................................................................................................................................... 25
3.5 Algoritmos de coloración o texturizado procedural .......................................................................................... 26
Mapeado de texturas basado en altura......................................................................................................... 26
Mapeado de texturas basado en pendiente................................................................................................. 26
Atlas de texturas................................................................................................................................................. 26
4. Especificación:............................................................................................................ 28
4.1 Análisis de requisitos........................................................................................................................................ 28
No funcionales ................................................................................................................................................... 28
Funcionales ......................................................................................................................................................... 29
4.2 Especificación del sistema.................................................................................................................................. 30
4.3 Planificación y estimación de costes ................................................................................................................... 30
Estimación temporal ........................................................................................................................................ 30
4.4 Análisis de riesgos............................................................................................................................................. 34
Mitigación ............................................................................................................................................................ 35
Contingencia ....................................................................................................................................................... 35
5. Desarrollo del proyecto................................................................................................ 36
5
5.1 Análisis............................................................................................................................................................. 36
5.2 Diseño ................................................................................................................................................................... 40
5.3 Implementación ..................................................................................................................................................... 42
5.3.1 Entorno de trabajo ................................................................................................................................. 42
5.3.2 Implementación de algoritmos............................................................................................................ 42
5.3.3 Implementación de la interfaz y del generador de mallas ............................................................ 47
6. Pruebas ....................................................................................................................... 49
6.1 Pruebas unitarias.................................................................................................................................................. 49
6.1.1 Desplazamiento del punto medio:...................................................................................................... 49
6.1.2 Filtrado de Fourier:................................................................................................................................. 51
6.1.3 Erosión térmica ....................................................................................................................................... 53
6.1.4 Erosión hídrica ........................................................................................................................................ 54
6.1.5 Generación tectónica y fluvial ............................................................................................................. 57
6.1.6 Coloración del terreno ........................................................................................................................... 58
6.2 Pruebas funcionales............................................................................................................................................... 59
6.2.1 Combinaciones de algoritmos ............................................................................................................. 59
6.2.2 Generación de tipos de terreno........................................................................................................... 62
6.3 Pruebas de rendimiento ......................................................................................................................................... 66
Algoritmo de desplazamiento del punto medio........................................................................................ 66
Algoritmo de filtrado de Fourier................................................................................................................... 67
Algoritmo de erosión térmica ........................................................................................................................ 67
Algoritmo de erosión hídrica ......................................................................................................................... 68
Algoritmo de generación fluvial y alzamiento tectónico ........................................................................ 68
6.4 Pruebas de usabilidad ........................................................................................................................................... 71
6.4.1 Encuesta sobre naturalidad .................................................................................................................. 71
6.4.2 Uso de la herramienta ............................................................................................................................ 73
6.5 Evaluación presupuestaria.................................................................................................................................... 75
7. Conclusiones ............................................................................................................... 77
7.1 Conclusiones .......................................................................................................................................................... 77
7.2 Trabajo futuro....................................................................................................................................................... 78
Anexo 1: Manual de Usuario................................................................................................ 79
1. Métodos de generación ....................................................................................................................................... 79
a. Desplazamiento del punto medio (generar terreno 1).................................................................. 79
b. Filtrado de Fourier (generar terreno 2)............................................................................................. 82
c. Generación fluvial .................................................................................................................................. 83
2. Métodos de erosión ............................................................................................................................................ 84
a. Erosión térmica ....................................................................................................................................... 84
b. Erosión Hídrica....................................................................................................................................... 85
c. Algoritmo de Coloración ...................................................................................................................... 89
Anexo 2: Encuesta naturalidad ............................................................................................ 90
6
Parte 1 ......................................................................................................................................................................... 91
Colinas .................................................................................................................................................................. 91
Delta...................................................................................................................................................................... 92
Ladera ................................................................................................................................................................... 93
Montañas ............................................................................................................................................................. 94
Planicie ................................................................................................................................................................. 95
Parte 2 ......................................................................................................................................................................... 96
Parte 3 ....................................................................................................................................................................... 100
Colinas ................................................................................................................................................................ 100
Delta.................................................................................................................................................................... 101
Ladera ................................................................................................................................................................. 102
Montañas ........................................................................................................................................................... 103
Planicie ............................................................................................................................................................... 104
Anexo 3: Encuestas usabilidad ........................................................................................... 105
8. Bibliografía ................................................................................................................ 108
7
Lista de Ecuaciones
Ecuación 1. Algoritmo del cálculo de la altura a partir de puntos de control ........................................... 23
Ecuación 2. Cáculo media beta .............................................................................................................................. 31
Ecuación 3. Varianza ................................................................................................................................................ 32
Ecuación 4. Colchón de seguridad con probabilidad al 95% ........................................................................ 32
Ecuación 5. Centro entre cuatro esquinas .......................................................................................................... 43
Ecuación 6. Centro entre dos esquinas................................................................................................................ 43
Ecuación 7. Covarianza para superficie browniana.......................................................................................... 43
Ecuación 8. Altura del vértice ................................................................................................................................ 45
Ecuación 9. Altura del vecino................................................................................................................................. 45
Ecuación 10. Dominio de velocidades de crecimiento .................................................................................... 46
Lista de Tablas
Tabla 1. Estimación de costes ................................................................................................................................. 34
Tabla 2. Análisis de riesgos con probabilidad e impacto................................................................................. 35
Tabla 3. Planes de mitigación para impacto alto ................................................................................................ 35
Tabla 4. Plan de contingencia para impacto alto ............................................................................................... 35
Tabla 5. Casos de uso de generación de terreno................................................................................................ 37
Tabla 6. Casos de uso de suavizado del terreno................................................................................................. 38
Tabla 7. Casos de uso de texturización del terreno........................................................................................... 38
Tabla 8. Algoritmo de desplazamiento al punto medio ................................................................................... 67
Tabla 9. Algoritmo de filtrado de Fourier ........................................................................................................... 67
Tabla 10. Algoritmo de erosión térmica ............................................................................................................... 68
Tabla 11. Algoritmo de erosión hídrica ................................................................................................................ 68
Tabla 12. Algoritmo de generación fluvial ........................................................................................................... 69
Tabla 14. Comparativa de costes estimados y reales......................................................................................... 76
Lista de Figuras
Figura 1. Planet Explorers (2014) .......................................................................................................................... 20
Figura 2. Starforge (2014) ........................................................................................................................................ 20
Figura 3. The Good Dinosaur (2015)................................................................................................................... 21
Figura 4. Terreno crudo. .......................................................................................................................................... 23
Figura 5. Terreno tras aplicar algoritmo de erosión ......................................................................................... 24
Figura 6. Planificación estimada............................................................................................................................. 31
Figura 7. Diagrama de Gantt .................................................................................................................................. 33
Figura 8. Diagrama de casos de uso...................................................................................................................... 36
Figura 9. Interfaz general ......................................................................................................................................... 40
Figura 10. Interfaz para generación por desplazamiento del punto medio ................................................ 40
8
Figura 11. Interfaz para erosión térmica............................................................................................................... 41
Figura 12. Interfaz para erosión hídrica ............................................................................................................... 41
Figura 13. Interfaz para coloreado......................................................................................................................... 41
Figura 14. Diagrama de clases ................................................................................................................................. 42
Figura 15. Pasos del desplazamiento aleatorio del punto medio ................................................................... 43
Figura 16. Mapa de alturas sin componente aleatoria....................................................................................... 49
Figura 17. Factor de suavizado 0............................................................................................................................ 50
Figura 18. Factor de suavizado 0.5 ........................................................................................................................ 50
Figura 19. Factor de suavizado 1............................................................................................................................ 50
Figura 20. Factor de suavizado 2 ........................................................................................................................... 50
Figura 21. 27 + 1 vértices.......................................................................................................................................... 51
Figura 22. 28 + 1 vértices ......................................................................................................................................... 51
Figura 23. 27 vértices por lado ................................................................................................................................ 52
Figura 24. 28 vértices por lado ................................................................................................................................ 52
Figura 25. Superficie browniana con a: 1, h: 0.8 ................................................................................................ 52
Figura 26. Factor suavizado 0.5.............................................................................................................................. 52
Figura 27. Factor suavizado 0.01 ........................................................................................................................... 52
Figura 28. Factor amplitud 30 ................................................................................................................................ 53
Figura 29. Factor amplitud 20 ................................................................................................................................ 53
Figura 30. Factor amplitud 10 ................................................................................................................................ 53
Figura 31. Factor suavizado 1 ................................................................................................................................. 53
Figura 32. Erosión térmica al 3 .............................................................................................................................. 54
Figura 33. Erosión térmica al 2 .............................................................................................................................. 54
Figura 34. Erosión termica al 1 .............................................................................................................................. 54
Figura 35. Erosión térmica al 0.1 ........................................................................................................................... 54
Figura 36. Segundo set de valores ......................................................................................................................... 55
Figura 37. Primer set de valores ............................................................................................................................. 55
Figura 38. Malla base................................................................................................................................................. 55
Figura 39. Coeficiente capacidad 1........................................................................................................................ 56
Figura 40. Coeficiente capacidad 0.25 .................................................................................................................. 56
Figura 41. Coeficiente capacidad 0 ........................................................................................................................ 56
Figura 42. Lluvia al 0.25 ........................................................................................................................................... 57
Figura 43. Evaporación a 1...................................................................................................................................... 57
Figura 44. Evaporación a 0...................................................................................................................................... 57
Figura 45. Maya tras aplicar algoritmo ................................................................................................................. 58
Figura 46. Maya inicial provista .............................................................................................................................. 58
Figura 47. Amplitud 30............................................................................................................................................. 58
Figura 48. Amplitud 10............................................................................................................................................. 58
Figura 49. Maya inicial .............................................................................................................................................. 58
Figura 50. Erosión hídrica sobre punto medio .................................................................................................. 59
Figura 51. Malla generada con punto medio....................................................................................................... 59
Figura 52. Malla generada con superficie Browniana ....................................................................................... 60
Figura 53. Erosión hídrico-térmica sobre punto medio .................................................................................. 60
Figura 54. Erosión térmica sobre Browniana..................................................................................................... 60
Figura 55. Erosión hídrica sobre Browniana ...................................................................................................... 60
Figura 56. Erosión térmica-hídrica sobre punto medio .................................................................................. 60
Figura 57. Erosión térmica sobre punto medio ................................................................................................. 60
Figura 58. Erosión hídrico – térmica sobre Browniana................................................................................... 61
Figura 59. Erosión térmica – hídrica sobre Browniana ................................................................................... 61
9
Figura 60. Fluvial hídrica.......................................................................................................................................... 61
Figura 61. Fluvial térmica ......................................................................................................................................... 61
Figura 62. Fluvial Hídrico-térmica ........................................................................................................................ 62
Figura 63. Fluvial Térmico-hídrica ........................................................................................................................ 62
Figura 64. Dunas mediante generación fluvial ................................................................................................... 62
Figura 65. Dunas mediante erosión térmica ....................................................................................................... 63
Figura 66. Dunas mediante erosión hídrica ........................................................................................................ 63
Figura 67. Delta mediante generación fluvial ..................................................................................................... 63
Figura 68. Escarpadas mediante e. hídrica .......................................................................................................... 64
Figura 69. Escarpadas mediante e. térmica ......................................................................................................... 64
Figura 70. Montañas escarpadas mediante generación fluvial ....................................................................... 64
Figura 71. Delta mediante erosión hídrica........................................................................................................... 64
Figura 72. Delta mediante erosión térmica ......................................................................................................... 64
Figura 73. Llanura mediante erosión hídrica ...................................................................................................... 65
Figura 74. Llanura mediante erosión termica ..................................................................................................... 65
Figura 75. Llanura mediante generación fluvial ................................................................................................. 65
Figura 76. Barranco mediante generación fluvial .............................................................................................. 66
Figura 77. Barranco mediante e. térmica ............................................................................................................. 66
Figura 78. Barranco mediante e. hídrica .............................................................................................................. 66
Figura 79. Gráfica comparativa con valores duplicados de algoritmos de generación tiempo/vértices
........................................................................................................................................................................................... 69
Figura 80. Gráfica comparativa de algoritmos de generación tiempo/vértices ........................................ 69
Figura 81. Comparativa vértices/tiempo de iteración para algoritmo de erosión. ................................... 70
Figura 82. Comparativa con valores duplicados vértices/tiempo de iteración para algoritmo de
erosión............................................................................................................................................................................. 70
Figura 83. Resultados sobre la encuesta “terrenos crudos” ........................................................................... 72
Figura 84. Resultados de la encuesta con muchos vértices............................................................................. 72
Figura 85. Resultados de la encuesta comparando Fourier/Punto medio ................................................. 73
Figura 86. Diagrama de gantt.................................................................................................................................. 75
Figura 87. Factor de suavizado 1 ........................................................................................................................... 79
Figura 88. Factor de suavizado 0.1 ........................................................................................................................ 79
Figura 89. Orden 3..................................................................................................................................................... 79
Figura 90. Orden 2..................................................................................................................................................... 79
Figura 91. Amplitud 100 en un terreno de orden 7 (16641 vértices) ........................................................... 81
Figura 92. Amplitud 10 en un terreno de orden 7 (16641 vértices) ............................................................. 80
Figura 93. Malla para inicializar las esquinas y su resultado ........................................................................... 81
Figura 94. Amplitud 20 en un terreno de orden 7(16384 vértices) .............................................................. 82
Figura 95. Amplitud 100 en un terreno de orden 7(16384 vértices) ............................................................ 82
Figura 96. Factor de suavizado en 0,1 .................................................................................................................. 82
Figura 97. Factor de suavizado 0,9 ........................................................................................................................ 83
Figura 98. Malla inicial .............................................................................................................................................. 83
Figura 99. Resultado .................................................................................................................................................. 83
Figura 100. Resultado ................................................................................................................................................ 84
Figura 101. Malla inicial............................................................................................................................................. 84
Figura 102. Terreno Crudo ...................................................................................................................................... 84
Figura 103. Erosión con pendiente máxima 2.................................................................................................... 85
Figura 104. Erosión con pendente máxima 1 ..................................................................................................... 85
Figura 105. Terreno con 100 iteraciones de erosión hídrica........................................................................... 86
Figura 106. 20 iteraciones de e. hídrica con coef. de solubilidad: 0.25 ........................................................ 86
10
Figura 107. 20 iteraciones de e. hídrica y coef. de solubilidad: 0.05 ............................................................. 86
Figura 108. Terreno con 20 iteraciones de erosión hídrica con coeficiente de evaporación 1 ............. 87
Figura 109. Terreno con 20 iteraciones de erosión hídrica con coeficiente de evaporación 0 ............. 87
Figura 110.Terreno con 20 iteraciones de erosión hídrica con coeficiente de lluvia 0.1......................... 88
Figura 111. Terreno con 20 iteraciones de erosión hídrica con coeficiente de capacidad 0................... 88
Figura 112. Terreno con 20 iteraciones de erosión hídrica con coeficiente de capacidad 0.5 ............... 88
Figura 113. Terreno con 20 iteraciones de erosión hídrica con coeficiente de lluvia 0.5 ....................... 89
Figura 114. Terreno con pendiente de roca 1 altura de nieve 0 y altura de mar -50 ................................ 90
Figura 115. Terreno con pendiente roca 0 altura de mar -15 y altura de nieve 50.................................... 90
Figura 116. Terreno con pendiente roca 0.5, altura de mar 0 y altura de nieve 50 ................................... 90
Figura 117. Terreno a colorear................................................................................................................................ 90
Figura 118. Colinas 2 ................................................................................................................................................. 91
Figura 119. Colinas 1 ................................................................................................................................................. 91
Figura 120. Delta 2..................................................................................................................................................... 92
Figura 121. Colinas 3 ................................................................................................................................................. 92
Figura 122. Delta 1..................................................................................................................................................... 92
Figura 123. Delta 3..................................................................................................................................................... 93
Figura 124. Ladera 2 .................................................................................................................................................. 93
Figura 125. Ladera 3 .................................................................................................................................................. 94
Figura 126. Montañas 1 ............................................................................................................................................ 94
Figura 127. Montañas 2 ............................................................................................................................................ 94
Figura 128. Ladera 1 .................................................................................................................................................. 94
Figura 129. Montañas 3 ............................................................................................................................................ 95
Figura 130. Planicie 2 ................................................................................................................................................ 95
Figura 131. Planicie 1 ................................................................................................................................................. 95
Figura 132. Planicie 3 ................................................................................................................................................ 96
Figura 133. Escena 1.................................................................................................................................................. 96
Figura 134. Escena 4.................................................................................................................................................. 97
Figura 135. Escena 3.................................................................................................................................................. 97
Figura 136. Escena 2.................................................................................................................................................. 97
Figura 137. Escena 7.................................................................................................................................................. 98
Figura 138. Escena 6.................................................................................................................................................. 98
Figura 139. Escena 5.................................................................................................................................................. 98
Figura 140. Escena 10 ............................................................................................................................................... 99
Figura 141. Escena 9 .................................................................................................................................................. 99
Figura 142. Escena 8.................................................................................................................................................. 99
Figura 143. Colinas 3 ............................................................................................................................................... 100
Figura 144. Colinas 2 ............................................................................................................................................... 100
Figura 145. Colinas 1 ............................................................................................................................................... 100
Figura 146. Delta 3................................................................................................................................................... 101
Figura 147. Delta 2................................................................................................................................................... 101
Figura 148. Delta 1................................................................................................................................................... 101
Figura 149. Ladera 2 ................................................................................................................................................ 102
Figura 150. Ladera 3 ................................................................................................................................................ 102
Figura 151. Ladera 1................................................................................................................................................. 102
Figura 152. Montañas 3 .......................................................................................................................................... 103
Figura 153. Montañas 2 .......................................................................................................................................... 103
Figura 154. Montañas 1 .......................................................................................................................................... 103
Figura 155. Planicie 3 .............................................................................................................................................. 104
11
Figura 156. Planicie 2 .............................................................................................................................................. 104
Figura 157. Planicie 1 .............................................................................................................................................. 104
12
1. Introducción
La informática gráfica tiene numerosas aplicaciones, desde videojuegos hasta simuladores de
operaciones quirúrgicas. Para la mayoría de estos usos es necesario facilitar un entorno, ya
sea para darle realismo o para facilitar su uso interactivo.
En el modelado de entornos 3D, sean cuales sean sus fines, siempre aparecen varios
problemas, siendo el realismo y el trabajo necesario para conseguirlo uno de ellos.
Este problema es particularmente considerable cuando se trata de modelar un paisaje natural,
ya sea para tener un entorno virtual en un videojuego, para acompañar contenido multimedia
de otra naturaleza (como por ejemplo una producción cinematográfica) o senci llamente para
realizar simulaciones físicas de cómo se comportan los paisajes al verse afectados por
distintos fenómenos con el paso de los años. Esto se debe a que para modelar un terreno se
necesita posicionar un elevado número de vértices formando una malla de manera muy
perfeccionista, o se perderá en detalles y realismo; y esto resulta muy tedioso de hacer a
mano, y suele conllevar un número elevado de horas de trabajo.
La solución que se utiliza en este trabajo para resolver dicho problema es la generación de
terreno procedural, es decir, calcular mediante un algoritmo la posición de los vértices
necesaria para que la malla que representan en su conjunto se asemeje a un terreno. La
mayoría de veces esto se hace empleando un mapa de alturas (una malla plana), donde se
calcula valor z de manera pseudo-aleatoria.
Existen distintos algoritmos para la generación de terreno procedural , así que se
implementarán y analizarán varias de las posibles soluciones. Para darle un aspecto natural se
suavizarán las mallas resultantes mediante algoritmos de simulación física de terrenos
naturales
Esta solución se implementará en forma de herramienta para modelador 3D, ya que es el
entorno en que típicamente uno se enfrenta a estos desafíos. En el trabajo se decidirá
también para qué modelador se programará esta herramienta y se explicará porqué.
Ya existen algunas herramientas que realizan tareas similares a lo que se pretende desarrollar,
sin embargo, presentan distintos problemas: interfaces poco amigables o demasiado técnicas,
o carencias en su documentación. Este trabajo pretende obtener una herramienta sin estos
fallos y una documentación completa.
1.1 Desglose de la estructura del documento
Ahora procederé a explicar los puntos que tiene este trabajo.
13
El capítulo 1, que es este, es una breve introducción al proyecto e incluye también una
sucinta explicación de cada uno de los puntos que contiene este trabajo.
En el capítulo 2 se explica cuál es la motivación existente para el desarrollo de este proyecto
y cuáles son los objetivos que se pretendía conseguir con el mismo.
En el capítulo 3 se habla de la situación actual de la informática gráfica, cómo se ha llegado a
ese punto y cómo, a partir de ella, nació el modelado 3D. También se explicarán algunos de
los modeladores 3D que existen actualmente comentando brevemente sus características. S e
hablará de los algoritmos para la generación de terreno procedural existentes, explicando en
qué consisten cada uno de ellos y cuáles se utilizaron en el proyecto. Además, se hablará
también de los algoritmos de simulación física aplicados sobre los terrenos procedurales,
cuáles de ellos utilizamos, cuáles no y las razones tras dicha elección. Por último, se hablará
de qué algoritmos existen para aplicar texturas de manera procedural a estos terrenos;
explicándolos y dando a conocer cuáles se han empleado y el motivo por el que su uso ha
sido preferido.
En el capítulo 4 se empieza realizando un análisis de los requisitos que debe cumplir la
herramienta a desarrollar para satisfacer los objetivos establecidos el capítulo 2. Acto seguido
se detalla la especificación del sistema, que consiste en el conjunto de funcionalidades que
este posee. Además, incluye una planificación temporal en la que distintos expertos estiman
la cantidad de horas necesarias para realizar las distintas tareas de las que se compone el
proyecto. Por último, se añade un análisis de los posibles riesgos que conlleva el desarrollo de
esta herramienta con sus respectivos planes de contingencia y contención.
En el capítulo 5 se analiza la aplicación a desarrollar realizando un diagrama de casos de uso,
teniendo en cuenta todas las posibles maneras de las que se puede utilizar esta herramienta.
También se incluye el modelo de datos que vamos a emplear para el desarrollo de la
aplicación. El capítulo continúa con el diseño de la aplicación, tanto de su entorno de usuario
como de las clases que componen la herramienta. Finalizando este capítulo se encuentra la
implementación de la herramienta.
En el capítulo 6 se encuentra la descripción de las pruebas realizadas con la herramienta,
unitarias funcionales, de rendimiento y de usabilidad. Continuando este capítulo se exponen
los resultados obtenidos de las pruebas y se discute sobre ellos. Para acabar, se presenta una
evaluación presupuestaria de la implementación de la herramienta y se compara con la
planificación de costes.
El capítulo 7 consiste en las conclusiones sacadas del trabajo realizado, principalmente sobre
los datos obtenidos en las pruebas, y se plantea el trabajo futuro, es decir, cómo continuar
desarrollando y mejorando la herramienta.
Anexo: Manual de usuario. Se incluye al final del documento un manual de usuario, que
explica cómo utilizar la herramienta y los parámetros de entrada de los algoritmos.
14
2. Motivación y objetivos
2.1 Motivación
Como ya se ha mencionado en la introducción, existe una necesidad de herramientas de
modelado de terreno o entorno 3D entre los modeladores.
Durante los últimos años las industrias del videojuego, la animación y el cine han estado en
auge, así como también han aumentado el número de simuladores utilizados en estudios
científicos o con fines educativos.
Por tanto, la demanda de este tipo de herramientas también ha ido en aumento y se ha
intentado satisfacer. Sin embargo, la mayoría de plug-ins existentes (de los que se hablará en el
estado del arte) carecen de dos cosas: una interfaz amigable para usuarios poco
experimentados en programación o en los métodos de generación de terreno, y
documentación adecuada.
Una interfaz amigable es necesaria para mejorar la experiencia ofrecida por este tipo de
herramientas por diversos motivos. Ofrecer mayor control de la aplicación es muy cómodo,
ya que al crear una interfaz amigable e intuitiva le ahorraremos trabajo al usuario a la hora de
modificar la malla de vértices.
Además, es necesario que la herramienta sea fácil de utilizar si lo que se pretende es faci l i tar
el trabajo del usuario. Es mucho mejor a nivel de adaptabilidad y productividad que el
usuario no tenga que tenga que ajustarse un sinfín de parámetros cada vez que trata generar
un terreno.
Por último, que la herramienta tenga un aspecto agradable normalmente genera una
respuesta positiva por parte del usuario.
Continuando con la idea de responder a las necesidades que los usuarios puedan tener, es
importante para que los proyectos queden bien documentados; pero es común que en
software libre o en herramientas destinadas a un público experto la documentación sea
escasa o esté redactada de manera poco asequible para usuarios menos experimentados.
En este caso es necesario crear una buena documentación, incluyendo un manual para
facilitar su uso al usuario y para que se pueda continuarse su desarrollo con facilidad.
La investigación sobre algoritmia para este tipo de herramientas es obligatoria para obtener la
calidad demandada por el usuario en los terrenos generados y para facilitar futuro trabajo.
Por tanto, es necesaria la realización de pruebas y estudios comparativos entre los algoritmos
existentes para así averiguar cuáles son los más eficientes y cuáles obtienen mejores
resultados. A partir de estos datos se podrá hacer un balance sobre los algoritmos que
15
deberán ser utilizados e informar al usuario sobre esto para que pueda juzgar que algoritmo
se ajusta más a sus necesidades.
En conclusión, es necesario el desarrollo de una herramienta de generación de terrenos para
modelador 3D que tenga resultados visualmente aceptables, una interfaz fácil amigable y una
documentación completa que incluya un estudio sobre las técnicas utilizadas además de un
manual de usuario que facilite su uso.
2.2 Objetivos
Como podemos deducir a partir del apartado anterior, este trabajo tendrá como objetivo
final crear una extensión para modelador 3D. Dicha extensión ha de ser capaz de generar
superficies de terreno 3D realistas y aceptables para el usuario medio. También se ha de
adjuntar la documentación pertinente que facilite la comprensión de la extensión y contenga
un estudio de las distintas técnicas para cumplir su función.
Para alcanzar este objetivo final se deberán satisfacer los siguientes objetivos adicionales:
Codificar al menos dos algoritmos distintos de generación de mallas o terrenos 3D en el
lenguaje nativo del modelador elegido. En el apartado de estado del arte se discutirá sobre la
investigación en marcha y sobre las técnicas empleadas para esto. A continuación, se
procederá a defender la elección de las técnicas seleccionadas para codificar con la
herramienta.
Los terrenos generados necesitarán un suavizado, lo que nos lleva al siguiente objetivo;
codificar al menos dos algoritmos de suavizado de mallas. Se empleará el lenguaje nativo del
modelador 3D elegido. En el estado del arte también se discutirá sobre las técnicas actuales
empleadas y se elegirá cuales serán incorporadas en el proyecto.
Se deberá asimismo codificar en el lenguaje nativo del modelador 3D al menos un algoritmo
de coloración del terreno. También se discutirán en el estado del arte las distintas técnicas
existentes para ello, y se elegirá una para terminar la herramienta de generación de terrenos.
Se creará una interfaz para la herramienta final. Esta interfaz deberá ser amigable y debe
permitir interacción con las distintas variables de los algoritmos previamente mencionados,
aunque no se obligará a que el usuario especifique dichas variables.
Por último, se deberán realizar las pruebas unitarias, funcionales, de rendimiento y de
usabilidad. Todo este procedimiento deberá ser documentado adecuadamente , y los
resultados obtenidos se analizarán en las conclusiones finales de análisis. Se hará especial
énfasis en estudiar en profundidad los datos obtenidos en las pruebas de rendimiento y
usabilidad.
16
3. Estado del Arte
3.1 Gráficos 3D
Antes de hablar de gráficos 3D conviene situarnos. Este trabajo se comprende dentro del
desarrollo de una rama de la ciencia informática o ciencia computacional, concretamente a la
rama de gráficos computacionales. Esta rama se centra en las bases computacionales y
matemáticas de la generación de imágenes.
Esta rama científica nace con la SEAC cuando Russell Kirsch y su equipo utilizaron un
escáner para esta máquina en 1957. La imagen digital de 176x176 píxeles fue utilizada para
mostrar información por la pantalla de un osciloscopio [1].
Más tarde, en la década de los 60, Laboratorios Bell desarrollo las primeras películas
generadas por ordenador y se escribieron varias publicaciones al respecto [2] [3] [4].
En 1960 el desarrollo de la computación grafica continúo principalmente en la universidad
de Utah, donde se fundó la facultad de ciencia computacional y el ARPA.
Años después, en 1968, se fundaba el SIGGRAPH, y en 1974 tuvo lugar la primera
conferencia de gráficos computacionales que este comité organizaría, convirtiéndose en el
lugar predominante para presentar avances en el campo [5].
Durante la siguiente década es constante avance de tecnologías relacionadas propició
numerosos desarrollos particularmente en el ámbito de la animación y sus aplicaciones
cinematográficas. Conviene destacar el framebuffer [6]que desarrollaron los Laboratorios Bell, y
la aplicación de fractales aplicada a este sector desarrollada por Mandelbrot [7] que después
se explicará con más detalle.
En 1980 es cuando la animación 3D aumentó notablemente su presencia en el software
comercial; esta década vio nacer a AutoDesk entre otras empresas, muchas de las cuales han
sido adquiridas a lo largo de los años por la antes mencionada, formando ahora parte de esta
compañía. [8].
Durante los últimos años se han vivido numerosos avances en este campo, desde películas
hechas enteramente con imágenes generadas por computador hasta los modeladores 3D que
se utilizarán en este trabajo.
Se suele dividir el campo de computación gráfica en tres sub-campos distintos:
• Geometría: Estudia la representación de objetos tridimensionales en un espacio digital discreto. Normalmente se emplean superficies bidimensionales para realizar dichas
representaciones, es decir mallas poligonales. Las mallas se conocen como superficies
17
Lagrangianas, pero actualmente se estudian también las superficies Eulerianas , sensibles a
cambios, especialmente a los fluidos.
• Animación: Estudia las representaciones graficas que se mueven o se deforman en el
tiempo. Se ha trabajado sobre todo usando modelos de datos paramétricos, pero en los
últimos años la simulación física ha ganado mucha popularidad en este campo.
• Renderización: Renderizar es generar imágenes a partir de un modelo. Básicamente es
simular la iluminación encima de un modelo y representar sus texturas.
El sub-campo en el que se sitúa la mayor parte de este proyecto es el de la geometría, ya que
para generar los terrenos se utilizan mallas 2D y se hace especial hincapié en las matemáticas
necesarias para asignar las posiciones de los puntos de estas, consiguiendo así imitar la
topografía real. Sin embargo, para la generación final de imágenes a comparar por usuarios y
algunos ejemplos se renderizan las texturas asignadas mediante un sencillo algoritmo de
coloración, por tanto, el proyecto toca parte del sub-campo de renderización también,
aunque no se estudia con detenimiento esta parte.
Dado que estas posiciones se sitúan en un espacio tridimensional, se estará hablando de
gráficos 3D.
Generar gráficos 3D consta de tres fases básicas:
• Modelado: Consiste en darle forma al objeto posicionando los vértices de la malla. Esto
se puede hacer colocándolos “manualmente” de manera procedural, mediante una
simulación física, o escaneando objetos reales. Este trabajo se centra en esta fase de
creación de gráficos 3D.
• Animación: Los objetos deben estar en una escena antes de poder real izar el
renderizado, esto es necesario para definir el espacio en el que están los objetos, su
tamaño y su distancia con otros posibles objetos de la escena. La animación trata de
describir la posición, tamaño y diversas características a lo largo del tiempo. Para ello se
utilizan fotogramas, clave cinemática inversa o captura de movimiento, muchas veces se
combinan estas opciones. También se utiliza la simulación física para las animaciones,
siendo de hecho cada vez más popular.
• Renderizado: Se trata de convertir un modelo en una imagen realista o con fines artísticos simulando la luz en la escena. Existe una gran cantidad de software que se
encarga de realizar este proceso, normalmente integrado en la tarjeta gráfica del
ordenador. Este proceso incluye además un paso de proyección 3D pues transforma una
escena tridimensional en una imagen bidimensional.
Una vez situados en el campo de los gráficos 3D en el que se centra el trabajo, se procede a
examinar en el siguiente punto el estado del modelado 3D.
3.2 Modelado 3D
Como ya se ha mencionado anteriormente, el modelado 3D es el proceso por el cual se crea
un objeto o modelo tridimensional que puede ser representado en una imagen 2D tras el
proceso de renderizado o utilizando por una impresora 3D para crear un objeto físico.
18
Hablemos de las características de los modelos. Los modelos representan un objeto físico
usando puntos en el espacio conectados mediante líneas, triángulos, superficies, curvas y
otras formas. Siendo un modelo una colección de datos, estos pueden ser creados manual o
proceduralmente, o bien mediante un escaneado; también es posible generarlos combinando
estas opciones. Este trabajo se basa en el método del modelado procedural.
La mayoría de modelos 3D se pueden clasificar en dos tipos, sólidos y mallados. Los sólidos
definen el volumen del objeto que representan, son realistas, pero más difíciles de construir,
los mallados tan solo representan la superficie y son los más utilizados por su simplicidad.
Existe un gran número de modeladores disponibles actualmente en el mercado.
En este apartado se procederá a analizar los más populares y se determinará cual se uti l izará
para el trabajo.
• Blender: Este modelador es multiplataforma, es decir, se puede ejecutar en distintos
sistemas operativos. Dispone de una gran variedad de primitivas geométricas para utilizar
y cuenta con la mayoría de herramientas de animación existentes. Tiene un motor de
físicas propio y ofrece diversas opciones de renderizado tanto propias como externas
libres. Utiliza Python para los scripts con los que controlar las escenas o la multitud de
opciones que ofrece este modelador o generar extensiones. Una de las ventajas de utilizar
este modelador es que es de código libre y es gratuito ya que su licencia es GNU GPL.
Los modificadores de este modelador son apilables, por lo que las transformaciones
sobre las mallas no son destructivas [9].
• Sketch Up: Este software ha pasado por muchas manos, incluidas las de Google, pero
actualmente pertenece a Trimble. Se trata de un software propietario, por lo que su
código fuente no es accesible y no se puede modificar. Cuenta con una versión de uso
gratuita, pero es la versión profesional la que más características ofrece y esta necesita
licencia. Facilita un entorno de programación para crear extensiones y controlar diversos
aspectos del programa que se vale del lenguaje de programación Ruby [10]. Cuenta con
una librería de código abierto en la que los usuarios pueden subir y descargar modelos
llamada “3D Warehouse” [11].
• Solid Works: Esta aplicación es un modelador software tanto 2D como 3D pero se
centra sobre todo en los aspectos más técnicos de las ingenierías, es utilizado para
modelar herramientas sobretodo. Es comúnmente utilizado por ingenieros industriales,
eléctricos… Acepta dlls como plug-ins, y estos pueden estar programados en cualquier
lenguaje que soporte COM para crear archivos .exe y .dll. Es útil para los trabajos de las
ingenieras previamente mencionadas porque permite diseñar partes por separado y
después juntarlas de manera muy sencilla [12].
• AutoCAD: Este modelador de software propietario ofrece diversas funcionalidades,
permite navegar cómodamente alrededor de los modelos, importar y exportar modelos a
PDF (aunque a veces esto provoca errores menores), dispone de una app para móvil y
ofrece muchas facilidades para compartir modelos online. Cuenta además con un
renderizador de 3ds Max y tiene opciones para animaciones cinemáticas. Permite
extensiones programadas en C++ y dispone de un almacén para estas [13].
• Maya: Es un modelador 3D que fue desarrollado por Alias Systems Corporation pero
que actualmente pertenece a AutoDesk. Dispone de una licencia de prueba con la
19
duración de un mes, después de este hay que comprar licencias anuales para la utilización
del programa. Tiene una arquitectura gráfica basada en nodos. También tiene numerosos
componentes muy útiles, para distintas simulaciones, sistemas de partículas o control de
cámara, por ejemplo. Cuenta con un lenguaje de programación embebido parecido a Perl
con el que se pueden implementar plug-ins y controlar distintas funcionalidades del
programa [14].
• 3DS Max: Este software también pertenece a AutoDesk. También tiene un lenguaje de programación embebido, este es llamado MAXScript y también permite crear plug-ins así
como controlar las funcionalidades del programa. Su licencia funciona de manera idéntica
a la de MAYA. Entre las numerosas funcionalidades que ofrece están la asignación de
texturas y edición de estas de manera sencilla, un explorador de escena muy cómodo y
muchas facilidades para crear animaciones [15].
• Inventor: Otro software propiedad de AutoDesk. Su tipo de licencia es propietario.
Utiliza ShapeManager, que es el núcleo de modelado geométrico de esta compañía . Este
modelador está orientado a trabajos de ingeniería, se centra en el mismo tipo de tareas
que el SolidWorks y sus características más destacables son la posibilidad de diseño por
partes y la interoperabilidad de estas. El lenguaje de programación utilizado para crear
extensiones para este modelador es Visual Basic [16].
• Tinkercad: Modelador software basado en la web, es muy sencillo de utilizar y
normalmente es el recomendado para empezar a usar este tipo de programas. Se puede
insertar geometría directamente mediante JavaScript y su uso es gratuito. Fue adquirido
por AutoDesk en 2013 [17].
• ZBrush: Este modelador que utiliza técnicas 3D y 2.5D para el modelado texturizado y
pintado digital.es propiedad de Pixologic. Emplea pixols, como alternativa a los voxels.
Tiene renderizado incorporado y una herramienta de suavizado para todo tipo de mallas.
Usa un lenguaje de programación embebido llamado Zscripts con el que generar
extensiones y controlar distintos aspectos del programa [18].
• Cinema 4D: modelador 3D que pertenece a MAXON Computer GMbH, una empresa alemana. Su licencia de tipo propietario. Tiene herramientas para modelado procedural
animación iluminación texturización y renderizado. Cuenta con un lenguaje de
programación propio llamado COFFEE con el que se pueden crear extensiones para el
programa [19].
De entre los modeladores estudiados se ha tomado la decisión de utilizar Blender por
distintos motivos. El primero sería su licencia, es un programa completamente gratuito y de
código abierto que te permite todo tipo de libertad, por lo que no genera ningún sobrecoste
o riesgo. El segundo motivo es su funcionalidad, ya que Blender proporciona una interfaz
sencilla de utilizar y todos los componentes necesarios para este proyecto. Además, utilizar
Blender facilitará el desarrollo del proyecto gracias a que cuenta con una comunidad muy
activa y cualquier tropiezo que pueda haber durante el proyecto estará contemplado en los
foros de Blender. Por último, hago esta elección porque ya estoy familiarizado con Blender y
el lenguaje que utilizan para generar scripts y extensiones, Python, aprender un nuevo
lenguaje de programación habría provocado un coste temporal adicional.
3.3 Generación de terreno
20
Para el modelado de paisajes realistas se busca tanto eficiencia en la programación como la
mayor similitud posible con la naturaleza, y por tanto no es de extrañar que se hayan
desarrollado distintas técnicas para obtener los resultados deseados, tan cercanos a la realidad
como sea posible.
El modelado de paisajes de manera procedural ha sido utilizado en numerosas aplicaciones,
normalmente combinando las técnicas de este apartado y las del siguiente. Aquí nos
centramos en un uso más moderno ya que el enfoque es generar terrenos aleatorios y
anteriormente se utilizaban técnicas de generación procedural para ahorrar espacio en
memoria. Esto se hacía creando una lista de semillas y generando terrenos no
verdaderamente aleatorios. Parece conveniente mencionar algunas de las aplicaciones de la
generación procedural de terrenos aleatorios.
En los videojuegos actuales, normalmente, parte del escenario incluye terrenos generados
proceduralmente, sobre todo si se trata de una ambientación alienígena, donde no se
utilizaría la topografía terrestre o si faltan recursos humanos para diseñarlos a mano. Es el
caso de este ejemplo, Planet Explorers (Figura 1), un RPG lanzado en 2014. Otro ejemplo
de este estilo seria Starforge (Figura 2), juego lanzado en 2014 también.
Fi gura 1 . P lanet Explorers ( 2014 )
Fi gura 2 . S tarforge ( 2014 )
21
La utilización de este tipo de técnicas no queda relegada a un uso únicamente en los
videojuegos, también se utiliza en el campo del cine. Pixar suele introducir esta técnica para
crear sus decorados, como en el caso de la película El buen dinosaurio (Figura 3.
En este apartado se analizarán las técnicas más utilizadas o estudiadas para el modelado de
paisajes de manera procedural.
El pionero en la generación de terreno procedural fue Mandelbrot que apuntó en su libro
“The fractal geometry of nature” [7] que al representar movimientos Brownianos fractales de dos
variables se obtenían perfiles montañosos muy realistas. Desde entonces se han desarrollado
varias técnicas basadas en este fenómeno, las más importantes serán citadas a continuación.
Proceso de Poisson
Esta fue la técnica utilizada por Mandelbrot [7] originalmente, se puede utilizar para generar
paisajes tanto en planos como esferas.
Consiste aplicar distribuciones gaussianas aleatorias a una esfera o plano distribuido con
intervalos de Poisson [20], de modo que la red resultante obtenida es una superficie
Browniana.
El problema principal de esta técnica es la cantidad de operaciones que tiene que realizar el
procesador, haciendo que el proceso sea demasiado lento. Dadas sus limitaciones no se
utilizará este método en el trabajo.
Filtrado de Fourier
Esta técnica consiste en aplicar una transformada de Fourier [21] a una distribución
Gaussiana, multiplicándola en una frecuencia espacial con un filtro apropiado para después
interpretar la transformada inversa de Fourier del resultado como un mapa de alturas. Stein
publicó un estudio basado en este método con un enfoque puramente matemático [22].
Basándose en este trabajo, Kroese y Botev generaron un algoritmo para realizar superficies
Brownianas de manera eficiente [23].
Fi gura 3 . The Good Dinosaur ( 2015)
22
Se ha decidido estudiar esta técnica y utilizarla para el plug-in, debido a los prometedores
resultados de las publicaciones mencionadas.
Síntesis de ruido
Se entiende por síntesis de ruido a la adición iterativa de señales cuya transformada de
Fourier está limitada a un valor aleatorio cada una teniendo una amplitud aleatoriamente
variable (ruido). Musgrave [24] [25], Saupe [26]y Gardner [27] han realizado publicaciones
basadas en estas técnicas bajo diferentes enfoques.
Esta técnica no se utilizará debido al tiempo limitado del proyecto y a que ya existe un plug-in
en el modelador elegido para trabajar que trabaja diversos enfoques de esta técnica y se
pretende generar una herramienta nueva y distinta.
Spectra l synthesi s
Esta técnica simula ruido rosa sumando varias octavas a modo de capa; estas tienen toda su
energía espectral concentrada en una única frecuencia f. Por cada capa añadida se dobla la
frecuencia del ruido mientras que la amplitud se calcula elevando la persistencia (0.5 para
simular ruido rosa) al octavo número empezando por 0 en la frecuencia más baja.
Las octavas se calculan rellenando con números pseudo-aleatorios un espacio equidistante y
calculando los valores restantes mediante interpolación [28].
Este método fue descartado debido a sus similitudes con la síntesis de ruido y el límite
temporal del proyecto.
Los métodos que se explican a continuación también son de carácter fractal, pero no
cumplen las características estadísticas necesarias como para que las mallas generadas se
clasifiquen como superficies Brownianas, aun así, generan resultados aceptablemente
realistas.
Desplazami ento aleatori o del punto medio
Se trata de un algoritmo muy sencillo para la generación de fractales, que consiste en dividir
por la mitad un segmento y elevar el punto medio generado con una altura aleatoria. Estos
pasos se repetirán hasta el infinito con los sub-segmentos resultantes, para saber más sobre
estas estructuras se puede consultar el libro “Estructuras Fractales y Sus Aplicaciones” [29], muy
clarificador.
Existen varias maneras de aplicar este algoritmo para la generación de terreno procedural.
Fue originalmente introducido con este objetivo por Fournier, Fussell y Carpenter [30]
creando el llamado diamon square algorithm.
Se ha decidido profundizar en esta técnica debido a la sencillez del código a generar y a los
resultados aceptables que genera, se desea estudiar la diferencia en cuanto a eficiencia con el
método previamente seleccionado.
Diagramas de Voronoi
23
Stephen Worley describió como utilizar estos diagramas para la generación de terreno
procedural [31] y Jacob Olsen [28] terminó de desarrollar un algoritmo valido en 2004
utilizando coeficientes adecuados para generar terreno montañoso
El algoritmo consiste en dividir un mapa en regiones y después colocar aleatoriamente
puntos de control en cada región, para cada celda del mapa se calcula un conjunto de valores
dn; donde n = 1, 2, 3… de manera que d1 es la distancia al punto de control más cercano d2
es al siguiente más cercano etc., y después se le da una altura a cada región de forma:
Ecuaci ón 1 . Algoritmo del cá lculo de la a l tura a partir de puntos de control
Con coeficientes seleccionados en función del resultado esperado, Olsen eligió c 1=-1 c 2=1 y
el resto de coeficientes lo dejó a 0 para generar montañas.
Este algoritmo no genera unos resultados comparables a los algoritmos mencionados, pero
su autor hace hincapié en que presentan unas características muy útiles que pueden ayudar a
reducir los comportamientos homogéneos que a veces otros algoritmos pueden generar,
siendo una combinación de este método con otros algo que genera resultados muy buenos y
sobre los que se tiene mayor control, pero se ha considerado que el consumo de recursos es
demasiado grande como para incluirlo en este proyecto.
Como se ha mencionado con anterioridad, muchos de estos algoritmos t ienen
comportamientos homogéneos que les roban naturalidad y además los terrenos generados
parecen “crudos”, demasiado escarpados, tal como se aprecia en la Figura 4. Esto es debido
a que los paisajes naturales se deforman con los años debido a la erosión producida por
diversas fuerzas de la naturaleza. Actualmente se está trabajando en diversos modelos que
simulan este tipo de comportamientos sobre terrenos [32]. Un ejemplo de terreno al que se le
han aplicado algoritmos de erosión puede verse en la Figura 5.
Fi gura 4 . Terreno crudo.
24
Dichas técnicas se analizarán en el siguiente apartado.
3.4 Algoritmos de simulación natural de terreno:
Erosión hídrica y alzamiento tectóni co
Esta técnica [32] recoge como dato de entrada un mapa de velocidades de alzamiento
tectónicos definidas por el usuario como una imagen en escala de grises. El algoritmo tiene
dos pasos principales: simulación de erosión sobre un gráfico plano que contiene
información sobre la elevación y el flujo del agua y la conversión de este grafo en un mapa de
alturas. El primer paso se desglosa así: a partir del dominio de entrada se inicializa el grafico
de flujos como un plano aleatorio definido por la triangularización de puntos uniformemente
distribuidos por este dominio. El valor de altura de todos los puntos se iniciali za a 0.
Después de esto, se itera la ecuación del caudal de flujos hasta obtener una información de
alturas plausible. Esto se hace mediante la repetición de los siguientes pasos hasta que el
resultado converja:
1- Se extrae un conjunto de árboles de flujos orientados de acuerdo con las alturas
actuales de los nodos que definen el grafico mencionado anteriormente.
2- Se modifica el conjunto de árboles de flujos mediante el añadido de arcos o flujos
entre los lagos creados.
3- Se calcula el área de drenaje de cada nodo (cuánta agua pasara por él) calculándose de
rama a raíz.
4- Se resuelve la ecuación del caudal de los flujos y se recalculan las alturas del dominio.
Este proceso iterativo termina cuando la modificación de las alturas está por debajo de un
umbral dado.
Una vez finalizado este proceso se convierte el grafico en un modelo de terreno, creando y
renderizando una malla uniendo los puntos generados.
Fi gura 5 . Terreno tras aplicar a lgori tmo de erosión
25
Para este trabajo de ha decidido usar esta técnica, ligeramente modificada, en vez de una
imagen en escala de grises como datos de entrada se recogerá un mapa generado con alguna
de las técnicas seleccionadas anteriormente, por tanto, en vez de hacer una triangulación de
un dominio, se utilizará una malla cuadrada y los vecindarios clásicos. Esta decisión ha sido
tomada porque existe interés por las técnicas nuevas, esta se desarrolló en 2016, pero los
resultados deben poder compararse con las demás técnicas elegidas y el tiempo para la
realización de este proyecto es limitado.
Este método podría clasificarse como un método basado en hidrología [33], aunque es
innovador el hecho de utilizar levantamientos tectónicos. Hay distintos métodos publicados
basados en esta ciencia. Además de esto hay 2 tipos de métodos más que han sido los más
utilizados estos últimos años de manera regular, erosión térmica y erosión fluvial.
Erosión térmica
Llamamos erosión térmica a cualquier proceso que consiste en que un punto de mayor
altitud pierde masa que acaba depositada en un punto de menor altitud. Es básicamente un
proceso de suavizado sencillo y rápido. Se ha seleccionado el algoritmo detallado por Olsen
[28], sin las modificaciones en los vecindarios, para implementar en este proyecto a causa de
los resultados observados y la sencillez de su programación. El algoritmo sigue estos pasos
por iteración en cada punto del mapa de alturas:
1- Se comprueban las diferencias de alturas entre el punto observado y su vecindario.
2- Si la diferencia de altura con algunos de los vecinos supera el valor umbral , se
distribuye el material de forma equitativa entre los vecinos cuya distancia es mayor
que la distancia umbral, sin que el intercambio de material provoque una diferencia
de altura totalmente contraria a la anterior.
Erosión fluvial
Consiste en simular que aparece agua en forma de lluvia en los vértices del mapa de altura,
que esta agua absorba parte de la altura del vértice, que representa la masa en forma de
sedimento y mover esa masa a vértices vecinos más bajos. En este trabajo se implementará la
versión definida por Benes y Forsbach [34]. El algoritmo que representa la erosión fluvia l se
puede representar en cuatro sencillos pasos:
1. Aparece agua en los vértices.
2. El agua absorbe sedimento.
3. El agua se desplaza.
4. El agua deposita el sedimento en los vértices designados y parte de esta se evapora.
En el apartado de pruebas se hará un análisis más exhaustivo de estos métodos y se
presentarán conclusiones obtenidas a partir de los mismos.
Se ha considerado importante utilizar al menos una versión de cada una de las simulaciones
físicas más importantes en este trabajo con el fin de estudiarlas. Pese a que existe una gran
similitud entre la erosión fluvial y la erosión hídrica se han separado como dos simulaciones
distintas por dos motivos: el algoritmo de erosión hídrica seleccionado funciona en conjun to
26
con el de levantamientos tectónicos y la erosión hídrica hace un hincapié mucho mayor en
las estructuras formadas por el agua, es decir, ríos y lagos.
3.5 Algoritmos de coloración o texturizado procedural
En el campo de investigación sobre terrenos procedurales se ha discutido ampliamente el
tema del renderizado sobre los terrenos generados, pero no es realmente eso lo que se trata
en este apartado del trabajo, ya que el estudio de estas técnicas y su implementación bien
podrían ser otro trabajo en su completitud. Lo que se discute aquí son las técnicas para
generar el mapeado de texturas [35] [36] a aplicar sobre el terreno, esto se pretende hacer de
manera automática mediante script, con lo que se podría llamar mapeado procedural de
texturas. En este apartado se discuten las técnicas más utilizadas. Estás texturas serán
renderizadas con las herramientas ya incrustadas en el modelador.
Mapeado de texturas basado en altura
Es un método simple en el que se selecciona una textura dependiendo del valor de a ltura de
los vértices de esa parte del terreno, por ejemplo, una textura de agua para las partes más
bajas, después arena, hierba, roca y nieve en sentido ascendente. Sin embargo, este método
presenta un grave problema, y es que, si no se modifica el conjunto predefinido de texturas,
la transición entre algunas texturas puede ser abrupta. Para evitar esto, se utiliza una mezcla
de estas texturas [37] en las alturas cercanas al umbral entre dos texturas. Dicha mezcla se
realiza usando una interpolación lineal.
Mapeado de texturas basado en pendiente
El mapeado basado en alturas, funciona bien, pero siendo realistas, la altura no debería ser el
único parámetro a tener en cuenta. Es poco probable que crezca hierba en un risco vertical,
por poner un ejemplo, es por esto que existe el mapeado de texturas basado en pendiente, se
calcula la pendiente de la superficie a texturizar y se aplica una textura u otra dependiendo de
si supera cierto valor umbral. Este método presenta un problema parecido al mapeado
basado en alturas, cuando hay un cambio estando la inclinación justo en el valor umbral, el
cambio puede ser muy brusco, así que en estos casos se mezclan las dos texturas.
Atlas de texturas
Consiste en crear una textura a partir de otras siguiendo criterios similares a los descritos en
los dos apartados anteriores, esto tiene la ventaja de que consume mucha menos memoria a l
aplicar una sola textura al terreno y no un conjunto de texturas.
Es necesario destacar en este apartado la importancia de la iluminación para el renderizado.
No importa como este hecho el mapeado de texturas si la iluminación de la escena no parece
natural.
Se ha decidido utilizar un algoritmo que utilice las características del mapeado de texturas
basado en altura y el mapeado de texturas basado en pendiente para presentar unos
resultados visuales lo más agradables posibles.
27
En resumen, se han decidido implementar dos técnicas de generación procedural de terreno
basadas en fractales y tres técnicas de suavizado, basadas en simulación física. Solo se ha
decidido utilizar un algoritmo de mapeado de texturas, porque las diferencias que se
pretenden estudiar son las de los algoritmos de generación de terreno procedural, por tanto,
se deberían observar todos los resultados visuales con un renderizado similar.
28
4. Especificación:
Una vez hecho el estudio sobre las tecnologías actuales, trabajos, herramientas he
investigaciones similares. Procedo a explicar algo más extensamente el planteamiento del
problema. Lo que se pretende conseguir en este proyecto es una extensión para Blender que
sea innovadora, que tenga una interfaz amigable y generar una documentación completa
sobre el proceso y los resultados obtenidos. Por tanto, debemos definir, que queremos que
haga la extensión, como debemos programar esta y que aspectos de los resultados deben ser
analizados.
Todo trabajo de ingeniería, para un desarrollo adecuado debe hacer un análisis de requisitos,
una especificación del sistema, una planificación temporal y una estimación de costes
económicos y un análisis de los riesgos que implica realizar dicho proyecto. En este punto
del trabajo se explica porque existe esta necesidad y se detalla cada uno de los ítems
mencionados.
4.1 Análisis de requisitos
Es necesario establecer unos requisitos que definan el que y el como del proyecto para poder
evaluar en la fase final del trabajo si se ha logrado lo que se quería.
Normalmente la lista de requisitos se establece en una reunión con el cliente que encarga el
trabajo, en este caso al ser un trabajo académico los requisitos se extraen del apartado de
objetivos y son revisados por un profesor o varios.
Estos requisitos deben cumplirse durante la ejecución del proyecto o se debe justificar
debidamente porque no se han cumplido. Los requisitos también sirven como guía durante el
desarrollo del proyecto. A continuación, se expone una lista de los requisitos de este
proyecto, separados por funcionales y no funcionales, esto es como separar lo que se quiere
hacer de cómo se quiere hacer.
No funcionales
RNF 01 – Documentación y justificación de las decisiones.
Durante el desarrollo del proyecto se deberán documentar y justificar las decisiones tomadas,
a fin de implementar eficientemente la extensión.
RNF 02 – Evaluación de las técnicas de generación.
Existen distintas técnicas de generación procedural de terrenos. Se debe hacer un estudio
sobre estas, analizarlas y decidir cuales utilizar.
RNF 03 – Análisis de resultados.
29
Con la extensión del modelador terminada se debe realizar un análisis de la calidad de los
resultados de cada algoritmo o combinación de algoritmos he incluirlo en la documentación
de la manera pertinente.
RNF 04 – Inspección Externa.
Para complementar el análisis de la calidad de los resultados se deben generar unas encuestas
que se facilitarán a distintos usuarios, se recogerán los datos resultantes, se analizarán y se
expondrán en un documento adecuado.
RNF 05 – Calidad de código.
El código generado debe ser fácil de entender y debe estar debidamente documentado, es
decir, tiene que tener una calidad mínima.
RNF 06 – Videos de demostración.
Se deben generar videos para demostrar la funcionalidad de la herramienta; servirán tanto
para explicar a los usuarios como utilizar la herramienta como para mostrar el trabajo
realizado.
RNF 07 – Análisis de eficiencia.
Al margen del análisis de los resultados o de efectividad se debe hace un análisis de la
eficiencia de cada algoritmo. Este análisis debe documentarse debidamente y relacionarse con
el de calidad para establecer una conclusión final sobre la calidad de los algori tmos.
RNF 08 – Manual de Usuario.
Ha de generarse un manual de usuario junto con la documentación. Este manual debe
explicar todas las funcionalidades de la herramienta de la manera más clara y concisa posible.
Funcionales
RF 01 – Terrenos.
El sistema debe ser capaz de crear mallas de dos dimensiones en el editor del modelador,
estas mallas deben ser terrenos lo más realistas posibles.
RF 02 – Accesibilidad Terrenos.
Se debe poder generar el terreno de la manera más simple e intuitiva posible. Para esto, es
necesaria la programación de una I.U. muy amigable para el usuario.
RF 03 – Comparabilidad de terrenos.
Deben implementarse distintas técnicas de generación de terreno a fin de poder comparar los
resultados de ambas y generar los análisis mencionados anteriormente.
RF 04 – Compatibilidad de suavizado.
30
Se deben poder aplicar las funciones de suavizado sobre cualquiera de los distintos terrenos
que se pueden generar.
RF 05 – Comparabilidad de suavizado.
Deben codificarse al menos dos técnicas de suavizado distintas, lo que tiene como objetivo
poder comparar los resultados de ambas y generar los análisis mencionados anteriormente.
RF 06 – Texturizado.
Se debe poder aplicar una función de texturizado o coloreado sobre cualquiera de los
distintos terrenos que se pueden generar. Esto añadirá detalle visual, que será más atractivo
para el usuario. También se pretende estudiar si tendría efecto sobre el análisis externo.
RF 07 – Accesibilidad a funciones de modificación de terrenos.
La función de suavizado y texturizado o coloreado deben ser sencillas de aplicar. Se deben
tener en cuenta estas funciones y sus parámetros a la hora de generar la I.U.
4.2 Especificación del sistema
Como se mencionó en el apartado anterior, el desarrollo de este proyecto se realizará con el
modelador Blender. Concretamente la versión 2.77 que es la última versión estable del
programa. Al margen de la memoria, el proyecto se realizará en su totalidad en el entorno de
este modelador, pues ofrece todas las herramientas necesarias, entre estas una API de
Python, que es donde se generará el código de la extensión.
El plug-in propiamente dicho, será una pestaña de la barra de herramientas que tiene Blender
en su tipo de editor: puerto de vista 3D, con botones para cada una de las funcionalidades
que se han establecido como necesarias en el apartado anterior.
El botón para cada una de las funcionalidades tendrá un desplegable que se activará cuando
se pulse sobre él. Este desplegable contendrá espacios para introducir los diversos
parámetros de la función deseada, estos espacios ya tendrán introducido un valor por defecto
que se podrá cambiar. Además, tendrá un botón para confirmar parámetros y lanzar la
función. Si la función se debe realizar sobre una malla ya creada, bastara con seleccionar
dicha malla en el puerto de vista antes de darle al botón de confirmación.
4.3 Planificación y estimación de costes
En este apartado se especifican las tareas planificadas que componen este proyecto y se
explica cómo se han estimado sus costes temporales y económicos. Esta planificación
temporal se ha realizado de forma distinta a la planificación presentada en el anteproyecto.
Estimaci ón temporal
31
La estimación temporal presentada en el anteproyecto fue realizada solo con la estimación de
una persona, sin que esta sea experta en el campo del proyecto. La estimación temporal de
este proyecto se ha obtenido pidiendo a cuatro expertos una estimación temporal. Esta
estimación temporal está compuesta de un tiempo pesimista, un tiempo muy probable y un
tiempo optimista para cada una de las tareas en las que se ha dividido el proyecto. La
estimación para cada tarea por parte de los expertos se ha calculado mediante la fórmula:
Ecuaci ón 2 . Cáculo media beta
La media de las cuatro estimaciones para la tarea es la duración estimada en días que se ha
contemplado en la planificación del proyecto.
Ref. Tarea Experto 1 Experto 2 Experto 3 Experto 4 Estimación σ2
1 Documentación
1.1 Estudio de algoritmos existentes 4,17 8,67 6,27 8,67 6,94 0,56
1.2 Estudio de los modeladores existentes 2,33 3,50 2,59 3,50 2,98 0,04
1.3 Selección de algoritmos a utilizar 1,17 1,00 1,00 1,33 1,12 0,00
1.4 Selección de modeladores a utilizar 1,17 1,00 1,00 1,33 1,12 0,00
2 Análisis y especificación
2.1 Definición de requisitos 1,00 3,50 2,80 4,20 2,88 0,28
2.2 Especificación del sistema 3,17 3,50 3,67 3,88 3,55 0,01
2.3 Análisis de riesgos 2,17 1,00 2,13 1,67 1,74 0,04
2.4 Casos de uso 5,00 5,17 5,98 5,17 5,33 0,03
2.5 Diagramas de actividad 5,00 5,50 6,50 5,50 5,63 0,06
2.6 Modelo de datos 5,00 4,50 5,00 6,00 5,13 0,06
3 Diseño
3.1 Diseño interfaz de usuario 1,83 4,50 3,80 4,00 3,53 0,20
3.2 Diagramas de clases 3,17 7,17 6,70 5,00 5,51 0,44
3.3 Diagramas de secuencia 4,00 7,17 8,20 6,60 6,49 0,49
4 Implementacion
4.1 Implementación de algoritmos de generación de terreno 10,50 8,83 9,00 9,33 9,42 0,08
4.2 Implementación de algoritmos de suavizado de terreno 4,50 7,83 6,67 8,30 6,83 0,40
4.3 Implementacion del algoritmo de texturizado de terreno 5,17 4,17 4,17 4,17 4,42 0,03
4.4 Implementación de el I.U. 3,00 5,50 4,00 6,12 4,66 0,27
4.5 Implementación de la extensión y unificación de código. 4,17 8,67 9,30 6,67 7,20 0,73
5 Ejecución de pruebas y análisis de resultados
5.1 Pruebas unitarias 3,00 1,00 2,00 3,33 2,33 0,11
5.2 Pruebas de integración 4,17 1,67 2,55 2,80 2,80 0,17
5.3 Pruebas de rendimiento 2,00 1,00 3,00 2,33 2,08 0,11
5.3.1 Pruebas de eficiencia de los algoritmos de generación 3,33 1,00 3,00 2,00 2,33 0,15
5.3.2 Pruebas de eficiencia de los algoritmos de suavizado 3,33 1,00 3,00 2,00 2,33 0,15
5.3.3 Pruebas de eficiencia de los algoritmos de texturizado. 3,33 1,00 3,00 2,00 2,33 0,15
5.4 Pruebas de usabilidad 3,33 1,00 3,00 2,00 2,33 0,15
6 Elaboración de la memoria 20,83 25,83 31,67 29,80 27,03 3,26
TOTAL 109,83 124,67 140,00 137,69 128,04 8,00
Fi gura 6 . Plani ficación estimada
Con la estimación utilizando la técnica de la media-beta no podemos estar seguros de cuál es
la probabilidad real de que el proyecto acabe en ese tiempo, pero sabemos que el tiempo del
proyecto sigue una distribución normal, así que, habiendo calculado la varianza mediante la
fórmula:
32
Ecuaci ón 3 . Varianza
Podemos añadir un colchón de seguridad para asegurar una probabilidad del 95% utilizando
esta fórmula:
Ecuaci ón 4 . Colchón de seguridad con probabilidad a l 95%
Añadiendo el colchón calculado, nos queda una estimación de 133 días.
Se puede observar el diagrama Gantt que generan las tareas con sus dependencias, aunque
como solo se cuenta con un trabajador al final no hay ninguna tarea paralelizable real, sino
que se puede variar de tarea en caso de que el estudiante se atasque en una.
33
Fi gura 7 . Diagrama de Gantt
34
Estimación de costes:
Una vez estimado el coste temporal del proyecto es posible hacer una estimación del coste
económico basándose en que recursos se van a utilizar, cuánto cuestan y durante qué
tiempo se van a utilizar. Los recursos a utilizar en un proyecto informático son el equipo,
las licencias software, los recursos humanos y los gastos indirectos.
Para este proyecto se ha utilizado solamente un Asus A55A. En el momento de su compra
costó alrededor de 700 euros. La vida útil de este aparato está estimada en 4 años. Se utiliza
durante los 128 días que dura el proyecto, es decir, un 8,7% de su vida útil así que se
amortizan 60’9 euros.
Se planea utilizar software libre en este proyecto así que no se estima ningún coste de
licencias.
Para realizar este proyecto solo es necesario un programador, en este caso el estudiante que
está realizando el proyecto. Se estiman 128 días de trabajo y el sueldo anual de un
programador es de 16970 euros así que el coste estimado en personal es de 5970 euros.
A estos costes se le debe añadir un 20% de su valor destinado a cubrir los gastos indirectos.
El total de la estimación de costes queda así:
Coste del equipo informático 60’9 euros Coste del personal 5970 euros
Gastos indirectos 1220 euros
Estimación final 7250’9 euros Tabl a 1 . Estimación de costes
4.4 Análisis de riesgos:
Un proyecto de ingeniería debe tener un análisis de riesgos que puedan hacer que el
proyecto fracase. En este apartado se evalúan los riesgos identificados teniendo en cuenta
la probabilidad de que ocurran y el impacto que supondrían en el proyecto, el impacto esta
evaluado del 1 al 10.
ID Riesgo Probabilidad Impacto
1 Aparecen tareas no planificadas 10% 5
2 El esfuerzo es mayor que el estimado 20% 5 3 Una tarea genera retrasos en las tareas dependientes 90% 7
4 El aprendizaje sobre nuevas herramientas o lenguajes genera retrasos
70% 9
5 Los requisitos están mal definidos y redefinirlos cambia el coste del proyecto
10% 9
6 El personal trabaja más lento de lo esperado 10% 7
7 No se pueden implementar los métodos elegidos en el modelador escogido.
20% 9
8 Se debe rehacer la interfaz de usuario tras las pruebas de 40% 3
35
usabilidad
9 El aprendizaje sobre métodos de generación de terreno lleva más de lo esperado
50% 2
10 El trabajo en un entorno de software desconocido genera problemas imprevistos
70% 7
Tabl a 2 . Anál isi s de riesgos con probabil idad e impacto
De entre los riesgos evaluados se eligen los más probables he impactantes y se realizan
planes de contingencia y contención para ellos.
Mitigación:
Esta fase consiste en idear planes que minimicen la probabilidad de los riesgos en el
proyecto
ID riesgo Plan de mitigación
3 Durante la recogida de información se identifican los posibles problemas futuros y se experimenta en este campo mientras se busca información sobre otros métodos de generación.
4 Se elige un modelador 3D con el que se esté familiarizado, en este caso Blender.
10 Se elige un modelador 3D con el que se esté familiarizado, en este caso Blender.
Tabl a 3 . P lanes de mi tigación para impacto a lt o
Contingenci a :
Esta fase consiste en generar planes que minimicen el impacto de un riesgo en caso de que
el plan de mitigación no haya funcionado. Dado que la probabilidad de los riesgos 4 y 10 se
ha reducido a 0 con la mitigación solo se genera un plan de contingencia para el riesgo 3.
ID Riesgo Plan de contingencia
3
Se reducirá el tiempo empleado en tareas menos importantes, aumentando el tiempo dedicado a las tareas con retrasos. De esta manera se reducirá la calidad del proyecto de forma mínima y se respetarán los plazos.
Tabl a 4 . Plan de cont ingencia para impacto a l to
36
5. Desarrollo del proyecto.
En este capítulo se expone cómo se desarrolla el proyecto. Se explicará el desarrollo del
análisis, la fase de diseño de la extensión y se detallará cómo se ha realizado la
implementación de la herramienta.
5.1 Análisis
Todo proyecto debe analizar cómo cumplir los requisitos que ha definido antes de ser
diseñado. La ingeniería del software ha desarrollado técnicas que facilitan esta tarea. Un
buen análisis hará que el proyecto avance de manera fluida y evitará sorpresas
desagradables en fases posteriores del desarrollo, como un cambio en el alcance o en el
coste temporal, algo que provocaría repercusiones económicas no valoradas.
La primera parte del análisis de un proyecto ha de ser la creación de un diagrama de casos
de uso. Los casos de uso se extraen de la lista de requisitos funcionales proporcionada en el
punto anterior. Un caso de uso representa un conjunto de secuencias de acciones que el
sistema ha de realizar para presentar un resultado observable de valor para un actor en
particular.
Cada actor pude representar los distintos roles que los usuarios pueden adoptar a la hora de
interactuar con un sistema. En el caso de este proyecto todos los usuarios tienen el mismo
rol, así que solo emplearemos un actor a la hora de representar los casos de uso. Este se
denominará usuario para evitar confusiones.
El diagrama de casos de uso de este sistema, el plug-in de generación de terreno procedura l ,
Fi gura 8 . Diagrama de casos de uso
37
queda como se visualiza en la Figura 7.
Como piden los requisitos, el usuario puede generar terrenos, suavizarlos y texturizarlos.
Cuando se selecciona uno de los botones que pueden realizar una de estas acciones, sea
cual sea el método elegido (hay un botón distinto para cada algoritmo) el interfaz responde
al usuario pidiéndole los datos con nombre representativos, y proporcionando también
unos valores por defecto (o enseñando los últimos valores seleccionados por el usuario
para este método). Cuando el usuario confirma los datos el sistema crea o modifica una
malla en el espacio de modelado 3D de Blender de acuerdo con los parámetros
seleccionados.
Esta es la especificación de los casos de uso principales que se pueden ver en el diagrama:
Caso de uso Generar terreno
Actor Usuario Descripción: El sistema generará una malla simulando un terreno en el
entorno de modelado 3D de Blender
Precondición:
Flujo de eventos 1. El usuario selecciona uno de los botones de generar terreno.
2. El interfaz muestra los datos predefinidos (o previos) modificables para que el usuario los cambie o confirme
3. El usuario introduce datos o deja los predefinidos y confirma.
4. Se genera un mapa de alturas acorde a los datos introducidos mediante el algoritmo seleccionado
5. Se genera una malla de puntos uniformemente distribuidos con las alturas del mapa.
Flujo alternativo 3.1 El usuario introduce datos erróneos. 3.2 El sistema muestra un mensaje de error y se vuelve al
punto 2.
Postcondición
Requisitos relacionados RF-01, RF-02 Tabl a 5 . Casos de uso de generación de t erreno
Caso de uso Suavizar terreno
Actor Usuario Descripción: El sistema modificara una malla del entorno de modelado 3D
de Blender
Precondición: Haber seleccionado la malla a modificar.
Flujo de eventos 1. El usuario selecciona uno de los botones de suavizar terreno.
2. El interfaz muestra los datos predefinidos (o previos) modificables para que el usuario los cambie o confirme
3. El usuario introduce datos o deja los predefinidos y confirma.
4. Se genera un mapa de alturas acorde a los datos introducidos mediante el algoritmo seleccionado
38
5. Se genera una malla de puntos uniformemente distribuidos con las alturas del mapa y se destruye la malla seleccionada previamente.
Flujo alternativo 3.1 El usuario introduce datos erróneos o no ha seleccionado una malla.
3.2 El sistema muestra un mensaje de error y se vuelve al punto 2.
Postcondición
Requisitos relacionados RF-04, RF-07 Tabl a 6 . Casos de uso de suavizado del t erreno
Caso de uso Texturizar terreno
Actor Usuario
Descripción: El sistema asignara diferentes texturas por zonas a del entorno 3D de Blender.
Precondición: Tener seleccionada dicha malla.
Flujo de eventos 1. El usuario selecciona el botón de texturizar 2. El interfaz muestra los datos predefinidos (o previos)
modificables para que el usuario los cambie o confirme 3. El usuario introduce datos o deja los predefinidos y
confirma. 4. Se selecciona que textura corresponde a cada cara de la
malla y se aplica.
Flujo alternativo 3.1 El usuario introduce datos erróneos o no ha seleccionado una malla.
3.2 El sistema muestra un mensaje de error y se vuelve al punto 2.
Postcondición
Requisitos relacionados RF-06, RF-07 Tabl a 7 . Casos de uso de t exturización del t erreno
También es necesario analizar las variables que utilizará el sistema antes de proceder al
diseño, ya que muchas de ellas estarán presentes en la interfaz y será necesario tenerlas en
cuenta tanto a la hora de diseñar la herramienta como realizando su implementación. Se
han tenido en cuenta las variables con las que podrá interactuar el usuario a la hora de
realizar el análisis y el diseño de este proyecto. A continuación, se detallan sus usos:
Para el algoritmo del punto medio el usuario podrá interactuar con tres variables de manera
directa. La potencia para el número de vértices define cuántos vértices por lado tendrá la
malla generada por el punto medio. Concretamente serán vértices por lado.
El parámetro de suavizado del algoritmo se suele dejar entre los valores cero y uno,
teniendo en cuenta que cuanto mayor sea su valor más regular será el terreno, es decir,
habrá una menor diferencia de altura entre los vértices vecinos.
El parámetro para la amplitud en el desplazamiento del punto medio es la suma aleatoria
de altura en cada vértice. Si no se suavizase el resultado cada suma tomaría un rango de
valores .
39
La potencia para el número de vértices de la superficie browniana define cuántos vértices
por lado tendrá la malla. Concretamente serán vértices por lado.
En el algoritmo del desplazamiento del punto medio es el parámetro de suavizado del
algoritmo. Se deberán introducir valores entre cero y uno. Cuanto más alto es su valor, más
regular será el terreno, es decir, habrá una menor diferencia de altura entre los vértices
vecinos. Al multiplicar este dato por dos se obtiene el valor alfa de las formulas descritas
posteriormente.
Para la superficie browniana es el factor por el que se multiplican las alturas producidas
por el algoritmo, y ya que estas suelen tener valores muy bajos se sitúan en el orden de la
amplitud preferida.
en erosión térmica hace referencia a cuál es la diferencia máxima que se desea que exista
entre los vértices vecinos de la malla tratada mediante este algoritmo. Normalmente nos
referimos a esto como pendiente máxima o talus en inglés.
en los algoritmos de erosión. Esta variable representa el número de veces que debe
aplicarse el algoritmo de erosión sobre la malla seleccionada.
en el algoritmo de erosión hídrica es variable del coeficiente de evaporación. Determina
qué cantidad de agua es eliminada durante el cuarto paso del algoritmo de erosión hídrica
los valores que tienen sentido para esta variable están entre el cero y el uno.
es, en el algoritmo de erosión hídrica, el coeficiente de lluvia. Determina cuánta lluvia es
añadida en cada iteración del algoritmo, sus valores también deberían ser bajos para evitar
comportamientos anormales.
en el algoritmo de erosión hídrica es el coeficiente de capacidad. Esta variable es la que
define qué cantidad de material puede retener el agua. En el último paso del algoritmo se
utiliza este coeficiente para saber qué cantidad de material libera el agua después de que un
porcentaje de esta se evapore.
en el algoritmo de erosión hídrica es el coeficiente de sedimentación. Define qué
cantidad de material puede disolverse en el agua. Es la variable que permite el cambio de
material entre vértices. Si esta variable se deja a cero no se apreciará ningún cambio en la
malla, y sus valores también deberían oscilar entre cero y uno.
En el algoritmo de generación fluvial, proporciona al usuario un cierto control
sobre las alturas de la malla resultante, multiplicándose por las alturas de la malla una vez
finalizado el algoritmo. La mayoría de las variables en este caso se ha dejado como
constantes ya que no son en absoluto intuitivas y se ha valorado que dificultarían
notablemente el uso del algoritmo.
40
en el algoritmo de coloración es la altura del mar. Toda cara cuya altura este por debajo
del valor de esta variable pasa a tener sus vértices esta altura y se le asigna una textura de
agua.
en el algoritmo de coloración es la altura a partir de la que aparece nieve; cualquier cara
cuya altura supere este valor pasa a tener asignada una textura de nieve. A las alturas que
superan pero no se les asigna una textura de hierba.
en el algoritmo de coloración. Es la pendiente que determina si una cara se le debe
asignar una textura respecto a su altura o por el contrario se le asignara una textura de
piedra.
5.2 Diseño
Entre los requisitos de este proyecto se encuentras características relacionadas con la
accesibilidad. Para cumplir dichos requisitos se debe realizar el diseño de la interfaz de la
herramienta.
El plug-in consistirá en una barra de herramientas extra en el modo objeto de Blender. Esta
barra de herramientas constará de seis botones, como se puede observar en la Figura 9,
uno para cada una de los algoritmos que hemos decidido implementar. El comportamiento
de los botones será similar en todos ellos, se abrirá un dialogo de opciones con los
parámetros que el usuario debe introducir, con nombres descriptivos y valores por defecto
que harán de referencia para el usuario.
A continuación, se incluye una lista de figuras del diseño visual de cada una de las partes del
interfaz de la herramienta.
Fi gura 10. Interfaz para generación por desplazamiento del punto medio
Fi gura 9 . Interfaz general
41
En todo proyecto de programación es importante que se diseñen las clases de las que se
compone el sistema y se detallen las relaciones entre ellas. Para que este diseño sea sencil lo
y fácil de comprender ha de crearse un diagrama de clases.
Este diagrama (Figura 13) contiene las funciones principales de cada clase, junto con los
parámetros más representativos de estas. Su funcionamiento y cómo se desarrollará su
implementación se detallará en el apartado de implementación.
Fi gura 11. Int erfaz para erosión t érmica
Fi gura 12. Interfaz para erosión hídrica
Fi gura 13. Interfaz para coloreado
42
5.3 Implementación
Una vez se ha analizado como ha de funcionar la herramienta y esta ha sido diseñada, se
procederá a su implementarla. El proceso de implementación consistirá en codificar los
algoritmos elegidos en el estado del arte y la interfaz de manera que se cumpla con los
requisitos expuestos en el apartado 4.
5.3.1 Entorno de trabajo
Como se ha mencionado previamente este proyecto ha sido desarrollado en Blender. La
versión utilizada durante el desarrollo del proyecto ha sido la 2.72. Los entornos del
modelador utilizados han sido:
• Su API de programación:
• Su modo objeto:
• Su modo editor:
• La consola incrustada:
• La consola de sistema:
No ha sido necesario utilizar ningún otro software para cumplir con la implementación.
Se han utilizado dos librerías, Bpy, que es la librería para acceder a los datos de Blender y
Numpy, una librería esencial de computación científica de Python.
5.3.2 Implementación de algoritmos
En este apartado se explican los distintos algoritmos implementados y las constantes
utilizadas por ellos.
5.3.2.1 Desplazamiento aleatorio del punto medio (diamond-square)
Fi gura 14. Diagrama de clases
43
Este algoritmo fue el primero en ser implementado, ya que es el más simple. Consiste en
generar un mapa de alturas aleatorias a partir de los valores iniciales de las esquinas. Los
pasos a seguir son:
1. Se inicializan las esquinas.
2. Se calcula el promedio del centro y se le suma un valor aleatorio.
3. Se calculan los promedios de los puntos entre esquinas.
4. Repetir paso 2 y 3 con los subgrupos de 4 esquinas generados hasta alcanzar las
subdivisiones deseadas.
En la Figura 14 se representan gráficamente los pasos del algoritmo:
Este algoritmo requiere como parámetros de entrada el número de vértices por lado (que
debe ser potencia de 2), la amplitud del valor aleatorio a sumar al promedio y un parámetro
de suavizado. Las fórmulas para calcular las nuevas alturas en la malla son:
Centro de 4 esquinas:
Ecuaci ón 5 . Cent ro entre cuatro esquinas
Donde es la amplitud, es la iteración en la que estamos, es el parámetro de suavizado,
y se corresponde a un valor aleatorio entre -1 y 1.
Con estos mismos parámetros podemos calcular el punto medio de un lado:
Ecuaci ón 6 . Cent ro entre dos esquinas
5.3.2.2 Filtrado de Fourier de Kroese y Botev [23]:
Como ya se ha indicado con anterioridad, las superficies brownianas son constructos
matemáticos cuya apariencia puede parecerse bastante a paisajes naturales. Este a lgoritmo
parte de la base de que una superficie Browniana puede ser definida como un proceso
Gaussiano de media 0 usando esta función de covarianza:
Ecuaci ón 7 . Covarianza para superf icie browniana
Fi gura 15. Pasos del desplazamiento a leatorio del punto medio
44
Los valores de las alturas X(t) se generan mediante el método de Stein [22] tal que:
Estos valores son después tratados así:
donde las constantes que aparecen en las formulas toman estos valores:
• Los valores dependen de , donde , y es el parámetro de suavizado).
• También se ha respetado el valor de recogido del artículo citado ya que
garantiza el correcto funcionamiento de los grupos de valores.
Este algoritmo tiene como salida un mapa de alturas cuyos valores suelen ser bastante
cercanos a 0. Para poder utilizarlo como generador de terreno procedural era preciso
generar un parámetro de amplitud que determinase la altura de las montañas generadas. El
parámetro se aplica sencillamente, multiplicándolo por los valores de las alturas. Esto
puede generar algunos picos algo antinaturales, que se solucionan fácilmente aplicando los
algoritmos de erosión de esta herramienta.
Tanto el parámetro de suavizado como el de amplitud son facilitados por el usuario.
5.3.2.3 Erosión térmica:
Este algoritmo recibe como datos de entrada, la pendiente máxima , el número de
iteraciones a realizar y un mapa de alturas base que debe ser cuadrado. Se ha uti l izado
un vecindario de Moore.
Los pasos a realizar en cada iteración para cada altura o vértice consisten en:
1. Se calcula la diferencia de alturas para cada vecino
2. Se suman todas las diferencias de alturas que superen la pendiente máxima
3. Se selecciona la mayor diferencia de altura
4. Se realiza un intercambio de material entre los vértices cuya distancia a superado la
pendiente máxima mediante las fórmulas:
45
Ecuaci ón 8 . Altura del vértice
Ecuaci ón 9 . Altura del vecino
Donde para evitar comportamientos erróneos al traspasar más material del
necesario, así solo se transporta la mitad.
5.3.2.4 Erosión Hídrica:
Este algoritmo recibe como datos de entrada, El coeficiente de lluvia , El coeficiente de
evaporación , El coeficiente de sedimentación , El coeficiente de capacidad , el
número de iteraciones a realizar y un mapa de alturas base que debe ser cuadrado. Al
igual que en el algoritmo de erosión térmica se ha utilizado un vecindario de Moore. El
algoritmo guarda un mapa del agua y del sedimento para almacenar información
sobre el flujo del agua y el material que hay disuelto en ella.
Este algoritmo iterativo cuenta principalmente con 4 pasos.
1. En el primer paso se añade agua para simular lluvia de empleando la siguiente ecuación,
2. En el segundo paso se disuelve material en el agua, y se representa
3. En el tercer paso se transportan agua y sedimentos de los vértices evaluados a sus
vértices vecinos, teniendo en cuenta únicamente a los vecinos más bajos que el vértice
en cuestión, mediante las formulas:
donde el incremento de es la altura del vértice evaluado menos la media de las alturas
de todos los vértices envueltos en el cálculo, es la diferencia de altura con el vecino
evaluado y es la suma de las distancias del vértice evaluado con todos los vecinos
más bajos que él. El agua en el vértice que esté siendo evaluado es , y por tanto .es
el agua en el vértice vecino.
4. En el cuarto paso se evapora agua y se evalúa si el agua tiene más sedimento disuelto
del que es capaz de llevar y si es así lo deposita. Esto se representa así:
46
donde
5.3.2.5 Generación tectónica y fluvial: Este algoritmo le pide al usuario un mapa de alturas inicial que debe ser cuadrado, y la
amplitud que quiere que tengan las montañas generadas. En el artículo de [38]se explica que
las variables utilizadas en este algoritmo no son nada intuitivas, de ahí que no se deje al
usuario cambiarlas y hayan sido consideradas como constantes en el diseño de la
herramienta. En el apartado de pruebas se profundiza en estas variables.
El algoritmo consta de dos fases principales, generación del flujo de agua y resolución de la
ecuación de erosión y levantamiento. Se utiliza el mapa de alturas inicial para generar un
mapa de velocidades de crecimiento. Este mapa de velocidades de crecimiento está acotado
entre -5e-4 y 5e-4, el valor máximo de crecimiento o decrecimiento del mapa de alturas se
toma como referencia para hacer la transformación de datos, siguiendo esta fórmula:
Ecuaci ón 10. Dominio de velocidades de crecimiento
Una vez recogidos los datos se procede a realizar la primera fase, que consiste en los
siguientes pasos:
1. Se recorren todos los vértices y se establece un enlace con su vecino más bajo. El
vecindario utilizado es el de Moore. Esto genera una estructura en forma de árbol
compuesta por lagos (raíces) y sus afluentes (ramas y hojas, siendo las hojas
aquellos nodos que no tienen ningún afluente).
2. Una vez tenemos el grafo de árboles definido se procede a relacionar estos árboles
intentando crear enlaces entre lagos. Esto se hace recorriendo todos los vértices
otra vez, buscando vecinos que pertenezcan a otros lagos. Estos nodos deben
cumplir: , donde y son los nodos vecinos y y
son los nodos lagos. Si se cumple la condición se añaden dos enlaces, entre nodos
vecinos y lagos haciendo que los lagos fluyan hacia los nodos vecinos.
3. Se crea una lista de lagos definitiva, inicializándola con los lagos de los bordes del
dominio y eliminando los enlaces que salen de estos lagos. Después se van
añadiendo otros lagos que deben fluir hacia los vértices pertenecientes a los lagos
que ya se encuentran en la lista de lagos definitivos y se eliminan el resto de
posibles enlaces que salen de estos lagos a añadir. Terminamos de añadir lagos
cuando no quedan enlaces posibles.
4. Una vez tenemos la estructura final de árboles, se calcula el área de cada nodo,
como este algoritmo esta modificado para trabajar con mallas regulares esto
consiste sencillamente en , donde es el área del afluente. Esto
requiere que las áreas se calculen de hoja a nodo.
5. Una vez tenemos las áreas de cada nodo se procede a definir las nuevas alturas
mediante esta fórmula:
47
O en el caso de los lagos,
6. Se transforma el rango de alturas en el deseado por el usuario mediante la
fórmula:
Cabe destacar que este algoritmo ha sido simplificado para trabajar con mallas regulares,
pudiendo así aplicar a los resultados el algoritmo de erosión térmica y erosión hídrica y para
que sea más fácil para el usuario definir los resultados a obtener.
5.3.2.6 Algoritmo de coloración:
Este algoritmo de coloración recibe como datos de entrada la altura del mar , la
pendiente máxima , la altura de la nieve y la malla a colorear. Consta de dos
sencillos pasos:
a. Se recorren todos los vértices de la malla y todos los que estén debajo del nivel del
mar pasan a tener la altura del mar.
b. Se evalúa cada cara de la malla. Se comprueba si su inclinación es mayor que la
definida por el usuario calculando el ángulo entre la normal de una cara en posición
horizontal y la normal de la cara evaluada, si la supera se le asigna una textura de
piedra. Si no supera la inclinación se evalúa la altura de su centro, si está al nivel del
mar se le asigna una textura de agua, si está por encima de la altura de nieve se le
asigna una textura de nieve y si no es ninguno de estos dos casos se le asigna una
textura de hierba.
5.3.3 Implementación de la interfaz y del generador de mallas
Se ha programado una interfaz sencilla para la utilización de la herramienta. Consiste en un
panel con un botón para cada uno de los algoritmos cada uno de los algoritmos descritos
en el punto anterior. Estos botones se corresponden con una clase operador de Python y
cuando el usuario los pulsa se abre un dialogo con valores por defecto modificables para
que se introduzcan los datos deseados para la generación o erosión del terreno y un botón
de ok para lanzar el algoritmo una vez el usuario a introducido los datos necesarios. En este
evento se recogen los datos y se llama a al algoritmo correspondiente, que genera un mapa
de alturas y llama al generador de mallas, que genera una malla con los mismos vértices que
alturas le llegan asignando estas a la dimensión z de los vértices y generando los ejes y caras
entre ellos. Los algoritmos que reciben una malla como dato de entrada la destruyen y
generan otra.
Con esto finaliza la implementación de la herramienta, la codificación de estos algoritmos
en Blender, permite realizar pruebas de una manera muy sencilla utilizando su consola para
48
comprobar datos numéricos y utilizando su entorno 3D para comprobar los resultados
visuales. Estas pruebas se detallan en el siguiente capítulo.
49
6. Pruebas
Todo producto de ingeniería debe pasar una serie de pruebas antes de afirmar que el
desarrollo del proyecto ha concluido. En este proyecto en particular además se realizan
ciertas pruebas adicionales para estudiar los resultados obtenidos por los di stintos
algoritmos. Pese a todo, las pruebas se siguen pudiendo en capsular en los cuatro tipos
clásicos: Pruebas unitarias, pruebas de integración, pruebas de sistema y pruebas de
usabilidad.
6.1 Pruebas unitarias
Estas pruebas son las que se realizan para comprobar que cada uno de los elementos
funciona correctamente por separado. En el caso de este proyecto se han realizado pruebas
para cada uno de los algoritmos implementados. Se detallan las pruebas realizadas después
de haber solucionado los errores de compilación de cada uno de los algoritmos
implementados.
Estas pruebas se han realizado ejecutando por separado los archivos Python de cada uno
de los algoritmos. Para comprobar resultados de manera visual también se utiliza el código
de generación de mallas.
6.1.1 Desplazami ento del punto medio:
Sobre este algoritmo se han realizado las siguientes comprobaciones:
La generación del mapa sin componente aleatoria es correcta y únicamente las esquinas
quedan en la altura inicial. La primera vez que se ejecutó una prueba para comprobar esto
se descubrió que los bucles que recorrían los vértices estaban mal definidos ya que la última
fila y columna de vértices de la malla no cambiaban de altura.
Fi gura 16. Mapa de a l turas sin componente a leatoria
50
Una vez comprobado que el mapa se genera de manera correcta sin la componente
aleatoria se añade a las pruebas de generación la componente aleatoria y los valores de
suavizado h y se comprueba que se generan superficies similares a terrenos y que el terreno
se suaviza conforme se aumenta el valor de h. No hubo errores que corregir en esta
comprobación. Las siguientes figuras muestran un terreno generado con el factor de
suavizado en los valores 0,0.5,1 y 2.
Fi gura 17. Factor de suavizado 0 Fi gura 18. Factor de suavizado 0 .5
Fi gura 19. Factor de suavizado 1 Fi gura 20. Factor de suavizado 2
51
Se comprueba que se pueden generar mapas para distintos valores de vértice por lado de la
manera permitida, es decir en la forma . Las siguientes figuras muestran terrenos de
vértices y vértices.
Se comprueba que se puede proporcionar una malla con las esquinas inicializadas en un
valor distinto de 0 y el resultado presenta el comportamiento deseado, es decir, que se gana
algo de control respecto al resultado. En las dos figuras siguientes se puede observar cómo
el estado inicial de las esquinas modifica el resultado obtenido.
6.1.2 Filtrado de Fourier:
Las comprobaciones sobre el filtrado de Fourier que se han realizado han sido las que se
muestran a continuación.
Se ha comprobado la correcta generación de una superficie Browniana con amplitud 1 y
con un parámetro arbitrario, en este caso 0.8.
Fi gura 22. Estado inicial con esquina ≠ 0 Fi gura 23. Resul tado modif icando estado inicial
Fi gura 21. 2 7 + 1 vértices Fi gura 22. 2 8 + 1 vértices
52
Se comprueba que se pueden generar mapas con distintas combinaciones de vértices
por lado. En las figuras, vértices por lado y vértices por lado.
Se comprueba que el valor de funciona correctamente dentro del rango 0-1. En las
figuras se pueden observar resultados del algoritmo con el factor de suavizado 0.01, 0.5 y 1.
Fi gura 27. Factor suavizado 0 .01 Fi gura 26. Factor suavizado 0 .5
Fi gura 23. 2 7 vértices por l ado Fi gura 24. 2 8 vértices por l ado
Fi gura 25. Superficie browniana con a : 1 , h: 0 .8
53
Se comprueba que el valor de amplitud afecta correctamente al mapa y no provoca efectos
extraños. Podemos ver en las figuras, como afectan los valores de amplitud 1, 10, 20 y 30 a
los resultados.
6.1.3 Erosión térmica
Se comprueba que suaviza la superficie de las mallas a las que se aplica sin provocar
artefactos extraños. Esta prueba reveló la primera vez que el vecindario Moore no se
recorría correctamente durante la comprobación de alturas con los vecinos y la segunda vez
que había un problema en el cálculo de la masa total a desplazar, ambos errores
provocaban efectos extraños en las mallas.
Se confirma que el algoritmo puede ejecutarse sobre cualquier malla mientras esta sea
cuadrada, es decir, tenga el mismo número de vértices en cada lado. La primera vez que se
comprobó esto se descubrió que el algoritmo eliminaba la última fila y columna de las
mallas a las que se aplicaba por un error en los bucles que recogían el mapa final de alturas.
Fi gura 31. Factor suavizado 1 Fi gura 30. Factor ampli tud 10
Fi gura 29. Factor ampl itud 20 Fi gura 28. Factor ampli tud 30
54
Se comprueba que la variable de pendiente máxima funciona de manera correcta
suavizando más la malla cuanto menor es su valor. En las figuras se puede observar una
malla “cruda” y el efecto que tiene sobre esta el algoritmo de erosión térmica con distintas
pendientes, concretamente con los valores 0.1, 1, 2 y 3.
Por último, se comprueba que la malla se sigue suavizando cuantas más iteraciones se
seleccionan para el algoritmo y que no se generan efectos extraños cuando hay muchas
iteraciones.
6.1.4 Erosión hídrica
Se comprueba que se suavizan las mallas simulando erosión hídrica, fijándose sobre todo
en las partes de la malla que tienen vértices más altos alrededor, que es donde pasaría más
cantidad de agua y se suavizaría más. Se detectaron distintos problemas realizando esta
prueba. Inicialmente había una clara tendencia que el agua se pasase siempre hacia los
vértices de la esquina interior izquierda debido a un error en el índice de los vecinos en la
parte de transporte de materiales del algoritmo. Después de solucionar este error se advirtió
que se generaban picos extraños en las alturas de la malla en vez de suavizarse. Esto era
causado por un error en el cálculo de evaporación del agua, que no llegaba a ocurrir nunca
Fi gura 35. Erosión térmica a l 0 .1 Fi gura 34. Erosión termica a l 1
Fi gura 33. Erosión térmica a l 2 Fi gura 32. Erosión térmica a l 3
55
por lo que se mantenía la “lluvia” sobre algunos vértices generando estos picos, esto
ocurría independientemente de los valores seleccionados en las distintas variables.
Se realizan posteriormente comprobaciones respecto a los coeficientes de solubilidad
evaporación capacidad y lluvia. Para discernir si el efecto de un coeficiente tiene sentido se
ha probado a dejar el coeficiente analizado inicialmente a 0 y en una segunda ejecución con
un valor alto. Durante las pruebas, el resto de los coeficientes se mantienen en un valor
estándar.
En las Figura 37 se puede observar la malla sobre la que se aplicará el algoritmo, y en la
Figura 36 el resultado tras su ejecución para los valores de solubilidad = 0.1, evaporación
= 0.5, capacidad = 0.1 y lluvia por vértice = 0.1. En el resto de pruebas de este apartado se
mantienen estos valores a menos que se especifique lo contrario.
Para comprobar si el coeficiente de solubilidad afecta de manera correcta se han realizado
dos pruebas, una dejando su valor a 0 (siendo irrelevante el resto de valores), porque si este
coeficiente tiene valor nulo no debería generarse ningún cambio en la malla; y otra dándole
un valor de 0.25 mientras que el resto de coeficientes mantienen el valor por defecto de
0.10 y 0.5 para el coeficiente de evaporación. Los resultados de esta prueba fueron los
Fi gura 36. Segundo set de valores
Fi gura 38. Malla base Fi gura 37. Primer set de valores
56
esperados, con un mayor índice de solubilidad se desplazaba más material entre los vértices
con el mismo número de iteraciones. En la Figura 35 el resultado de la prueba de 0.25.
Se ha realizado una prueba similar con el coeficiente de capacidad, pero con este
coeficiente los cambios entre 0 y 0.10 eran difícilmente perceptibles con pocas iteraciones
ya que cuando este coeficiente es 0 se deposita todo el material desplazado, dado que el
agua no retiene nada. Al aumentar el valor lo suficiente se hace perceptible que hay menor
deposición de material, aunque la erosión sea la misma. En las Figuras 38, 39, 40 podemos
observar los resultados obtenidos para 0, 0.25 y 1.
El coeficiente de evaporación está estrechamente ligado con el de capacidad, y cuando su
valor es 1 ocurre exactamente lo mismo que con un coeficiente de capacidad 0, ya que se
evapora la totalidad del agua y se deposita todo el material desplazado en cada iteración, si
se deja 0 no se deposita nada de material, pero sí que se percibe la erosión causada por el
coeficiente de solubilidad, es decir, se pierde todo el material disuelto. En las figuras, los
resultados de evaporación a 0 y evaporación a 1.
Fi gura 39. Coeficiente capacidad 1
Fi gura 41. Coeficiente capacidad 0 Fi gura 40. Coeficiente capacidad 0 .25
57
El coeficiente de lluvia ha resultado ser el más delicado, si su coeficiente se deja a 0 la malla
no sufre cambios (no se añade agua, por tanto, no se desplaza material.) sin embargo, si su
valor es muy alto el algoritmo presenta comportamientos extraños generando picos de
altura que no son deseables, aunque pueden ser corregidos con el algoritmo de erosión
térmica. Se recomienda dejar este coeficiente con un valor por debajo de 0.10. En la figura
el resultado de lluvia a 0.25.
Por último, se comprueba que el algoritmo funciona de la misma manera para distintas
mallas cuadradas, es decir de distintos tamaños.
6.1.5 Generac ión tectóni ca y fluvial
Se comprueba que la generación de mapa es correcta y que el resultado guarda similitudes
con la malla inicial que se proporciona al algoritmo. En las Figuras 44 y 45 podemos ver
una malla inicial hecha a mano y el resultado tras aplicar el algoritmo.
Fi gura 42. Lluvia a l 0 .25
Fi gura 44. Evaporación a 0 Fi gura 43. Evaporación a 1
58
Para asegurar su correcto funcionamiento, se comprueba que el algoritmo funciona con
distintas mallas cuadradas.
Se comprueba también que la variable de amplitud afecta de manera correcta al resultado.
En las figuras podemos observar distintos resultados para una malla inicial a 10 de amplitud
y 30. En este caso la malla inicial presentaba depresiones en vez de crecimientos, por lo que
los resultados decrecen.
6.1.6 Coloración del terreno
Se comprueba que el algoritmo inserta texturas en las mallas generadas por cada uno de los
algoritmos que utiliza la herramienta.
Se comprueba que las variables afectan de manera correcta al resultado, cuanto menor es el
valor umbral de la pendiente más roca hay y la altura del mar y de la nieve aparecen a partir
de la altura correcta.
Fi gura 46. Maya inicial provist a Fi gura 45. Maya t ras aplicar a lgoritmo
Fi gura 49. Maya inicia l Fi gura 48. Ampli tud 10 Fi gura 47. Ampli tud 30
59
6.2 Pruebas funcionales
Las pruebas unitarias sirven para comprobar que cada una de las partes de la herramienta
funcionan bien por separado. Esto no garantiza que la herramienta funciona de la manera
deseada cuando se combinan los distintos algoritmos implementados. En este apartado se
detallan los experimentos realizados con la herramienta completa una vez se han real izado
las pruebas unitarias y corregido los errores detectados.
Para realizar estas pruebas se probarán todas las combinaciones posibles de algoritmos para
generar un terreno y posteriormente se intentará generar tipos de terreno y se intentará
determinar con que combinaciones de algoritmo es más fácil generar el resultado deseado.
6.2.1 Combinaci ones de algoritmos
Se ha comprobado que la malla generada con el desplazamiento no presenta
comportamientos extraños cuando se le aplica la erosión térmica, la hídrica o una
combinación de estas, se observa que el orden en el que se aplican estos algoritmos es
relevante para el resultado, esto será relevante para las pruebas de generación de tipos de
terrenos.
Todas las combinaciones de algoritmos con el método de generación de terreno mediante
filtrado de Fourier han sido exitosas también y se observan comportamientos similares a las
combinaciones con el método anterior. En las figuras, las mallas iniciales y los resultados de
las combinaciones de aplicar los algoritmos de erosión a los de generación.
Fi gura 51. Malla generada con punto medio Fi gura 50. Erosión hídrica sobre punto medio
60
La generación fluvial puede presentar errores cuando trabaja a partir de una malla con
Fi gura 57. Erosión térmica sobre punto medio Fi gura 56. Erosión térmica-hídrica sobre
punto medio
Fi gura 53. Erosión hídrico-térmica sobre
punto medio
Fi gura 52. Malla generada con superficie Browniana
Fi gura 55. Erosión hídri ca sobre Browniana Fi gura 54. Erosión térmica sobre Browniana
61
muchos vértices por debajo de 0, esto es porque el algoritmo está pensado para trabajar a partir de un dominio de crecimientos. Esto, combinado con el hecho de que sus bordes siempre están a 0 hace poco compatible este método con los otros dos métodos de generación, es decir, que es mejor manufacturar una malla con dominios básicos a partir de un mapa de alturas generado por los otros dos métodos. Las figuras anteriores (apartado 6.1.5) ya presentan comportamientos extraños.
El algoritmo de generación fluvial resulta igual de compatible con los algoritmos de erosión
que los dos previos algoritmos de generación, de hecho, el aplicar el algoritmo de erosión
térmica palia de manera considerable los efectos no deseados en los resultados de
generación fluvial cuando este ha utilizado un mapa de alturas generado previamente. En
las figuras los resultados de aplicar erosión térmica, hídrica, térmica e hídrica y hídrica y
térmica, respectivamente.
Fi gura 59. Erosión térmica – hídrica sobre
Brow niana
Fi gura 61. Fluvial t érmica Fi gura 60. Fluvial hídrica
Fi gura 58. Erosión hídrico – t érmica sobre
Brow niana
62
El algoritmo de coloración no presenta problemas con ninguna de las mallas mencionadas
previamente.
En conclusión, los algoritmos de erosión son compatibles con todos los algoritmos de
generación de terrenos, pero la generación fluvial tiene comportamientos extraños al
utilizar mallas generadas con los otros dos algoritmos como dominio inicial.
6.2.2 Generaci ón de tipos de terreno
A continuación, se procederá crear distintos tipos de terreno con las combinaciones de
algoritmos de las que disponemos y se hará una evaluación sobre el control que garantiza
cada una de las opciones sobre el resultado. Las figuras de cada terreno corresponden cada
una a un algoritmo de generación, teniendo aplicados los algoritmos de erosión hídrica y
térmica, en ese orden.
El primer tipo de terreno seleccionado han sido dunas, o en este caso ya que la textura que
debería aplicarse es hierba colinas suaves.
De entre los resultados, el que más se asemeja al resultado deseado es el de generación
fluvial ya que este es el que permite más control, sin embargo, los otros dos algoritmos
Fi gura 63. Fluvial Térmico-hídrica Fi gura 62. Fluvial Hídrico-térmica
Fi gura 64. Dunas mediante generación f luvia l
63
permiten generar paisajes similares de manera relativamente fácil. Para que los terrenos
generados tengan la suavidad deseada, además de poner un factor bastante amplio,
aplicar el algoritmo de erosión con una pendiente muy baja ha sido satisfactorio.
En conclusión, con cualquier algoritmo de los de esta herramienta se pueden generar
terrenos de colinas suaves o dunas, pero es el de generación fluvial el algoritmo que más
control ofrece sobre la apariencia del terreno. Cabe destacar que, para obtener resultados
similares, la amplitud en el algoritmo de filtrado de Fourier ha de ser sustancialmente
menor a la de los otros dos.
El siguiente terreno seleccionado es un delta, y por tanto se ha intentado generar un rio
cuya desembocadura forme un delta. Para una mejor visualización de esto se ha decidido
colorear todas las placas de resultado.
El resultado más similar al deseado ha sido, una vez más el de generación fluvial. Generar
este terreno no ha sido nada sencillo con los otros algoritmos, se han necesitado varios
intentos con los otros algoritmos hasta conseguir un resultado que se asemejase a un delt a
o pudiese asemejarse después de una aplicación del algoritmo de erosión hídrica. Es
necesario decir que se ha necesitado un número inusual de iteraciones en el algoritmo de
erosión hídrica para generar el terreno deseado dado el tipo de terreno seleccionado.
Fi gura 65. Dunas mediante erosión t érmica
Fi gura 67. Delt a mediante generación f luvia l
Fi gura 66. Dunas mediante erosión hídrica
64
El tercer tipo de terreno seleccionado han sido el de montañas escarpadas. En este t ipo de
terreno la generación fluvial ha obtenido los resultados deseados, mientras que los otros
dos algoritmos generan resultados adecuados, aunque sin ser tan específicos. Con estos
últimos se obtiene una sensación más natural una vez sometidos a los algoritmos de
erosión. La pendiente máxima en erosión térmica se ha dejado con un valor alto, que se
busca la generación de un terreno escarpado, con riscos o zonas no transitables; razón por
Fi gura 71. Delta mediante erosión hídrica Fi gura 72. Delt a mediante erosión térmica
Fi gura 70. Montañas escarpada s mediant e generación f luvial
Fi gura 69. Escarpadas mediante e. t érmica Fi gura 68. Escarpadas mediante e. hídrica
65
la que también se han empleado valores de amplitud altos.
El cuarto tipo de terreno es una llanura, es algo similar a las colinas suaves, sin embargo, se
pretende una elevación cuasi nula, lo que es fácil de conseguir ya que se controla la
amplitud en todos los algoritmos. Todos los algoritmos han obtenido resultados similares.
Se observan dos fenómenos respecto a los algoritmos de erosión con este tipo de terrenos.
Primero, para que el algoritmo de erosión térmica sea efectivo debe tener una pendiente
máxima muy baja. Segundo, este tipo de terreno facilita considerablemente la aparición de
artefactos extraños (picos) debidos a la erosión hídrica, por lo que es recomendable dejar el
factor de lluvia por vértice muy bajo.
El último tipo de terreno consiste en un barranco lo ladera empinada. Conseguir esto ha
sido fácil con los algoritmos de generación fluvial y desplazamiento del punto medio,
Fi gura 75. Llanura mediante generación f luvial
Fi gura 73. Llanura mediante erosión hídrica
Fi gura 74. Llanura mediante erosión t ermica
66
gracias a poder inicializar los valores de las esquinas en el último. El otro algoritmo de
generación se ha tenido que ejecutar varias veces hasta alcanzar un resultado aceptable.
6.3 Pruebas de rendimiento
Este trabajo tiene como objetivo estudiar y comparar estos algoritmos, además de los
distintos resultados gráficos se debe estudiar la eficiencia de estos. Para ello se ha medido el
tiempo que necesita cada algoritmo para generar el terreno.
En este apartado se expone el aumento de tiempo que presentan los algoritmos cuando se
incrementa el número de vértices con los que están trabajando, en el caso de los algoritmos
iterativos esta medida es por iteración.
Las medidas que se pueden ver en las siguientes tablas, también se han representado en las
figuras X, Y….
Algoritmo de desplazamiento del punto medio
Fi gura 76. Barranco mediante generación
f luv ia l
Fi gura 77. Barranco mediante e.
t érmica
Fi gura 78. Barranco mediante e . hí drica
67
vértices tiempo (s)
9 <0,001
25 <0,001
81 0,001
289 0,002
1089 0,007
4225 0,03
16641 0,107
66049 0,425
263169 1,726
1050625 6,996 Tabl a 8 . Algoritmo de desplazamiento a l punto medio
Este algoritmo es el más rápido ya que su coste es lineal, solo se calcula una vez la altura de
cada uno de los vértices exceptuando las esquinas, que conservan siempre su valor inicial.
Además, para calcular cada una de las alturas tan solo a de calcularse un numero aleatorio y
hacer una media entre dos o 4 elementos, dependiendo de si se está calculando un centro o
un lado siendo el coste de las operaciones muy bajo.
Algoritmo de filtrado de Fourier
vértices tiempo (s)
4 <0,001
16 0,001
64 0,002
256 0,006
1024 0,024
4096 0,094
16384 0,413
65536 1,54
262144 6,251
1048576 24,983 Tabl a 9 . Algoritmo de f i lt rado de F ourier
Este algoritmo también tiene un coste lineal, sin embargo, el coste operacional es mucho
mayor. La preparación de la matriz o distribución gaussiana ya tiene un coste similar a l del
algoritmo de desplazamiento del punto medio y después se realizan las transformadas sobre
esta matriz. Pese al coste lineal la carga matemática es mucho mayor y el algoritmo recorre
cada valor de la matriz o número de vértices varias veces.
Algoritmo de erosión térmica
vértices tiempo (s)
4 <0,001
16 <0,001
64 0,003
256 0,011
1024 0,016
68
4096 0,142
16384 0,529
65536 2,125
262144 8,132
1048576 31,784 Tabl a 10. Algori tmo de erosión térmica
El algoritmo de erosión térmica también es de coste lineal. La necesidad de evaluar los 8
vecinos de cada uno de los vértices es ya de por si costoso y cuando se cumplen ciertas
condiciones se deben añadir operaciones adicionales, por lo que su coste temporal es
mayor, comparándolo con los algoritmos de generación previos, pero sigue teniendo un
coste bastante bajo.
Algoritmo de erosión hídrica
vértices tiempo
4 <0,001
16 0,001
64 0,006
256 0,025
1024 0,099
4096 0,405
16384 1,644
65536 6,535
262144 26,542
1048576 108,017 Tabl a 11. Algoritmo de erosión hídrica
Una vez más, tenemos un algoritmo con coste lineal, en este, tenemos también la necesidad
de evaluar los vecinos de cada vértice, pero su coste es mucho mayor porque no solo
debemos actualizar una matriz de alturas, sino que debemos efectuar operaciones para
actualizar cuatro matrices, una para el agua, otra para el terreno, una más para la masa
disuelta y, por último, una para la altura total de terreno y agua juntos. Estas matrices son
necesarias a la hora de efectuar evaluaciones para el intercambio de masas con los vecinos y
para una correcta simulación de erosión hídrica con los coeficientes dados. Este ha
resultado ser el algoritmo más costoso a causa de la cantidad de datos a mantener
actualizados.
Algoritmo de generación fluvia l y alzamiento tectóni co
vértices tiempo
4 <0,001
16 0,001
64 0,008
256 0,025
1024 0,066
4096 0,233
16384 0,961
65536 4,194
69
262144 17,159
1048576 73,812 Tabl a 12. Algori tmo de generación f luvia l
Este a lgoritmo tiene coste l ineal también, pero ta l y como sucede con los
a lgoritmos de erosión la necesidad de evaluar los vecinos de cada vértice añade
coste computacional. Otro motivo por el que este a lgoritmo es más costoso es la
necesidad de crear los grafos nodo/rama (lagos) y el árbol de lagos para simular la
erosión fluvial que uti liza este a lgoritmo.
En estas dos graficas se puede apreciar la relación entre numero de vertices y tiempo de
generación de los tres algoritmos de generación implementados. Dado que en la primera
Fi gura 80. Gráfica comparat iva de a lgoritmos de generación t iempo/vértices
Fi gura 79. Gráfica comparat iva con valores duplicados de a lgori tmos de generación t iempo/vértices
70
grafica no se aprecian bien todas las muestras se ha introducido una grafica utilizando la
mitad de muestras para que se pueda observar que el coste de los algoritmos,
efectivamente, tiene comportamiento lineal.
Estas dos figuras corresponden a la relación entre vértices y tiempo de iteración de los
algoritmos de erosión, el motivo de que se haya añadido una segunda figura con la mitad de
muestras es el mismo que existe para la primera pareja de gráficas. Una vez más queda
patente el coste lineal de los algoritmos.
Mirando las tablas y las gráficas comparativas se puede afirmar que el algoritmo de
generación más eficiente es el de desplazamiento del punto medio, seguido de el de filtrado
de Fourier. El algoritmo de generación basado en erosión fluvial y alzamiento tectónico es
mucho menos eficiente, cabe recordar que los datos medidos representan el tiempo por
Fi gura 81. Comparati va vértices/tiempo de i t eración para a lgori tmo de erosión .
Fi gura 82. Comparativa con valores dupl icados vértices/tiempo de i t eración para a lg oritmo de erosión.
71
iteración, por lo que normalmente tardaría entre 10 o 100 veces más de los datos usados en
la gráfica comparativa (según el número de iteraciones).
Aun así, habría que tener en cuenta que dada la naturaleza del último algoritmo es probable
que no se necesite usar el algoritmo de erosión hídrica sobre el terreno generado, por lo
que los tiempos podrían igualarse algo, pero no lo suficiente como para que podamos
afirmar que este algoritmo es más eficiente.
Respecto a los algoritmos de erosión, resulta evidente cual genera una carga menor en la
computadora. El algoritmo de erosión térmica es más rápido y escala de manera más suave
que el de erosión hídrica. Aun así, ambos algoritmos generan distintos efectos en la malla,
por lo que esto solo se debería tener en cuenta cuando el tiempo apremie y solo se pueda
practicar un algoritmo de erosión sobre el terreno.
Sería interesante estudiar la utilización de un vecindario de Von Newman en los algoritmos
de erosión y el de generación fluvial para reducir significativamente los costes
computacionales. Si se aplicase esta mejora, comparativamente los gráficos quedarían de
una manera similar entre los algoritmos de erosión, pero puede que valiese la pena para
diferenciar entre los algoritmos de generación.
En conclusión, los algoritmos más eficientes son el de desplazamiento del punto medio y el
de erosión térmica y una combinación de estos ya puede generar un terreno bastante
agradable, por lo que, si la primera preocupación es la eficiencia, utilizar solo esta
combinación de algoritmos seria la elección adecuada.
6.4 Pruebas de usabilidad
Este apartado corresponde a las pruebas realizadas con usuarios. Se diferencian dos partes
de estas pruebas. La primera trata de analizar la naturalidad de los terrenos, comparados
con otros, y para esto se recurre a un conjunto de usuarios para que dé su opinión ya que
este análisis es completamente subjetivo. La segunda parte es ya algo más típico en las
pruebas de usabilidad, se recurre a un conjunto de usuarios para que prueben la
herramienta y se les pide que rellenen unas cuestiones sobre esta.
6.4.1 Encuesta sobre naturali dad
La encuesta que se ha proporcionado a los usuarios consta de tres partes, cada una de estas
cumple una funcionalidad distinta.
Los resultados obtenidos con 38 usuarios han sido los siguientes:
72
Fi gura 83. Resu lt ados sobre l a encuesta “terrenos crudos”
La primera parte compara en grupos de tres terrenos los distintos algoritmos de
generación, habiéndole aplicado también los algoritmos de erosión, ya que no tiene sentido
preguntar por naturalidad presentando terrenos “crudos”. En esta primera parte los
terrenos tienen pocos vértices (26 por lado), pudiéndose apreciar la geometría de la que
están compuestos a simple vista. Los usuarios tenían que elegir uno de cada grupo.
Fi gura 84. Result ados de la encuesta con muchos vértices
La tercera parte es idéntica a la primera, pero con terrenos con muchos más vértices (2 10
por lado). Esta parte existe para observar si el aumento de vértices afecta en algo a las
elecciones de los usuarios o la mayoría se mantiene con las mismas elecciones que en la
primera parte.
73
Fi gura 85. Result ados de la encuesta comparando Fourier/Punto medio
La segunda parte es un grupo de diez terrenos, creados con los algoritmos de
desplazamiento del punto medio y filtrado de Fourier, el objetivo es analizar estos por
separado porque son métodos más parecidos entre sí que con el de generación basada en
levantamientos tectónicos y erosión fluvial. Los usuarios tenían que elegi r cinco de estos
diez terrenos.
Comparando los resultados de la primera y la tercera parte observamos resultados
esperados. Mientras que en la primera parte la elección de terreno es muy variable a causa
de que se puede observar la geometría y realmente no parecen muy naturales, en la tercera
parte hay una clara tendencia a elegir el algoritmo de generación basado en alzamientos
tectónicos y erosión fluvial en los terrenos más específicos y filtrado de Fourier en los
otros.
Esto era de esperar ya que los terrenos específicos solo se podían lograr bien con el
algoritmo de generación basada en alzamientos tectónicos y el algoritmo de filtrado de
Fourier tiene una mayor dimensión fractal que el algoritmo de desplazamiento del punto
medio. Por otra parte, parece que en el tipo de terreno “colinas” ha sucedido justo lo
contrario a lo esperado, esto podría deberse a la iluminación del terreno.
La segunda parte viene a confirmar que se prefiere el filtrado de Fourier al de
desplazamiento del punto medio, probablemente por los motivos ya expuestos.
En el anexo dos se pueden observar la anotación numérica de los participantes.
6.4.2 Uso de la herrami enta
Para comprobar cuál es la respuesta de los usuarios respecto al uso de la herramienta, se ha
solicitado a un pequeño grupo de estos que la utilicen para generar un terreno de cada tipo,
como los vistos en la encuesta proporcionándoles el manual de usuario. Se ha apuntado
cuanto tiempo ha requerido cada usuario, cuantos terrenos ha logrado hacer y se les ha
74
pedido que comenten cuan fácil les ha resultado el uso de la herramienta, su nivel de
satisfacción con los resultados y que errores han detectado o que cosas cambiarían.
Se han seleccionado seis usuarios, dos usuarios de edad avanzada, que no están
acostumbrados al uso de ordenadores, dos usuarios jóvenes, acostumbrados al uso de
ordenadores y dos usuarios familiarizados con Blender.
Tras analizar los resultados se han llegado a las siguientes conclusiones: La interfaz de la
herramienta ha resultado ser adecuada e intuitiva pero los usuarios apuntan que algunos de
los elementos propios de la interfaz de Blender son de complicado manejo. La mayoría de
usuarios ha sido capaz de generar todos los tipos de terreno y están satisfechos con los
resultados que presenta la herramienta. Se debería mejorar el algoritmo de coloreado
porque es demasiado simple. El manual de usuario era demasiado denso según los usuarios,
por lo que se ha cambiado y hecho más visual.
Los resultados de esta encuesta se pueden consultar en el tercer anexo.
En conclusión, se han logrado los objetivos de este trabajo, pero queda espacio para
mejora, sobretodo en el algoritmo de coloración, ya que no es en lo que más se ha centrado
el trabajo.
6.5 Evaluación presupuestaria
Una vez finalizado el proyecto hace falta hacer una evaluación del cumplimiento de la planificación inicial. Este ha sido el diagrama Gantt final:
Fi gura 86. Diagrama de gantt
Existen cambios significativos temporales en cuanto a las tareas de implementación de
algoritmos de generación y erosión, hay un periodo de pausa en el proyecto que no estaba
planificado y también hay cambios significativos en la duración de las pruebas de
rendimiento, usabilidad y elaboración de la memoria. A continuación, se explica cada uno de
los cambios respecto a la planificación inicial y se hace una re-evaluación presupuestaria.
Las tareas de implementación de algoritmos comienzan antes de acabar las tareas de diseño
porque se ha aprovechado trabajo realizado para la asignatura de métodos avanzados de
animación y tiene una duración mucho más extensa de lo previsto porque tuve que
compaginarlo con diversos trabajos del segundo cuatrimestre de cuarto curso.
La pausa que sucede en junio y julio se debe a que comencé las prácticas de empresa y como
no lograba compaginar el proyecto con el trabajo solicité trabajar a jornada completa y
retomé el proyecto cuando cumplí las horas de prácticas.
Las pruebas de rendimiento duraron más de lo previsto porque un error no detectado
causaba que el algoritmo de generación de terreno basado en alzamientos tectónicos y
generación fluvial tardase demasiado tiempo en ejecutarse y cuando se descubrió el error
hubo que rehacer estas pruebas.
En cuanto a las pruebas de usabilidad, el recabar información mediante encuestas costó
mucho más tiempo del previsto.
Por último, el retraso en la elaboración de la memoria se debió a que por motivos personales
no pude dedicarle tiempo durante prácticamente nada del mes de noviembre.
Con todo, la evaluación presupuestaria cambia, ya que ha habido cambios en las horas del
proyecto.
La duración total del proyecto ha sido de 212 días así que la amortización del equipo queda
en 101’5 euros, el coste del personal queda en 9285’76 euros y los gastos indirectos en 1985
euros. En la tabla de a continuación se pueden observar los cambios en el coste económico:
Costes Estimación Real Equipo informático 60’9 euros 101’5 euros
Personal 5.970 euros 9.285’76 euros
Gastos indirectos 1.220 euros 1.985 euros Total 7.250 euros 11.371 euros Tabl a 13. Comparativa de costes estimados y rea les
En conclusión, el proyecto ha durado bastante más de lo esperado por distintos motivos y
esto se ha visto reflejado en los costes.
77
7. Conclusiones
En este apartado final se exponen las conclusiones sacadas de la realización del proyecto y se
presentan posibles vías de trabajo futuro.
7.1 Conclusiones
Con la realización de este proyecto una conclusión lógica es la de la importancia de las tareas
de recabar información, una vez finalizadas las tareas de documentación es mucho más fáci l
realizar la implementación ya que se cuentan con distintos ejemplos de antemano y la
mayoría de problemas que podemos encontrar ya se encuentran documentados por otras
personas.
Cabe destacar la importancia de realizar todos los tipos de pruebas que se han realizado, este
proyecto no estaría completo sin ellas, ya que el último algoritmo de generación contenía un
error que solo pudo der detectado gracias a las pruebas de rendimiento.
Las tareas de planificación han ayudado mucho al desarrollo del proyecto ya que ata jaron de
antemano distintos problemas que podrían haber alargado aún más la duración de este
proyecto.
En cuanto los objetivos de este proyecto, considero que, gracias a las pruebas de usabil idad,
la documentación presente y los terrenos generados se puede afirmar que se han conseguido
todos los objetivos descritos en el capítulo 2.
En cuanto a la comparación entre distintos algoritmos, la naturalidad de estos ha resultado
ser particularmente de medir, incluso con distintos usuarios y se ha llegado a la conclusión de
que cada uno de los algoritmos cumple mejor unos objetivos que otros, por ejemplo, el
algoritmo de desplazamiento del punto medio ha tenido una buena acogida por parte de los
usuarios cuando se utiliza para generar terrenos similares a planicies mientras que en otros se
escogía el de filtrado de Fourier, esto se debe a que en ciertos tipos de terreno se espera
homogeneidad, que es una de las limitaciones que presenta el algoritmo de desplazamiento
del punto medio.
Los algoritmos más eficientes han resultado ser los más sencillos de implementar, es decir
los de desplazamiento aleatorio del punto medio y erosión térmica. Sin embargo, cabe
destacar que los resultados más favorecedores se han obtenido al aplicar los 2 algoritmos de
erosión, primero hídrica y después térmica.
Por último, cabe destacar que, aun siendo el algoritmo más costoso, se debería utilizar el
algoritmo basado en alzamiento tectónico y erosión fluvial para conseguir terrenos con
formaciones muy específicas ya que es el único algoritmo que proporciona el control
78
necesario para ello. Por otra parte, el algoritmo de filtrado de Fourier y el de generación
fluvial tienen una limitación muy molesta y es que sus bordes siempre han de estar a altura 0 ,
restándole naturalidad al terreno resultante, aunque esto podría ser muy útil si planeáramos
unir distintos terrenos y después utilizar un algoritmo de erosión sobre el terreno resultante.
Respecto a las limitaciones de los algoritmos de erosión, e algoritmo de erosión té rmica
parece darle siempre al terreno resultante aspecto de dunas y el algoritmo de erosión hídrica
no siempre genera cambios patentes, por esto mismo parece necesario utilizar una
combinación de ambos.
En última instancia cada algoritmo es útil si se tienen en cuenta sus limitaciones, al algoritmo
de desplazamiento del punto medio resulta la mejor elección para generar terrenos en los que
se espera homogeneidad, el algoritmo de generación fluvial es crucial si se pretende realizar
terrenos con formaciones específicas y el algoritmo de filtrado de Fourier sería el mejor para
el resto de casos. Los algoritmos de erosión se complementan muy bien entre ellos y a no ser
que se busque un efecto particular en el que sean útiles sus limitaciones (como por ejemplo
generar un desierto, en ese caso sería útil utilizar solo la erosión térmica) deberían utilizarse
siempre juntos.
En conclusión, el proyecto ha llegado a buen término a pesar de los retrasos ocasionados por
causas ajenas al mismo.
7.2 Trabajo futuro
Una de las posibles vías para trabajo futuro seria adaptar esta herramienta a otros
modeladores, evidentemente, pero la herramienta en si tiene muchas posibles mejoras en las
que trabajar, a continuación, se exponen varias de estas posibles mejoras.
La primera y más necesaria es la implementación de un algoritmo de coloreado más complejo
que tenga en cuenta la forma del terreno a la hora de asignar texturas y que tuviese una
mayor cantidad de texturas a la que recurrir.
En el apartado del estado del arte se puede observar que existen muchas más técnicas de
generación de terreno y de erosión, implementar y estudiar varias de ellas sería interesante.
Por último, se podría intentar reducir el coste de los algoritmos que utilizan vecindarios,
comparando resultados entre distintos vecindarios.
79
Anexo 1: Manual de Usuario
La finalidad de esta herramienta es facilitar el modelado de terrenos con un aspecto natural,
proporcionando terrenos generados proceduralmente que pueden ser utilizados
directamente, o bien presenten una base sólida sobre la que modelar. En este manual se
exponen las diversas funcionalidades de la herramienta y se explica cómo utilizarlas.
1. Métodos de generación
a. Desplazami ento del punto medio (generar terreno 1)
Este método de generación pide que se introduzca un factor de suavizado, el orden de los
lados de vértices, una variable amplitud y que se marque o no una casilla en la que pone
“esquinas”. A continuación, se detallan las posibilidades que estas variables permiten simular.
El factor de suavizado determina cuán escarpado será el terreno generado. Su valor debería
oscilar entre el cero y el dos, y cuanto más cercano sea el factor empleado al dos, más suave
será el terreno generado. Por ejemplo, un valor cercano a cero generará un terreno muy
irregular y escarpado, semejante a un gran conjunto de estalagmitas. En cambio, si el valor se
acerca al dos se obtendrá como resultado una llanura prácticamente lisa.
El orden de los lados es un algoritmo que trabaja con mallas cuadradas, dónde cada lado de
Fi gura 88. Factor de suavizado 0 .1
Fi gura 87. Factor de suavizado 1
Fi gura 90. Orden 2
Fi gura 89. Orden 3
80
la malla tiene ; de modo que si se le da a el valor dos cada lado de la malla tendrá
cinco vértices, y el total de vértices en la malla será de 25; si se introduce un tres cada lado
tendrá nueve vértices dando un total de 81 vértices y así sucesivamente.
La amplitud determina cómo de grande puede ser el desplazamiento de los vértices hacia
arriba o hacia abajo, es decir, cuán altas pueden llegar a ser las montañas que se generen con
el terreno. Es recomendado que este valor sea acorde al tamaño del terreno, ya que unas
montañas muy altas en un terreno pequeño no parecerán naturales.
La casilla de las esquinas permite elegir si se quiere inicializar el valor de las esquinas de la
malla o se prefiere dejar el valor por defecto de cero. Si se marca esta opción, el algoritmo
espera que se le proporcione una malla del tamaño indicado en los valores anteriores cuyas
esquinas estén inicializadas a la altura deseada por el usuario. Por ejemplo, se podría generar
una malla de vértices con dos de sus esquinas a cero y las otras dos a 30, y el terreno
generado estaría pronunciadamente en pendiente, como si se tratase de la ladera de una
montaña.
Fi gura 91. Ampl itud 10 en un t erreno de orden 7 ( 16641 vértices)
81
Fi gura 93. Ampli tud 100 en un t erreno de orden 7 ( 16641 vértices)
Fi gura 92. Malla para inicial izar l as esquinas y su resul tado
82
b. Filtrado de Fourier (generar terreno 2)
Este algoritmo es el más sencillo de utilizar, pero el que menos control ofrece sobre los
resultados obtenidos. El comportamiento es similar al del algoritmo anterior, pide que se
introduzca un dato de amplitud, un factor de suavizado y el orden de vértices por lado.
El factor de amplitud tiene efectos similares al del primer algoritmo, pero se ha
comprobado que normalmente este algoritmo genera terrenos de menor altitud así que el
valor de amplitud introducido debe ser mayor en comparación con el del primer algoritmo
para obtener resultados semejantes.
El factor de suavizado en este algoritmo tiene un rango de valores aceptables más estricto y
solo admite valores entre el cero y el uno ambos incluidos. Cuanto mayor sea el factor de
suavizado elegido más suave será el terreno generado, siendo en uno cuando obtenemos una
malla plana.
Fi gura 96. Factor de suavizado en 0 ,1
Fi gura 95. Ampli tud 20 en un t erreno de orden
7 ( 16384 vértices)
Fi gura 94. Ampli tud 100 en un t erreno de orden
7 ( 16384 vértices)
83
Fi gura 97. Factor de suavizado 0 ,9
El orden de vértices, al igual que en el algoritmo anterior, indica las dimensiones en vértices
de la malla cuadrada sobre la que se generará el terreno; sin embargo, la fórmula para el
filtrado de Fourier será en lugar de que se empleaba en el desplazamiento de
punto medio.
c . Generaci ón fluvial
Este algoritmo, a diferencia de los otros dos, siempre parte de una malla inicial. También
solicita un dato de amplitud, pero su comportamiento es distinto.
El único requisito a cumplir con la malla inicial es que esta sea cuadrada. El algoritmo recoge
las distintas alturas de los vértices de la malla proporcionada y los registra como valores de
crecimiento, los grupos de vértices proporcionados más altos se transformarán en montañas.
Dado que las mallas generadas por los otros dos algoritmos cumplen el requisito necesario,
pueden ser empleadas como base para este algoritmo; sin embargo, la mayor ventaja que nos
ofrece esta implementación es el gran control que permite sobre el resultado final. Se
recomienda emplear el modo de edición de Blender para modificar con facilidad la malla
inicial.
A diferencia de en los algoritmos previos, aquí el valor de amplitud establece la altura
máxima; ningún vértice generado superará la altura introducida como valor de amplitud; y es
fácil asumir que el vértice o grupo de estos cuyo valor de altura sea muy alto llegue a tener la
altura marcada por el valor de la amplitud.
Algunos ejemplos de mallas iniciales y sus resultados con una amplitud de 100.
Fi gura 98. Malla inicia l Fi gura 99. Result ado
84
2. Métodos de erosión
Estos algoritmos siempre se aplican sobre una malla ya existente y modifican sus alturas.
a. Erosión térmica
Este algoritmo simula la erosión causada por la exposición de materiales a altas temperaturas.
Sobre la malla se percibe su efecto en que nivela las alturas de los vértices suavizándolas,
pero conservando la estructura del terreno obtenida al aplicar los métodos de generación de
terreno previos.
El algoritmo de erosión térmica requiere dos datos de entrada; el número de iteraciones y la
pendiente máxima.
El número de iteraciones es el número de veces que se quiere que el algoritmo recorra la
malla evaluando las distancias entre vértices y reduciendo las más grandes. Llegado un punto,
ningún vértice superará la altura máxima con su vecino y se dejarán de producir cambios
sobre la malla, de modo que, aunque falten iteraciones por realizar, estas no provocarán
Fi gura 101 . Mal la inicia l Fi gura 100. Resul tado
Fi gura 102. Terreno Crudo
85
ningún cambio en el resultado final y solo aumentarán el tiempo de ejecución. Por tanto, se
recomienda no introducir valores muy altos ya que simplemente se ralentizará la ejecución de
la herramienta de manera proporcional a las iteraciones innecesarias pedidas.
El otro dato a introducir es la pendiente máxima, que se define como la distancia máxima
admitida entre vértices vecinos. Una vez se marque la pendiente que se desea, se nivelaran
todos los vértices que superen la distancia introducida.
b. Erosión Hídrica
Este algoritmo simula la erosión causada por la lluvia sobre el terreno. Pide que se
introduzcan cinco valores; el número de iteraciones a realizar, el coeficiente de solubilidad, el
coeficiente de evaporación, el coeficiente de capacidad y la lluvia por vértice.
Fi gura 103. Erosión con pendient e máxima 2
Fi gura 104. Erosión con pendente máxima 1
86
El número de iteraciones se define como el número de veces que el algoritmo recorrerá la
malla, añadiendo agua en cada vértice y simulando su movimiento sobre la malla al arrastrar
el sedimento; es decir, modificando las alturas y simulando erosión.
El coeficiente de solubilidad representa cómo de soluble es el material de la malla. Si se
desea que el agua pueda llevarse mucho material cuando se simule la erosión, este coeficiente
debería ser alto. Se recomienda dejar este coeficiente entre 0.01 y 0.10 ya que valores más
altos podrían provocar comportamientos no deseados.
Fi gura 105. Terreno con 100 i teraciones de erosión hídrica
Fi gura 107. 20 i t eraciones de e. hídrica y coef . de solubil idad: 0 .05
Fi gura 106. 20 i t eraciones de e. hídrica con coef . de solubi lidad: 0 .25
87
El coeficiente de evaporación es el porcentaje, en tanto por uno, de agua que se evapora a l
final de cada iteración. Sus valores deberán estar entre cero y uno, aunque se recomienda no
superar el 0.75 para evitar picos en los vértices, aunque este efecto se puede corregir
aplicando el algoritmo de erosión térmica.
El coeficiente de capacidad es la cantidad de material que puede retener el agua, cuanto
menor sea este valor más material será depositado en los vértices inferiores después del paso
de evaporación. Si se pretende trasladar el material de vértices superiores a inferiores el va lor
debería ser bajo, mientras que si se pretende reducir la altura de los vértices altos sin
aumentar las de otros este valor debería ser alto. Se recomienda dejar este coeficiente entre
los valores 0.01 y 0.10.
Fi gura 109. Terreno con 20 i t eraciones de eros ión hídrica con coef iciente de evaporación 0
Fi gura 108. Terreno con 20 i t eraciones de erosión hídrica con coef iciente de evaporación 1
88
Fi gura 111 . Terreno con 20 i teraciones de erosión hídrica con coeficient e de capacidad 0
Fi gura 112 . Terreno con 20 i teraciones de erosión hídrica con coef iciente de capacidad 0 .5
Fi gura 110 .Terreno con 20 i teraciones de erosión hídrica con coeficiente de l luvia 0 .1
89
La lluvia por vértice, figura 109, es la cantidad de agua que se le añade a cada vértice en
cada iteración, a mayor cantidad, más visible serán los efectos del algoritmo en menos
iteraciones. No se recomienda superar el valor 0.1 ya que añadiendo cantidades excesivas de
lluvia por vértice se pueden producir comportamientos extraños en la malla.
c . Algoritmo de Coloración
Este algoritmo se encarga de asignar materiales a la malla. Se han creado cuatro materiales
básicos, que serán asignados a cada una de las caras de malla según los parámetros
introducidos como delimitadores. Dichos parámetros serán pendiente de la roca, nivel del
mar y altura de la nieve.
El nivel del mar indica a qué altura está el agua en nuestro terreno; todas las caras cuyo
centro quede por debajo de la altura elegida tendrán asignado el material de agua y sus
vértices serán elevados hasta alcanzar la altura del nivel del mar.
La pendiente roca analiza la inclinación de las caras; si la inclinación de la cara supera el
umbral definido por la pendiente introducida, se le asigna el material de roca. La pendiente se
introduce en forma de tanto por 1, de forma que si se introduce una pendiente con valor 0
todas las caras que no sean totalmente horizontales tendrán asignadas la textura de roca y si
se introduce una pendiente con valor 1 solo las caras que estén completamente verticales
tendrán asignada la textura de roca.
La altura de nieve indica a partir de que altura se coloca nieve en vez de hierba (cumbres
nevadas).
Fi gura 113 . Terreno con 20 i teraciones de erosión hídrica con coef iciente de l luvia 0 .5
90
Fi gura 117 . Terreno a colorear
Fi gura 116 . Terreno con pendiente roca 0 .5, a lt ura de mar 0 y a l tura de nieve 50
Fi gura 115 . Terreno con pendiente roca 0 a l tura de mar -15 y a l tura de nieve 50
Fi gura 114 . Terreno con pendiente de roca 1 a l tura de nieve 0 y a l tura de mar -50
91
Anexo 2: Encuesta naturalidad
Este documento presenta una serie de imágenes que representan terrenos o landscapes. Por
favor, selecciona aquellos que te resulten más naturales o, sencillamente los que te gusten
más. El documento está dividido en tres partes. La primera parte presenta conjuntos de tres
imágenes y debes elegir solo una, estas imágenes son terrenos con pocos vértices, por lo que
se puede apreciar que son constructos geométricos. La segunda parte tiene 10 imágenes de
entre las que quiero que elijas 5. La última parte es idéntica a la primera, pero con terrenos
con un mayor número de puntos.
Parte 1
Colinas
Fi gura 118 . Col inas 2
Fi gura 119 . Col inas 1
92
Delta
Fi gura 121 . Col inas 3
Fi gura 122. Delta 1
Fi gura 120. Delta 2
93
Ladera
Fi gura 123. Delta 3
Fi gura 124. Ladera 2
94
Montañas
Fi gura 128. Ladera 1
Fi gura 125.Ladera 3
Fi gura 126. Montañas 1
Fi gura 127. Montañas 2
95
Planici e
Fi gura 129. Montañas 3
Fi gura 131 . Planicie 1
Fi gura 130. Planicie 2
96
Parte 2
Fi gura 132. Planicie 3
Fi gura 133. Escena 1
97
Fi gura 136. Escena 2
Fi gura 135. Escena 3
Fi gura 134. Escena 4
98
Fi gura 139. Escena 5
Fi gura 138. Escena 6
Fi gura 137. Escena 7
99
Fi gura 142. Escena 8
Fi gura 141 . Escena 9
Fi gura 140. Escena 10
100
Parte 3
Colinas
Fi gura 145. Col inas 1
Fi gura 144. Col inas 2
Fi gura 143. Col inas 3
101
Delta
Fi gura 148. Delta 1
Fi gura 147. Delta 2
Fi gura 146. Delta 3
102
Ladera
Fi gura 151 . Ladera 1
Fi gura 149. Ladera 2
Fi gura 150. Ladera 3
103
Montañas
Fi gura 154. Montañas 1
Fi gura 153. Montañas 2
Fi gura 152. Montañas 3
104
Planici e
Fi gura 157. Planicie 1
Fi gura 156. Planicie 2
Fi gura 155. Planicie 3
105
Anexo 3: Encuestas usabilidad
En este anexo se listan las encuestas de usabilidad rellenadas por cada uno de los usuarios del
grupo seleccionado. La prueba realizada consistía en crear un terreno de cada tipo, como los
vistos en el anexo 2.
Pr imer u su ario
Varón, 58 años, nivel de usuario: básico.
Distintos tipos de terreno que consiguió generar: 1
Comentario sobre la dificultad de uso: No parece demasiado difícil, pero sería necesario
adquirir práctica para utilizar de manera fluida la herramienta.
Comentario sobre la satisfacción con los resultados: Los resultados que he conseguido
me han parecido satisfactorios, es lo que esperaba.
Comentario sobre errores encontrados o mejoras sugeridas: Todo parece funcionar
bien, pero, cuando se están generando los terrenos, el programa no muestra ninguna reacción
y da la sensación de que se ha quedado congelado cuando generas terrenos grandes
Segu n do u su ario
Varón, 23 años, nivel de usuario: intermedio.
Distintos tipos de terreno que consiguió generar: 4
Comentario sobre la dificultad de uso: Al principio no tenía mucha idea de cómo
utilizarlo, pero enseguida se aprende a usarlo, aunque el algoritmo de generación fluvial no es
muy intuitivo.
Comentario sobre la satisfacción con los resultados: No lo sé, me parece que la mejor
manera de conseguir un terreno guay es usar el algoritmo de generación fluvial y practicarle
erosiones y los algoritmos que más he sabido usar son los otros.
Comentario sobre errores encontrados o mejoras sugeridas: No he encontrado
problemas ni se me ocurren mejoras, los problemas que he tenido han ocurrido porque no
estoy familiarizado con Blender.
Ter cer u su ario
Mujer, 23 años, nivel de usuario: experto.
Distintos tipos de terreno que consiguió generar: 5
106
Comentario sobre la dificultad de uso: Muy fácil, menos la parte del editor (que ha sido lo
más divertido) pero que no recordaba cómo utilizar.
Comentario sobre la satisfacción con los resultados: Particularmente con erosión fluvia l
y jugar con el editor; pero poner valores inverosímiles en las erosiones genera terrenos muy
de ensueño así que felicidades.
Comentario sobre errores encontrados o mejoras sugeridas: La cámara de Blender
siempre me ha dado muchos problemas, pero no veo nada mejorable en el plug-in.
Cu ar to u su ario :
Mujer, 28 años, nivel de usuario: intermedio.
Distintos tipos de terreno que consiguió generar: 5
Comentario sobre la dificultad de uso: El manual es muy denso, debería haber imágenes
para que fuese más atractivo. El plug-in tiene muchas limitaciones de diseño y la gente que no
esté acostumbrada a usar programas no le será sencillo usarlo, pero las limitaciones más que
por el plug-in diría que vienen de la interfaz de Blender.
Comentario sobre la satisfacción con los resultados: En general los resultados están
bien, pero si intentas hacer algo tipo volcán el algoritmo de coloración resulta muy limitado.
Comentario sobre errores encontrados o mejoras sugeridas: El coloreado está muy
limitado, trabajar solo con pendientes para ver dónde queda acumulada la nieve no está bien.
Qu in to u su ario :
Mujer, 53 años, nivel de usuario: básico.
Distintos tipos de terreno que consiguió generar: 5
Comentario sobre la dificultad de uso: Tardas algo en acostumbrarte, pero en seguida se
intuye que valores necesitas para hacer distintos tipos de terreno.
Comentario sobre la satisfacción con los resultados: no sé, si, en general si, mejoraría el
algoritmo de coloreado, es muy simple.
Comentario sobre errores encontrados o mejoras sugeridas: realmente los problemas
que he visto está relacionado con blender, la cámara es muy rara.
Sex to u su ario:
Mujer, 22 años, nivel de usuario: básico.
Distintos tipos de terreno que consiguió generar: 5
Comentario sobre la dificultad de uso: Ha resultado difícil, porque desconozco la interfaz
de Blender, las variables eran intuitivas, con prueba y error consigues las cosas.
107
Comentario sobre la satisfacción con los resultados: si, y ha sido divertido generarlos.
Comentario sobre errores encontrados o mejoras sugeridas: Haría mas visual la interfaz,
poner una imagen representativa del efecto que causa la variable sería buena idea.
108
8. Bibliografía
[1] A. V. Astin, «Computer Development (SEAC and DYSEAC) at the National Bureau of
Standads, Washington D.C.,» National Bureau of Standards Circular, vol. 551, 25 January
1955.
[2] A. M. Noll, «Computer-Generated Three-Dimensional Movies,» Computers and
Automation, vol. 14, nº 11, pp. 20-23, November 1965.
[3] A. M. Noll, «A Computer Technique for Displaying Dimensional Hyperobjects,»
Communications of the ACM, vol. 10, nº 8, pp. 469-473, 1967.
[4] A. M. Noll, «Computer Animation and the Fourth Dimension,» AFIPS Conferencie
Proceedings, vol. 33, pp. 1279-1283, 1968.
[5] A. SIGGRAPH, «ACM SIGGRAPH Home,» SIGGRAPH, [En línea]. Available:
http://www.siggraph.org/. [Último acceso: Agosto 2016].
[6] A. R. Smith, «Tint Fill,» de SIGGRAPH 79 Conference Proceedings, Chicago, Illinois , 1979.
[7] B. Mandelbrot, The Fractal Geometry of Nature, San Francisco: W.H. Freeman, 1982.
[8] A. Inc, «About AutoDesk,» 2016. [En línea]. Available:
http://www.autodesk.com/company. [Último acceso: Agosto 2016].
[9] B. Foundation, «Blender,» 2016. [En línea]. Available: https://www.blender.org. [Último
acceso: Julio 2016].
[10] Matsumoto, Yukihiro “Matz”; Ruby-Talk; Ruby Community, «Ruby,» 2016. [En línea].
Available: https://www.ruby-lang.org/es/. [Último acceso: Julio 2016].
[11] T. N. Limited, «Sketch Up,» 2016. [En línea]. Available: https://www.sketchup.com/.
[Último acceso: Julio 2016].
[12] D. S. S. Corporation, «SolidWorks,» Dassault Systemes, 2016. [En línea]. Available:
http://www.solidworks.es/. [Último acceso: Julio 2016].
[13] AutoDesk, «Funciones de AutoCAD para diseño y documentación,» AutoDesk, Inc.,
2016. [En línea]. Available: http://www.autodesk.es/products/autocad/features/all.
[Último acceso: Julio 2016].
[14] I. Autodesk, «MAYA Herramientas para la animación y la creación de personajes,»
Autodesk, Inc., 2016. [En línea]. Available:
109
http://www.autodesk.es/products/maya/features/all. [Último acceso: Julio 2016].
[15] I. Autodesk, «3DS MAX Herramientas de modelado y renderización 3D,» Autodesk,
Inc., 2016. [En línea]. Available: http://www.autodesk.es/products/3ds-
max/features/all. [Último acceso: Julio 2016].
[16] I. Autodesk, «INVENTOR Software de CAD 3D para modelado y simulación,»
Autodesk, Inc., 2016. [En línea]. Available:
http://www.autodesk.es/products/inventor/features/all. [Último acceso: Julio 2016].
[17] I. Autodesk, «INVENTOR Software de CAD 3D para modelado y simulación,»
Autodesk, Inc., 2016. [En línea]. Available:
http://www.autodesk.es/products/inventor/features/all. [Último acceso: 2016].
[18] I. Pixologic, «Pixologic,» Pixologic, Inc., 2016. [En línea]. Available:
http://pixologic.com/zbrush/features/overview/. [Último acceso: Julio 2016].
[19] M. Computer, «MAXON 3D for the real world,» MAXON Computer, 2016. [En línea].
Available: http://www.maxon.net/en/products/cinema-
4d/features/modeling/polygon-modeling/. [Último acceso: Julio 2016].
[20] R. F. Voss, Random Fractal Forgeries in Fundamental Algorithms for Computer
Graphics, R. Earnshaw, Ed., Berlin: Springer-Verlag, 1985.
[21] G. Mastin, P. Watterberg y J. Mareda, «Fourier Synthesis of Ocean Waves,» IEEE
Computer Graphics and Applications, vol. 7, nº 3, pp. 16-23, Marzo 1987.
[22] M. Stein, «Fast and exact simulation of fractional Brownian motion,» Jourlan of
Computational and Graphical Statics, vol. 11, nº 3, pp. 587-599, 2002.
[23] D. Kroese y Z. Botey, «Spatial Process Generation,» de ectures on Stochastic Geometry,
Spatial Statistics and Random Fields, Volume II: Analysis, Modeling and Simulation of Complex
Structures, Berlin, 2015.
[24] F. K. Musgrave, C. E. Kolb y R. S. Mace, «The Synthesis and Rendering of Eroded
Fractal Terrains,» de SIGGRAPH '89 Proceedings of the 16th annual conference on Computer
graphics and interactive techniques, New York, 1989.
[25] K. F. Mustgrave, Methods for Realistic Landscape Imaging, New Haven, Connecticut:
Yale University, 1993.
[26] G. S. P. Miller, «The Definition and Rendering of Terrain Maps,» Computer Graphics, vol.
20, nº 4, pp. 39-48, 1986.
[27] G. Y. Gardner, «SIGGRAPH course notes: Functional Modelling,» de SIGGRAPH '88,
Atlanta, 1988.
110
[28] J. Olsen, Realtime Procedural Terrain Generation. Realtime Synthesis of Eroded Fractal Terrain f or
Use in Computer Games, University of Southern Denmark: Department of Mathematics
And Computer Science (IMADA), 2004.
[29] M. De Guzmán, M. Ángle Martín, M. Morán y M. Reyes, Estructuras fractales y sus
aplicaciones, Barcelona: Labor, 1993.
[30] A. Fournier, D. Fussell y L. Carpenter, «Computer Rendering of Stochastic Models,»
Communications of the ACM, vol. 25, nº 6, pp. 371-384, 1982.
[31] D. S. Ebert, K. Musgrave, D. Peachey, K. Perlin y S. Worley, Texturing and Modeling: A
Procedural Approach (Third Edition), San Francisco, CA: Morgan Kaufmann Publishers
Inc., 2002 (1994).
[32] W. L. Raffe, F. Zambetta y L. Xiaodong, «A Survey of Procedural Terrain Generation.
Techniques using Evolutionary Algorithms,» de WCCI 2012 IEEE World Congress on
Computational Intelligence, Melbourne, Australia, 2012.
[33] J.-D. Génevaux, E. Galin, E. Guérin, A. Peytavie y B. Benes, «Terrain Generation Using
Procedural Models Based on Hydrology,» de SIGGRAPH 2013, Anaheim, California,
2013.
[34] R. Forsbach y B. Benes, «Visual Simulation of Hydraulic Erosion,» Journal of WSCG, vol.
10, nº 1, pp. 79-94, 2002.
[35] K. Nicholson, GPU Based Algorithms for Terrain Texturing, D. R. Mukundan, Ed.,
Christchurch, New Zealand: Department of Computer Science & Software Engineering,
University of Canterbury, 2008.
[36] F. Loasso y H. Hoppe, «Geometry clipmaps: terrain rendering using nested regular
grids,» de SIGGRAPH 2004, New York, USA, 2004.
[37] C. Bloom, «Terrain Texture Compositing by Blending in the Frame-Buffer (aka
"Splatting" Textures),» 2 Novimebre 2000. [En línea]. Available:
http://www.cbloom.com/3d/techdocs/splatting.txt. [Último acceso: Agosto 2016].
[38] G. Cordonnier, J. Braun, M.-P. Cani, B. Benes y E. Galin, «Large Scale Terrain
Generation from Tectonic Uplift and Fluvial Erosion,» de EUROGRAPHICS 2016,
2016.