Beruflich Dokumente
Kultur Dokumente
Autor
Andrea Lluch Cruz
Tutor
Pablo Suau Prez
Septiembre, 2008
ndice
NDICE
Referencias ................................................................................................................ 87
Captulo 1
INTRODUCCIN
El primer captulo presenta los aspectos principales del proyecto. En primer lugar se
exponen las motivaciones que han llevado a la realizacin de este trabajo y las
aplicaciones que se pretenden desarrollar. En segundo lugar se describen los objetivos
fundamentales y se completan con ejemplos reales. Por ltimo, se enumeran las secciones
en las que est dividida la memoria, junto con una descripcin de su contenido.
1.1 Introduccin
La realizacin de cualquier tarea infogrfica, ya sea para la creacin de
videojuegos, recorridos virtuales, infoarquitectura o presentaciones multimedia, requiere el
trabajo de profesionales en diseo, modelado y animacin que realizan los proyectos de
forma manual, y muchas veces sin aprovechar material previo. Pongamos por ejemplo el
estudio de varias montaas del mundo, de las cuales se tienen sus mapas topogrficos y se
necesita el modelo 3D ms exacto posible de cada una de ellas. Debido a que esta tarea es
muy lenta y complicada de realizar, es interesante conseguir una aplicacin que elabore los
modelos 3D y que se pueda utilizar para prximos estudios topogrficos. Es por ello que
este proyecto surge de la necesidad de acelerar o simplificar el proceso de creacin de
material infogrfico, convirtiendo tareas muy costosas en sencillas aplicaciones
automatizadas.
CAPTULO 1. INTRODUCCIN
CAPTULO 1. INTRODUCCIN
El volcn Mauna Loa es uno de los ms activos de las islas Hawaianas. Este
volcn es el ms conocido por ser el ms grande de la Tierra, con un volumen
estimado en aproximadamente 75.000 km.
10
CAPTULO 1. INTRODUCCIN
El volcn Mauna Kea es vecino al Mauna Loa, y es uno de los cinco volcanes que
forman las islas hawaianas. El Mauna Kea es ms alto que el Mauna Loa, aunque
no llega a superar su volumen por no estar tan sumergido en la tierra.
11
12
Captulo 2
HERRAMIENTAS
2.1 Blender
Blender es un programa especializado en el modelado y la creacin de grficos
tridimensionales. La ventaja que tiene con respecto a otros programas de 3D es que es un
programa multiplataforma, puede ser modificado al disponer de su cdigo fuente abierto y
es software libre, por lo que se puede descargar gratuitamente desde su web [1].
En la figura 2.1 se muestra la interfaz que se presenta al inicio de la ejecucin de
Blender. En dicha figura se puede ver la pantalla dividida en dos paneles, el ms grande es
la ventana 3D y el panel inferior es la ventana de botones, donde se pueden encontrar todas
las opciones disponibles para modificar los objetos de la escena 3D.
13
14
CAPTULO 2. HERRAMIENTAS
2.2 Python
Los scripts se realizan para ser ejecutados por el intrprete Python[5] que incorpora
Blender. El editor Python de Blender lo podemos ver en la ventana izquierda de la figura
2.2. Python fue diseado por Guido Van Rossum y es un lenguaje de programacin de alto
nivel, interpretado, interactivo y orientado a objetos. Un programa escrito en Python es
bastante ms corto que su equivalente en C. Adems, su lectura resulta ms fcil que si
utilizramos otros lenguajes de programacin. Python al igual que Blender est en
constante avance y ha experimentado un aumento muy significativo del nmero de
programadores y empresas que lo utilizan, entre ellas Google.
15
16
CAPTULO 2. HERRAMIENTAS
Mdulo principal
Blender
Submdulos
Armature
BezTriple
BGL
Camera
Curve
Draw
Effect
Geometry
Group
Image
Ipo
Key
Lamp
Lattice
Lybrary
Material
Mathutils
Mesh
Metaball
Modifier
NMesh
Noise
Object
Registry
Scene
Sound
Text
Text3d
Texture
TimeLine
Types
Window
World
sys
NLA
Action
IpoCurve
MeshPrimitives
Pose
Coinstraint
ActionStrips
Radio
Render
Font
Theme
17
18
CAPTULO 2. HERRAMIENTAS
El script Lsystem resulta muy til porque genera el rbol y le aade textura, con lo
que nos evitamos de su texturizado posterior. Los rboles que se crean con Lsystem son
tambin bastante realistas, pero es mucho ms difcil conseguir buenos resultados porque
se debe conocer bien el funcionamiento de cada una de las opciones de la aplicacin.
En la figura 2.5 se muestra la interfaz que se presenta tras la ejecucin del
modelador Lsystem y la generacin de un rbol. En la ventana de la izquierda se puede ver
la vista de cmara y en la ventana de la derecha todas las opciones disponibles para generar
los rboles.
19
Captulo 3
DISEO Y DESARROLLO DEL MDULO 1
MODELADO DE COLINAS Y DISTRIBUCIN DE
VEGETACIN EN SU SUPERFICIE
El captulo 3 describe el cdigo fuente junto con las explicaciones de los algoritmos,
mtodos y distintos sistemas que se han estudiado para la realizacin del primer script.
Este primer script tiene dos funciones. Por un lado, est dedicado a la obtencin
totalmente automatizada de una montaa en 3D, a partir de una imagen 2D de un mapa
topogrfico. Por otro lado, nos brinda la posibilidad de distribuir automticamente
vegetacin en la superficie montaosa. En la primera parte, el usuario debe introducir una
imagen de un mapa topogrfico de una colina y el script muestra una representacin
tridimensional de la montaa texturizada. En la segunda parte, el usuario debe
seleccionar qu tipo de vegetacin pretende colocar en las coordenadas dadas por un
fichero de texto, creado con el mdulo descrito en el siguiente captulo.
21
sobre la interfaz, como por ejemplo presionar un botn. Los eventos enlazan las acciones
del usuario con las funciones o manejadores asociados a dichas acciones.
La programacin con eventos es mucho ms sencilla y eficaz que la programacin
tradicional cuando se trabaja con interfaces grficas, ya que obtendramos un cdigo lleno
de condicionales y llamadas a funciones. Al comenzar la ejecucin del programa primero
se cargan todos los mdulos necesarios, a continuacin se llevan a cabo las inicializaciones
de los eventos y dems cdigo inicial, y finalmente se ejecuta la funcin Register, que se
encarga de trabajar con eventos.
Register se encuentra alojado en el mdulo Draw, por lo que antes ya se ha cargado
este mdulo. Register adems tiene tres parmetros, que son tres funciones que segn el
estado de los eventos relacionan las acciones del usuario con sus funciones
correspondientes. A la primera funcin de Register se le ha llamado GUI, por ser la
encargada de definir botones y textos para dibujarlos en el interfaz. Los botones y textos se
generan con el mdulo Draw. Event es la segunda funcin y es la que maneja los eventos
de teclado y ratn. La tercera funcin, bevent, ejecuta funciones segn los eventos
generados en las acciones del usuario. Por lo tanto, las funciones para cargar el mapa
topogrfico, cargar el fichero de texto, generar el terreno y distribuir vegetacin en la
superficie se llaman desde la funcin bevent, que es la que mayor control ejerce en el
script.
22
23
La energa interna consta de dos trminos. Vs (s) y vss (s) son las derivadas de
primer y segundo orden. La primera logra que el snake acte como membrana y la segunda
permite conseguir esquinas. Estos factores se ponderan con
, que representan la
24
25
194
388
582
776
0
387; 12
193; 52
388; 12
582; 56
581; 56
194; 52
63; 152
704; 152
153
705; 153
62; 153
387; 245
388; 245
10; 305
343; 305
488; 305
757; 305
10; 306
343; 306
488; 306
757; 306
306
387; 360
388; 360
73; 458
694; 458
459
74; 459
193; 545
581; 541
194; 545
387; 585
388; 585
693; 459
582; 541
612
Figura 3.2: Mapa con la direccin de la lectura de los puntos de corte con las rejillas
Este sistema de seguimiento de curva est dispuesto para rejillas en las que hay dos
puntos de control, que son los puntos de interseccin de la curva con la rejilla. Si slo
hubiese un punto de control se podra contemplar aadiendo ms casos, pero si hay tres o
cuatro puntos de control no hay manera alguna de solucionarlo. Por lo que este sistema se
desestim al dar problemas en rejillas con tres y cuatro puntos de control. En la figura 3.3
se muestra un ejemplo de una rejilla con cuatro puntos de control.
26
27
194
388
582
776
0
193; 52
194; 52
387; 12
388; 12
582; 56
581; 56
704; 152
63; 152
153
62; 153
705; 153
388; 245
387; 245
10; 305
306
488; 305
343; 305
10; 306
343; 306
488; 306
387; 360
757; 305
757; 306
388; 360
694; 458
73; 458
459
74; 459
193; 545
194; 545
387; 585
581; 541
388; 585
693; 459
582; 541
612
Figura 3.4: Ejemplo de puntos de corte en un mapa sencillo de dos elipses
Para cada celda o rejilla se crea un objeto de tipo Rejilla, donde se guardan las
coordenadas de los puntos de corte. Las coordenadas del eje x se almacenan en el atributo
con terminacin .x, y las coordenadas del eje y en el atributo con terminacin .y. Los
primeros objetos que se obtienen en el ejemplo de la figura 3.4 se detallan a continuacin
junto con la imagen de la rejilla a la que se refiere.
Objeto Rejilla 1:
self.x = 193, 63
Objeto Rejilla 2:
28
Objeto Rejilla 3:
Objeto Rejilla 4:
Objeto Rejilla 5:
self.x = 62, 10
Objeto Rejilla 6:
29
Los puntos de control que se van hallando se guardan en los atributos con
terminaciones .pcx y .pcy. El proceso que se sigue para ordenar los primeros objetos
Rejilla del ejemplo de la figura 3.4 se detalla a continuacin.
30
Lista[0]:
Lista[0]:
self.pcy = 52
self.pcy = 52
31
Lista [1]:
32
3.4 Interpolacin
La interpolacin es el proceso mediante el cual obtendremos, a partir de los puntos
de control de una curva, una expresin analtica que nos permitir calcular cualquier punto
de la misma. Esto puede servir, por ejemplo, para dibujar dicha curva. En primer lugar, se
puede pensar que al elegir un nmero elevado de subdivisiones en el mtodo de Marching
Cubes se obtienen suficientes puntos de control y que no es necesario interpolar. Sin
embargo, para generar la malla necesitamos que todas las curvas de nivel tengan el mismo
nmero de puntos. Adems, a partir de la interpolacin podemos obtener ms o menos
polgonos en funcin del nmero de puntos y as controlar la precisin final del modelo.
33
+
+
+
.
Donde bi son los trminos independientes de la matriz y fi los valores de los puntos.
34
Figura 3.6: Generacin de la malla a partir de los vrtices de curvas de nivel adyacentes
35
36
37
38
Prewitt
-1
-1
-1
-1
-1
-1
Gx
Gy
Sobel
-1
-1
-1
-2
-1
Gx
Gy
39
40
41
42
43
44
Como puede verse en la Figura 3.15, las texturas del tipo 1, 3, 4 y 5 estn
preparadas para repetirlas tanto horizontalmente como verticalmente. La textura 2 slo se
puede repetir horizontalmente porque verticalmente no tiene similitud, ya que la parte
inferior tiene musgo o csped aadido. La textura 6 no se puede repetir, pero es lo
suficientemente grande y tiene la suficiente calidad como para que no sea necesario. Una
vez hecho esto, se le ha dado un nombre a cada material y se ha guardado con la opcin
salvar aunque no tenga un objeto usuario para que el material se mantenga guardado en el
bloque de datos de Blender. Si esta opcin no se utilizase, los materiales se borraran al
cerrar el programa por no ser utilizados por ningn objeto. A continuacin, se llama a cada
material desde el script con la funcin Get del mdulo Material.
45
Figura 3.16: Atlas de textura de hojas y tronco en color y con canal alfa
Una vez en Blender, se tiene que advertir al programa que utilice correctamente el
canal alfa. Para ello, en el editor de materiales se crea un nuevo material y en el editor de
textura se cargan las imgenes por separado. A la imagen del alfa se le ponen las opciones
46
de alfa y a la imagen de las texturas de las hojas y el tronco se le cambian las opciones de
transparencia. Para ms detalle se pueden ver los valores de las opciones pinchando un
rbol en Blender y mirando en el panel de materiales (F5). Finalmente en el mapeado de la
geometra (mapeado UV) se ajusta (en el panel de edicin UV) para cada rbol un modelo
de hoja diferente, y su textura del tronco.
47
En la figura 3.17.C se pueden ver los nuevos ejes que se obtienen. A partir de ellos
podemos calcular el valor del eje z mediante relaciones trigonomtricas:
De esta forma se puede saber a qu altura debe estar el rbol. Pero para algunos
casos no habra una lnea recta entre dos puntos de dos curvas de nivel que incluyeran al
rbol. Esto se puede comprobar en la figura 3.18.A, donde los puntos verdes son los
rboles y los puntos rojos son los puntos obtenidos mediante interpolacin. En la figura
3.18.B, al contrario que la figura 3.18A, se puede ver que los rboles s que estn incluidos
en la recta que une dos puntos de dos curvas de nivel.
48
Para solucionar este problema se pens en obtener a partir de las ecuaciones de las
curvas los puntos ms cercanos, en lugar de los vrtices usados para crear la malla. Aunque
de esta forma se soluciona el problema planteado, el cmputo operacional se incrementa
sustancialmente.
Por consiguiente, aunque el segundo mtodo era vlido para solucionar el
problema, se empez a estudiar la implementacin a partir de la informacin de los
vectores normales de las caras. En el mdulo NMesh en la clase NMFace disponemos de la
instancia normal con la que podemos obtener el vector normal a una cara. Como hemos
visto en apartados anteriores tambin tenemos la clase NMVert que dispone de la instancia
co con la que podemos obtener las coordenadas de los vrtices. Por lo tanto, tenemos los
datos posibles para aplicar los conocimientos adquiridos en matemticas de lgebra lineal.
La dificultad que planteamos ahora es estudiar un mtodo para saber si un punto est
dentro de un polgono. Como los posibles polgonos en Blender son de 3 y 4 lados,
podemos limitarnos a obtener el punto interior a un tringulo.
49
50
Si el resultado es mayor o igual que cero, la orientacin del tringulo ser positiva.
En caso contrario, la orientacin del tringulo ser negativa.
Debemos tener en cuenta que tambin nos podemos encontrar polgonos de cuatro
lados. En este caso, se parte el polgono por la mitad obtenindose dos tringulos con los
que aplicar el mtodo del punto interior a un tringulo.
a*x+b*y+c*z+d=0
51
s y slo s
Po-P, es decir si
a(xo-x)+b(yo-y)+c(zo-z)=0
ax+by+cz=axo+byo+czo
d= ax+by+cz
En consecuencia, una vez se tiene el valor de d podemos calcula la coordenada z del punto
Po:
z=(-((axo)+(byo)-d)/c)
52
Captulo 4
DISEO Y DESARROLLO DEL MDULO 2
CREACIN DEL FICHERO DE COORDENADAS DE
LOS RBOLES
El captulo 4 describe los pasos seguidos para programar el segundo script. Este segundo
script es una herramienta que permite al usuario dibujar rboles sobre el mapa
topogrfico y guardar sus coordenadas en un fichero de texto. Estos rboles se pueden
borrar y mover, as como ir representando sus coordenadas en una ventana emergente.
53
54
55
56
Figura 4.3: Ventana de coordenadas obtenida a partir del mapa de la figura 4.2
57
58
Captulo 5
PROBLEMAS ENCONTRADOS
5.1 Aprendizaje
La primera dificultad encontrada al comenzar con este proyecto fue aprender a
programar en Python. Enfrentarse a este lenguaje de programacin desconocido se hizo
posible gracias a la gran cantidad de informacin que se puede encontrar en libros y en
Internet. La diferencia ms notable y complicada con respecto a otros lenguajes de
programacin aprendidos a lo largo de la carrera es que se basa en el paradigma de
orientacin a objetos, metodologa no estudiada a lo largo de la titulacin.
Otro problema surgido fue el hecho de tener que aprender a programar con eventos
y tener que familiarizarse con la interfaz de programacin de aplicaciones de Blender.
Teniendo en cuenta que estos conceptos no se imparten en ninguna asignatura de la
titulacin, este proceso de aprendizaje se alarg durante varios meses.
59
5.2 Implementacin
Factor de escala
Experimentando con Blender se observ que objetos que se salen del rango de
coordenadas (150, -150), tanto en el eje x como en el y como en el z, no se visualizan
correctamente. Por lo tanto, si tenemos un mapa de 900x600 pxeles, y sabemos que un
pxel se interpreta como una unidad ms, la imagen se sale del rango visible. Por este
motivo, en el mdulo 2 (script de seleccin de las coordenadas de los rboles) se aplic el
factor de escala comentado en el apartado 4.2, que adems era necesario para que todos los
mapas se mostraran con la misma escala. Consecuentemente, se carga el mapa y se escala,
por lo que las coordenadas que obtenemos de los rboles se obtienen a partir del mapa
escalado. Esto quiere decir que si ahora cargamos el mapa en el mdulo 1(script generador
de superficie montaosa y distribucin de vegetacin) las coordenadas de los rboles y las
coordenadas del mapa no van a coincidir. La solucin a este problema es generar la colina
partiendo del mapa original y una vez generada, aplicarle el factor de escala, primero para
que se encuentre en el rango visible y segundo para poder distribuir los rboles.
60
a la colina. Pero al hacer la copia de los rboles no se mantenan los valores del escalado.
Tras estudiar muchas opciones se concluy cul era el problema. Se observ que si
escalbamos en modo objeto con el factor de escala S(1.8,1.8,1.8) la copia del objeto se
haca ms pequea, y si el factor de escala era S(0.5,0.5,0.5) la copia del objeto se haca
ms grande. Sin embargo, si estos cambios se realizaban en modo edicin, ambas
coordenadas se mantenan idnticas con el factor inicial (1,1,1) y se conservaba el cambio
realizado en la copia del rbol. As, se concluye la siguiente teora:
61
Vector normal
Los vectores normales son vectores perpendiculares a la superficie de los objetos, e
indican cul es la cara externa de cada polgono, adems de ser usados para clculos de
iluminacin y otros efectos. Por defecto, en Blender viene activada slo el vector normal
de uno de los lados de una cara, por lo que en principio habr un nico lado que ser
visible.
En el mdulo 1, cuando se generaba la colina, la ltima cara creada no se
visualizaba correctamente. El problema era que el orden en que se unan los vrtices de las
caras era diferente del que se segua para el resto de las caras del objeto, y las normales
quedaban justo en el lado contrario. Se lleg a esta conclusin al comprobar que si se
62
utilizaba la opcin Double sided para que hubiese normales en ambos lados, la cara s se
poda ver en el render. Por lo tanto, el orden en que se aaden los vrtices es muy
importante para que la cara no se deforme y para conseguir que las normales queden hacia
el lado correcto.
Ventana de coordenadas
Con la funcin PupBlock del mdulo Draw, se ha creado una ventana de datos que
indica las coordenadas de los rboles. Si el usuario borrase algn rbol de la escena, en el
bloque de datos se seguiran mostrando sus coordenadas. Este problema no se ha podido
solucionar ya que no se trata de un fallo de implementacin en el script.
5.3 Algoritmos
Marching Cubes
Descubrir fallos en el algoritmo de Marching Cubes era muy complicado ya que se
deba depurar el algoritmo rejilla por rejilla suponiendo posibles errores. Para ello, se
guardaban las coordenadas de los puntos de corte y de los puntos de control, y se
representaban en una grfica de Excel para justificar paso a paso si eran puntos correctos.
A continuacin se presentan los fallos que se descubrieron mediante esta tcnica
63
Por otro lado, no puede existir un punto de control que tenga dos puntos de control
vecinos con el fin de evitar problemas en el caso de existir cuatro puntos de control en una
rejilla. Por consiguiente, cuando slo hay un punto de control en una rejilla no se puede
seguir una conexin entre los puntos, ya que una vez se detecta vecindad con un punto,
este punto ya no se puede volver a utilizar para detectar vecindad con otro. La solucin
est en aadir dos veces el punto de control. De esta forma, se considera que el punto y su
copia slo tienen un vecino cada uno y as se pueden hacer conexiones entre objetos.
Por otra parte, en rejillas de cuatro puntos se observ que se deba seguir una regla
para continuar el orden correcto de los puntos. Para comprender esta regla nos fijamos en
los errores establecidos en la figura 5.4.
64
Figura 5.5: Orden que se debe seguir en la rejilla de cuatro puntos de la figura 5.4
65
Figura 5.6: Orden en direccin de las agujas del reloj seguido en rejillas de cuatro puntos
Por ltimo, se observ que en la primera rejilla con trozo de curva nos podemos
encontrar con los casos de la figura 5.7.
Por el contrario, la figura 5.8 muestra casos imposibles en la primera rejilla con
trozo de curva.
66
Como se puede ver, la primera rejilla con tramo de curva es la que va a indicar el
primer punto, y por lo tanto la direccin del camino que se va a seguir segn su conexin
con puntos de celdas adyacentes. Por ello, en la primera curva que se detecta se debe seguir
el orden de las agujas del reloj, o simplemente coger el punto que est ms a la derecha
como se puede observar en la figura 5.9. En caso contrario, el orden de obtencin de
puntos sera al contrario de las agujas del reloj y no se ordenaran bien los puntos de
rejillas de cuatro puntos de control.
67
Captulo 6
MANUAL DE USUARIO
69
70
Seguidamente, en el men
71
Los botones de
, son para
dividir la imagen en rejillas. Estas opciones son necesarias para el algoritmo de Marching
Cubes(ver apartado 3.3.3). En principio no hace falta cambiar el nmero de subdivisiones,
a menos que el script avise de un nmero de rejillas incorrecto. En este caso, habr que
aumentar el nmero de subdivisiones presionando las flechas o bien pinchando el botn y
tecleando el nmero.
El botn de nmero de puntos
indica la cantidad de
puntos o vrtices que queremos obtener en cada curva de nivel. As por ejemplo, si
tenemos 30 puntos y 4 curvas de nivel obtendremos 4x30 vrtices, ms el vrtice superior
de la cara de arriba, un total de 121 vrtices. Con lo cual, cuanto mayor sea el nmero de
puntos ms precisin en las curvas de nivel y ms masa poligonal.
Segn el tipo de mapa hay dos formas de escoger la altura de la montaa. Por un
lado,
si
se
ha
seleccionado
mapa
de
altura,
tenemos
el
botn
de
cota
, que indica la
altura entre curvas de nivel. Adems, si es un mapa de curvas de nivel, nos aparece otra
72
se crea
una tapa inferior que cierra la superficie geomtrica. Por defecto la opcin de geometra
cerrada est desactivada.
Para terminar, debemos crear el terreno con la opcin
. El proceso
73
obtenido en el mdulo
. A continuacin,
. Para dibujar rboles en el
74
interesante que consiste en borrar un rbol, opcin que se lleva a cabo al clicar con el
botn derecho del ratn en el rbol que pretendemos borrar y darle a Suprimir.
Para exportar el fichero de texto primero elegimos la ruta
el que se desea guardar, y a continuacin exportamos el fichero
y el nombre con
.
75
6.3 Pruebas
A continuacin, en la figura 6.7 se presenta un ejemplo con capturas de las
opciones escogidas para generar una montaa a partir de su mapa topogrfico. En este
ejemplo, se puede comprobar que las situaciones marcadas en el mapa de posiciones
coinciden perfectamente con las de los rboles de la vista en planta. Conjuntamente, el
render final de la escena se muestra en el cuadro de previsualizacin y su textura
corresponde con el csped escogido en el men de texturas. Este render final, se puede
perfeccionar aadiendo sombras a las luces e incluyendo un fondo.
76
77
Captulo 7
CONCLUSIONES
Captulo final que expone las conclusiones obtenidas tras la realizacin del proyecto,
muestra varios ejemplos de uso, y propone posibles mejoras y ampliaciones que se pueden
desarrollar en futuras versiones.
7.1 Conclusiones
En este proyecto se han realizado dos scripts o mdulos destinados a conseguir,
aparte de representaciones tridimensionales precisas de mapas topogrficos, una
distribucin de vegetacin en su superficie, con una interaccin mnima por parte del
usuario. Una vez aplicado el script de topologa a distintos mapas y obtenido el modelo
equivalente de su colina con una precisa posicin de sus rboles, se concluye que los
resultados obtenidos permiten una gran exactitud tanto en la distribucin de vegetacin
como en la creacin de la superficie equivalente al mapa. Cabe destacar que la
automatizacin de la tarea consigue que la creacin de este tipo de objetos sea fcil y
rpida. Adems, el entorno grfico logrado mejora sustancialmente el interfaz ayudando a
la comprensin y visualizacin previa de texturas y vegetacin.
Por otro lado, con el presente proyecto se han adquirido y reforzado conocimientos
en el mbito de la ingeniera, especialmente en materias vinculadas con los grficos 3D por
79
80
CAPTULO 7. CONCLUSIONES
las curvas de nivel del mapa coinciden con el modelo 3D generado que se muestra en la
vista en planta.
81
Videojuegos y cortometrajes
Otra utilidad que cabe destacar es la composicin de paisajes con montaas y
vegetacin en un videojuego o cortometraje. La figura 7.2, en la que se puede ver integrada
de forma eficaz una serie de colinas en el escenario de un videojuego, sirve de muestra.
Dicho videojuego ha sido desarrollado por Studio Prometea, compuesto por dos
diseadores y un programador. Estar terminado para la plataforma de Apple Iphone en
inicios del 2009. Se trata de un juego de carreras en el que se intenta imitar la dinmica de
anteriores juegos con gran xito como Mario Kart.
82
CAPTULO 7. CONCLUSIONES
Las colinas que se presentan en la imagen de la figura 7.2 se han generado con los
ejemplos de la figura 3.7(con seleccin de superficie plana), con el mapa de la figura
3.14(con seleccin de superficie plana) y con el mapa de la figura 4.1 (con seleccin de
superficie puntiaguda).
Las posiciones de los rboles se han indicado con el script 2 (creacin del fichero
de coordenadas de los rboles), de donde obtenemos el fichero de coordenadas.
Seguidamente en el mdulo 1, se han generado las colinas y se ha cargado su textura
correspondiente. Por ltimo, se ha importado el rbol modelado para el videojuego al script
de topografa y se ha distribuido a partir de las coordenadas seleccionadas.
83
Figura 7.3: Mapa con varias curvas de nivel en una misma cota
84
CAPTULO 7. CONCLUSIONES
85
86
Referencias
87
88