• No se han encontrado resultados

Capítulo 3. Materiales y Métodos 19

3.3 Métodos

3.3.1 Diseño

Investigación de algoritmos

Se investigaron los detalles de implementación de los algoritmos de generación de ruido elegidos para el proyecto. La información obtenida a través de esta investigación fue de utilidad durante la etapa de desarrollo del proyecto, donde sirvió para la implementación de los algoritmos de generación de ruido usados en la aplicación.

Investigación de librerías

Se realizó una investigación sobre las librerías de software que se utilizaron para el desarro- llo del proyecto. Como se vió en la sección 3.2, las librerías seleccionadas fueron Clutter, Cogl y Mx, usadas para manejar video, dispositivos de entrada y gráficos en 3D. Otra librería que fue de utilidad para el proyecto fue Libnoise, que sirvió como base para el diseño de los módulos de generación de ruido.

Diseño de módulos de generación de ruido

Figura 3.1: Módulos de generación de ruido

Los algoritmos de generación de ruido se diseñaron de manera que tuvieran una interfaz en común, como se muestra en la figura 3.1. Se crearon en forma de módulos que poseen un método llamado get, que retorna un valor del ruido generado dado una coordenada tridimensional. Adicionalmente, los módulos tienen propiedades que permiten ajustar las características del ruido generado [20], como se describen a continuación:

Semilla: La semilla es un número a partir del cual se crea un generador de números al azar. Para el caso de este proyecto, esto se usa para que el terreno creado tenga una apariencia aleatoria.

Frecuencia: La frecuencia del ruido generado en la primera octava. Por defecto, la frecuencia de cada octava es el doble que la de la octava anterior. El valor de este parámetro afecta la densidad del ruido generado, cuanto mayor sea la frecuencia, el ruido adquiere una apariencia más densa; también se le puede considerar como la escala a la que esta el ruido.

Cantidad de octavas: La cantidad de octavas es el número de iteraciones de la función generadora de ruido que se combinan para crear el valor del ruido final. Este pará- metro controla la cantidad de detalle que presenta el ruido, más octavas crean ruido con más variación en los detalles pequeños.

Lagunaridad: La lagunaridad es el multiplicador de la frecuencia de cada octava. La frecuencia de cada octava es la frecuencia de la octava anterior multiplicada por la lagunaridad. Como se mencionó anteriormente, el valor por defecto de este multi- plicador es 2.

Persistencia: La persistencia es el número por el que se multiplica la amplitud de cada octava. Si la persistencia es 0.5, entonces la amplitud de la primera octava será 1, la de la segunda 0.5, la tercera 0.25, etc. El valor de este parámetro controla la aspereza del ruido, mientras más alto, el ruido generado tiene una apariencia más áspera y granular.

El cambio en el ruido que provoca el cambio de los valores de estos parámetros se

(a) Referencia (b) Frequencia: 0.1

(c) Lagunaridad: 4 (d) Cantidad de octavas: 1

(e) Persistencia: 0.8 (f) Semilla: 10

Figura 3.2: Cambios en los valores de los parámetros

Referencia: frecuencia: 0.03, lagunaridad: 2, octavas: 6, persistencia: 0.5, semilla: 0

Diseño del sistema de evaluación comparativa

Area generada: 16×16 Área generada: 16×16 Area denida: 14×14 Área denida: 14×14 Tamaño del chunk: 4×4 Tamaño del chunk: 4×4

Figura 3.3: Relación entre los chunksy el área definida

Para realizar la comparación entre los algoritmos de generación de ruido, la aplicación genera una tabla de tiempos dados los parámetros designados para la generación del terreno. Además de los parámetros que se mencionan en la subsección 3.3.1, estas tablas incluyen la siguiente información:

Tamaño del chunk: Un chunk representa un segmento del terreno. Estos segmentos son todos de las mismas dimensiones y se generan de forma dinámica conforme el usuario se mueve y se acerca a ellos. El tamaño de los chunks afecta el rendimiento de la generación del terreno, dado que este se genera alrededor del usuario; chunks de mayor tamaño tardan más tiempo en generarse, pero se requieren menos para representar una mayor cantidad de terreno, mientras que cuando son más pequeños, cada uno se genera a mayor velocidad, pero se requieren máschunkspara representar terreno de la misma extensión.

Tamaño del área generada: Al utilizar algoritmos de generación de ruido es posible crear terreno de extensión infinita, pero, de forma que el desempeño de los algorit- mos pueda ser comparado, se necesita definir un área finita a generar. Durante la ejecución de la aplicación, los algoritmos se usan para crear un cuadrado de terreno formado de chunks, el cual tiene este parámetro como medida por lado. Si el área a generar no es un múltiplo del tamaño del chunk, se generará el área más chica que

Cuando la generación del terreno se realiza en tiempo real, el entorno se crea alrededor del usuario y si este se mueve, más terreno debe ser generado, sin embargo, para que los resultados de las pruebas sean comparables es necesario que el usuario se mantendrá estático, por lo que para este proyecto, se consideró que el usuario se encuentra en el origen del mapa y el terreno se genera alrededor de este punto.

Diseño del sistema de gráficos en 3D

Figura 3.4: Grafo de escena

La visualización del terreno generado se hace a través de gráficos tridimensionales. El funcionamiento de estos se organizó en forma de grafo de escena o Scene graph, como se ve en la figura 3.4. Esto es una estructura de datos que contiene los objetos a mostrar en una escena [38].

El grafo de escena tiene forma de árbol, en la que sus nodos representan las entidades presentes en el entorno tridimensional. En esta aplicación se utiliza un objeto Scene, que contiene los nodos de la escena, tiene un método update, que actualiza la lógica de los nodos y un método draw, que muestra la apariencia gráfica de los mismos. Los nodos usados en el programa son los siguientes:

Mapa: El mapa es el nodo que contiene el terreno generado a través de los algoritmos generadores de ruido y se encarga de mostrar la malla tridimensional creada a partir del mismo.

Cámara: Este nodo representa el punto de vista del usuario y es la perspectiva desde la que se visualiza el terreno en la aplicación. La cámara puede hacer zoom y rotar alrededor del terreno.

Diseño visual de la interfaz de usuario

Información

Generar

Mapa de alturas Algoritmo: ###

Frecuencia: ###

Lagunaridad: ###

Octavas: ###

Persistencia: ###

Area: ##×##

Chunk: ##×##

Duración: ##:##

Visualización del terreno

Figura 3.5: Bosquejo de la interfaz de usuario del programa

Para mostrar la información obtenida acerca de los algoritmos, la aplicación hace uso de una interfaz gráfica organizada como se ve el el bosquejo mostrado en la figura 3.5.

La mayor parte de esta interfaz es ocupada por la visualización del terreno, en la que se puede ver el terreno generado de manera tridimensional.

A la izquierda, contiene una caja que muestra la información correspondiente al algo- ritmo utilizado, esto incluye los parámetros mencionados en la subsección 3.3.1, además del tamaño delchunk, el tamaño del área generada y el tiempo transcurrido entre el inicio y el fin de la generación del terreno. A la derecha, muestra un mapa de alturas del terreno, en el cual se ve su apariencia en 2D con una vista desde arriba.

In document UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ (página 33-39)

Documento similar