/Evolshroom

I developed an algorithm that procedurally generates 3D mushrooms. It includes a growth system that allows us to see the mushroom at different stages. I use C++ and OpenGL for this.

Primary LanguageC++MIT LicenseMIT

Evolshroom

Nicolas Muras - nicolasmuras@gmail.com -Enero 2021

alt text

https://www.youtube.com/watch?v=e00ih_MSEG8

Tabla de contenido

Introduccion al proyecto

El objetivo del proyecto era probar las fortalezas de la generacion procedural para crear objetos en 3D, la idea surge mientras leia un libro sobre OpenGL, me basto con aprender geometrias basicas, el resultado se basa en circulos que funcionan como guias, de estos se extraen vertices, con nuestros vertices utilizamos indices y construimos triangulos, con estos elaboramos nuestra geometria, utilizo trigonometria y matematica basica para lograr el resultado.

Implementación del proyecto

  • C++: El lenguaje utilizado para la elaboracion del codigo.
  • OpenGL: API utilizada para visualizar nuestros objetos en tiempo real.
  • SOIL2: Libreria utilizada para cargar las texturas en el HUD.
  • GLEW: Proporciona mecanismos eficientes en tiempo de ejecución para determinar qué extensiones de OpenGL son compatibles con la plataforma de destino.
  • GLUT: Utilizamos GLUT para crear nuestras ventanas en el contexto de OpenGL, como asi tambien para propocionar lectura de mouse y teclado.

Empece por trabajar el diseño y jerarquias de las clases siguiendo el paradigma de la programación orientada a objetos por un lado y luego pase a trabajar con el core del programa: la clase 'builder' se encarga de construir y devolver el estado del objeto para que asi pueda ser renderizado en tiempo real, utilizando numeros aleatorios y reglas (muy importante) logramos establecer patrones que se asemejan al objeto que queremos crear y nos permiten contemplar infinitas posibilidades.

Configuración de teclas

Tecla Función
1, 2, 3, 4 Selección de especie / strain.
'+' Crea un nuevo objeto perteneciente a la especie seleccionada.
'p' Provoca que los objetos crezcan.
's' Muestra los circulos que se utilizan como guias para proporcionar coordenadas a los indíces.
'r' Resetea la vista a la inicial.
Barra espaciadora Gira la camara en un angulo ya determinado.
Flechas de movimiento Nos permite movernos por la escena.

Compilado en Visual Studio 2017, x86 bits.

Proyecto finalizado en 13 dias.