This repository contains the source code of my Master's Thesis. The goal of the project is to improve the realistic visualization of 3D models composed of heterogeneous solids defined through hyperpatches. To achieve this, the project builds upon an existing application heterogeneous_solids developed by @albertoaer, into which advanced lighting techniques are integrated through shader programming. A study of the state of the art in lighting and realistic rendering techniques has been conducted, and physically based rendering methods used in Unreal Engine 4 have been selected and implemented. The result is a significant improvement in the visual representation of heterogeneous materials, while maintaining the tool’s efficiency and cross-platform compatibility.
![]() |
![]() |
![]() |
---|---|---|
Original lighting | PBR + IBL | PBR + IBL + Skybox + Shadow |
![]() |
![]() |
![]() |
---|---|---|
Continuous material | Functionally graded material | Composite material |
To build the project on Linux, follow these steps:
-
Clone the repository:
git clone https://github.com/hatz2/heterogeneous-solids.git cd heterogeneous-solids
-
Create a build directory:
mkdir build cd build
-
Install dependencies with Conan:
conan install .. --build=missing
-
Configure the project with CMake:
cmake .. -DCMAKE_TOOLCHAIN_FILE=./Release/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
-
Copy shaders and ImGui configuration files:
cp -r ../resources/ . cp ../imgui.ini .
-
Build the project:
make
-
Run the application:
./heterogeneous_solids
For Windows, I haven't found a simple way to compile the project from the terminal. Therefore, it is recommended to use CLion to build the project. To do so, follow these steps:
- Open the project in CLion.
- Go to
File -> Settings -> Plugins
and install the Conan plugin. - In the bottom-left corner of the window, click on the Conan icon and then click the gear icon to configure the dependencies.
- Go to
File -> Build -> Build Project
to build the project.
Este repositorio contiene el código fuente de mi Trabajo de Fin de Máster. El objetivo del trabajo es mejorar la visualización realista de modelos 3D formados por sólidos heterogéneos definidos mediante hiperparches. Para ello, se parte de una aplicación existente heterogeneous_solids desarrollada por @albertoaer, a la que se integran técnicas avanzadas de iluminación mediante la programación de shaders. Se ha realizado un estudio del estado del arte en técnicas de iluminación y renderizado realista; se han seleccionado e implementado los métodos de renderizado basado en la fı́sica de la luz utilizados en Unreal Engine 4. El resultado es una mejora significativa en la representación visual de materiales heterogéneos, conservando la eficiencia y compatibilidad multiplataforma de la herramienta.
![]() |
![]() |
![]() |
---|---|---|
Iluminación original | PBR + IBL | PBR + IBL + Skybox + Sombras |
![]() |
![]() |
![]() |
---|---|---|
Material continuo | Material funcionalmente graduado | Material compeusto |
Para compilar el proyecto en Linux, sigue estos pasos:
-
Clona el repositorio:
git clone https://github.com/hatz2/heterogeneous-solids.git cd heterogeneous-solids
-
Crea un directorio donde compilar:
mkdir build cd build
-
Instala las dependencias con Conan:
conan install .. --build=missing
-
Configura el proyecto con CMake:
cmake .. -DCMAKE_TOOLCHAIN_FILE=./Release/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
-
Copiar archivos de shaders y de configuración de ImGui:
cp -r ../resources/ . cp ../imgui.ini .
-
Compilar el proyecto:
make
-
Ejecutar la aplicación:
./heterogeneous_solids
Para Windows no he encontrado una forma de compilar el proyecto de forma sencilla desde la terminal. Por lo tanto, se recomienda utilizar Clion para compilar el proyecto. Para ello, sigue estos pasos:
- Abre el proyecto en Clion.
- Ve a
File -> Settings -> Plugis
e instala el plugin de conan. - En parte inferior izquierda de la ventana, haz clic en el icono de conan y pulsa sobre la rueda dentada para configurar las dependencias.
- Ve a
File -> Build -> Build Project
para compilar el proyecto.