Skip to content

Simple physics 3D simulation of a gummy bear made with Unity3D

Notifications You must be signed in to change notification settings

quiellll/Solido-Elastico

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

Práctica II. Sólido Deformable

Animación 3D. Bloque II

Ezequiel García Díaz - 3º curso en Grado en Diseño y Desarrollo de Videojuegos.

Introducción

La realización de esta primera práctica consiste en la simulación de las deformaciones de una sólido en Unity implementando las físicas de forma manual sobre una malla de tetraedros que recubre la malla original. La práctica se divide en 4 requisitos, con otros adicionales de mejoras.


Instrucciones de ejecución.

Para ejecutar la simulación desarrollada, es importante importar el paquete de Unity adjunto a un proyecto vacío, habiendo eliminado previamente cualquier archivo creado automáticamente por Unity.

💡 Para importar el paquete, navegar a AssetsImport PackageCustom Package… y seleccionar el archivo Solido_EzequielGarcíaDíaz.unitypackage

Una vez importados los archivos, se recomienda cargar por la escena Mesh, ubicada en la carpeta “Scenes”. Esta escena muestra una simulación básica de la tela. Con presionar el botón Play (▶️) de Unity, la simulación dará comienzo.

Para modificar los parámetros de la simulación, basta con seleccionar el GameObjectgummy_bear” y editar los parámetros del componente ElasticSolid en el inspector. Los valores por defecto deberían proporcionar una simulación satisfactoria y realista.

Se puede interactuar con la simulación si se cambia la ventana de Unity de modo Game a Scene, ganando control sobre los GameObjects de la escena. Se puede seleccionar el Fixer que sujeta la tela desplegando el GameObject “gummy_bear”, y seleccionando el GameObjectFixer” posteriormente. Mover el Fixer durante la ejecución de la simulación dotará de movimiento a la malla asociada al Fixer

Escena Density

Con motivo de mostrar la funcionalidad completa de la simulación desarrollada, se ha creado otra escena en la que se muestra la implementación del requisito 4 con cálculos de densidades de nodos y aristas.

Esta escena se ha propuesto de forma independiente puesto que la simulación resulta bastante inestable, y se necesita demostrar el correcto funcionamiento del resto de implementaciones.

Esta escena está disponible en la carpeta Assets/Scenes del proyecto.

Requisito 1. Simulación y visualización

  • Ordenación de los nodos de un tetraedro ✅
  • Depuración visual ✅
  • Fijación de la malla de tetraedros ✅

Requisito 2. Carga de malla de tetraedros

  • Generación de malla superficial de baja poligonización ✅
  • Generación de malla de tetraedros mediante TetGen
  • Importación de la malla de tetraedros en Unity

Requisito 3. Malla de triángulos embebida

  • Asociación de datos y comportamientos a un GameObject
  • Cálculo de posición por interpolación baricéntrica ✅
  • Identificación del tetraedro contenedor ✅

Requisito 4. Parametrización de densidad y rigidez

  • Eliminación de aristas duplicadas ✅
  • Densidad de masa ✅
  • Densidad de rigidez ✅

📌 Realizar este apartado ha supuesto una simulación bastante inestable. Es por ello que se dispone de una casilla en el componente ElasticSolid para poder activar o desactivar estos cálculos de densidad.

Funcionalidades adicionales

  • Simulación con substeps ✅
  • Amortiguamiento ✅
  • Fuerza de viento ✅
  • Aspectos visuales ✅
  • Aspectos de interacción ✅
  • Implementación de Prefabs ✅