¡Gracias por visitar mi portafolio!
Daniel García Arocas
Ingeniero Multimedia

SOBRE MÍ

Soy Daniel García, me gradué en Ingeniería Multimedia por la Universidad de Valencia.

Comencé la carrera porque tenía curiosidad por aprender a programar y porque siempre he sido muy aficionado a los videojuegos, también me fije que podríamos ver asignaturas muy interesantes como animación o simulación.

Durante el trascurso de la carrera pudimos profundizar en conocimientos y herramientas pertenecientes a diferentes sectores dentro de la informática. Se me abrio un mundo lleno de curiosidades y conocimento muy interesante.

Los sectores que más me han llamado la atención han sido los relacionados con la computación gráfica, videojuegos, animación, la realidad virtual y aumentada y diseño y desarrollo web.

He adquirido conocimientos en el desarrollo de aplicaciones de escritorio, web o móviles, además de otras competencias como bases de datos, seguridad informática, redes, producción y edición audiovisual, gestión de proyectos, entre otros.

En esta página encontrarás algunos de los proyectos que he realizado durante la carrera.

DATOS PERSONALES

Foto de perfil

daniuinad1994@gmail.com

691800185


17/04/1994

Manises (Valencia) CP: 46940

Carné de conducir y coche propio

Disponibilidad inmediata

PROYECTOS

Video de Resultados finales

Implementamos una aplicación capaz de generar distintos tipos de terrenos y planetas generados de forma procedimental.
Un terreno esta definido por un conjunto de vertices a los que se les asocia una altura.
La altura de un vertice viene definida por un promedio de alturas de algunos vertices concretos(depende del algoritmo utilizado) y un factor de altura que que es el resultado de una ecuación estocástica.
Se realizó un estudio de esta ecuación con el fin de poder modificarla y así variar los resultados sobre los terrenos.
Los algoritmos utilizados son:

- Punto medio
- Diamante cuadrado

La ecuación para la altura esta basada en el exponente de Hurst:

- z = random() * A * 2 ^ ((-1) * n * H)

Hicimos algunas modificaciones sobre esta funcion y realizamos un estudio de los parámetros
Las modificaciones que hicimos nos permitieron generar diferentes tipos de terrenos:
- Terrenos abruptos
- Terrenos con montañas muy definidas
- Terrenos llanos
- Volcanes
- Combinaciones de los anteriores
- Generación de planetas

Ademas tambien integramos dos algoritmos de suavizado erosion termica e hidrica.
Tambien hicimos un texturizado en funcion de la altura de los pixeles y de la pendiente.

Desarrollamos un minijuego con Unity, HTC VIVE, Kinect y control de Voz.
El jugador se encuentra en un escenario 3D de realidad virtual, esta sobre una plataforma y rodeado de torretas las cuales le disparan fruta.
El objetivo del jugador es evitar que la fruta impacte sobre la plataforma utilizando unas catanas las cuales cortaran la fruta al impactar y que toman las posiciones de los mados de las HTC VIVE. Por un lado, si el jugador consigue cortar 10 frutas, podrá utilizar un "superpoder" que consiste en que al ponerse en una pose de T con los brazos el tiempo se parará y la fruta lanzada por las torretas caerá, esto se consigue gracias a captura mediante Kinect. Por otro lado, el usuario podrá cambiar entre pistolas y catanas en cada mano de forma independiente al decir el comando de voz "Pistola" o "Espada" al mando correspondiente. Cuando use una "Pistola" el usuario podrá disparar a las torretas, si efectua 5 impactos sobre una torreta la destruira y si consigue destruir las 4 torretas ganará la partida. Si las torretas consiguen impactar la base 10 veces el jugador perderá.

Desarrollamos un minijuego con Unity y la herramienta Vuforia de Realidad Aumentada para Android.
El minijuego consiste en que el usuario mediante el uso de un marcador cilindrico de Vuforia, la cámara de su dispositivo móvil verá la torre del conocido juego de mesa Jenga.
En la pantalla el usuario tendrá una mirilla con la que debe apuntar a los bloques de colores indicados en la interfaz, pulsar sobre la pantalla para lanzar un proyectil en la direccion hacia donde ha apuntado y una vez alcanzado el bloque del color indicado estirar hacia atrás para arrastrar el bloque con nosotros y sacarlo de la torre. Si la torre se desploma o si el jugador dispara a un bloque incorrecto se dispara el final de la partida.

Desarrollamos varias aplicaciones de introducción a la programación de gráficos 3D con la API OpenGL en C/C++ Utilizaremos las bibliotecas Glew y Freeglut.

- La primera aplicación nos sirvio para recordar y aplicar el uso de primitivas geométricas, proyecciones y transformaciones afines. Implementamos una aplicacion donde mediante el uso de primitivas geométricas generamos 4 cubos mediante el uso de tiras de triangulos o cuadrados segun nos interese, Mediante el uso de transformaciones afines (rotaciones y traslaciones) simulamos una especie de sistema solar con los cubos.
- La segunda aplicación nos sirvio para recordar y aplicar la iluminación y texturas a objetos en OpenGL. Se implementaró un material con los componentes de luz difusa, especular y brillo, 3 tipos de luces, una direccional un foco de luz y otra puntual. También vimos dos tipos de sombreado, plano e interpolación lineal. Por otro lado pusimos una textura de metal sobre dos de los objetos, preparamos el programa para que se tuviera en cuenta la luz sobre la textura o no, tambien para que la textura se repita o se estire y por ultimo 3 formas de pegado, Nearest, Linear y Linear Mipmap.
- La tercera aplicación consiste en dibujar una gran cantidad de cubos formando un cubo mas grande mediante el uso de primitivas geométricas, se utilizaron 3 metodologias, la primera es de forma inmediata lo cual es poco eficiente, la segunda es mediante un buffer, un Vertex Buffer Object (VBO), el cual reserva un espacio de memoria en la VRAM de la GPU lo cual agiliza mucho el proceso y por ultimo utilizando un Vertex Array Object(VAO), el cual nos permite manipular los diferentes VBO de forma sencilla.

Desarrollamos un videojuego 3D de plataformas desde 0 con 4 niveles. Los niveles están compuestos por enemigos, saltos, plataformas móviles, zonas secretas, palancas para activar elementos, accesos complejos, zonas que causan daño, jefes finales objetos recolectables, etc.
El videojuego trata de un astronauta al que se le a averiado la nave y tiene que ir recorriendo diferentes planetas para recolectar las piezas necesarias para volver a la tierra.

Desarrollamos un videojuego 3D de plataformas desde 0 con 4 niveles. Los niveles están compuestos por enemigos, saltos, plataformas móviles, zonas secretas, palancas para activar elementos, accesos complejos, zonas que causan daño, jefes finales objetos recolectables, etc. Tenemos repartidos a lo largo de los niveles diferentes puntos de control por si el usuario muere, que no tenga que volver a jugar el nivel desde el principio. El astronauta dispone de un arma, con la que puede disparar a los enemigos, puede apuntar automaticamente tras pulsar un botón. Tiene munición limitada, que puede ir incrementándose tras coger cajas de munición. La vitalidad del astronauta se ve representada mediante una barra de vida, que se decrementa tras recibir daño. Puede recuperar la vitalidad mediante el objeto correspondiente. El astronauta tiene las funciones básicas de un videojuego de plataformas, correr, saltar y agacharse. Se puede pausar y volver al menu principal, al último punto de control o seleccionar otro nivel. En el menu principal se puede cargar partida, empezar una nueva partida, ver los créditos o salir.
El videojuego trata de un astronauta al que se le a averiado la nave y tiene que ir recorriendo diferentes planetas para recolectar las piezas necesarias para volver a la tierra.
El videojuego paso por varias fases de desarrollo:

- Análisis
- Diseño
- Implementación
- Pruebas
Trabajo realizado en equipo:

- Diseño y desarrollo de los 4 niveles.
- Diseño y desarrollo de todos los enemigos y modelos 3D, así como ajustar las animaciones y los modelos, IA, gestión de la vida de los enemigos y daños.
- Diseño y desarrollo del personaje principal (animaciones, funcionalidad básica y controles (moverse, saltar, correr, activar las animaciones, sonido, máquina de estados de animaciones(animator)), interfaz de barra de vida, munición y coleccionables y su gestión)
- Diseño y desarrollo del arma del personaje principal.
- Gestión de la aparicion y destruccion de objetos y enemigos..
- Diseño e implementación de los puntos de control, autoguardado y detección de final de nivel.
- Diseño y desarrollo de los 4 niveles.
- UI (menus, información jugador y pausa).
- Gestión del sonido y efectos sonoros.
- Control de la cámara y puntos de vista.
- Pruebas, coherencia y solución de problemas.

Implementamos una aplicación capaz de generar terrenos mediante el uso de mapas de alturas.
Utilizamos 2 algoritmos geométricos basados en fractales para distribuir las alturas entre los diferentes puntos que componen la malla, a los cuales cada vez se les da una altura mediante una ecuación estocástica.

- Punto Medio
- Diamante Cuadrado

También utilizamos 2 algoritmos para poder generar un aspecto más realista del terreno, simulando erosiones.

- Erosión Térmica: Es un proceso de suavizado que se basa en que un punto de mayor altitudi disminuye su masa y con ello su altura depositando en los puntos de su alrededor de menor altitud parte de su masa. Se consiguen pendientes más horizontales y elimina los picos afilados
- Erosión Hídrica: Simula los fenomenos físicos que produce la lluvia sobre un terreno al bajar el agua por el mismo. Se consiguen mantener los picos de las zonas altas y se aplanan las zonas bajas además de otros efectos.

Esta aplicación es compatible con otra aplicación desarrollada anteriormente donde podemos juntar olas con terreno.

Implementamos una aproximación a un modelo PBD, y hacemos algunas pruebas. PBD se basa en un sistema de partículas, estas partículas se ven influenciadas por diversas fuerzas externas, como gravedad, viento, o restricciones para obtener su movimiento.
Cada partícula está formada a rasgos generales por:

- Posición x
- Velocidad v = derivada de x
- Aceleración a = derivada de la v
- Masa m

Vamos a utilizar el método de integración de Euler semi-implícito para hallar la velocidad y la posición de las partículas. El objetivo es que se cumplan las ecuaciones de movimiento y respetando las restricciones
Para simular objetos formados por un sistema de partículas introduciremos una serie de restricciones describiendo el objeto. Las restricciones son una o una serie de ecuaciones que actúan sobre la posición de una o varias partículas del sistema. Las restricciones principales son de distancia y bending:

- La restricción de distancia obliga a las partículas a mantener una distancia d entre la partícula a evaluar y otra partícula. La propuesta de Muller necesita dos vértices

C(Xi,Xj) = ||Xi - Xj|| - d = 0

-La restricción de Bending o pliegue obliga a las partículas a mantener un cierto ángulo, hay dos versiones, una propuesta por Muller y otra por Kelager, nos basaremos en la de Kelager ya que es más sencilla de implementar. Utiliza en lugar de ángulos la distancia del baricentro formado por 3 vértices.

C(Bi,Bj,V) = ||V - c|| - h0 = 0
c = 1/3 * (Bi + Bj + V)

Una vez ya tenemos claras las restricciones, se pueden crear diferentes objetos jugando con las diferentes estrcuturas que podemos hacer con dichas restricciones Nosotros implementamos los siguientes objetos capaces de interactuar entre sí:

- Bandera/Tela: Estructura 2D formada por las restricciones, es capaz de interactuar con un plano(suelo), con esferas fijas o móviles, otros objetos deformables, viento y la gravedad. Podemos aumentar o disminuir su flexibilidad y el comportamiento a nuestro antojo.
- Esferas: Pueden ser fijas o móviles, interactuan entre sí, con un plano(suelo), con telas o con otros objetos deformables.
- Cubo: Estructura 3D formada por restricciones, es capaz de interactuar con todo lo mencionado anteriormente. En función de la estructura se puede conseguir un cubo elástico que absorbe el golpe y rebota o un objeto deformable que se deforma al golpearse.

Implementamos una aproximación a un modelo SPH, y hacemos algunas pruebas. Para poder desarrollar completamente este proyecto se necesitaria un pc mucho mas potente que el que se ha utilizado.

Vamos a enfocar SPH desde un punto de vista Lagrangiano, se basa en la utilización de “partículas” y en promediar los diferentes parámetros mediante la discretización de las ecuaciones de Navier-Stokes con el uso de diferentes kernels.ç El calculo de los parámetros se hace mediante la utilización de gradientes y laplacianos. Cada partícula contendrá cierta cantidad de fluido, es decir, cada una representa un volumen de fluido.

Los parámetros básicos son los siguientes, velocidad, posición, masa, densidad, presión, viscosidad y, además, hemos añadido al fluido la tensión superficial.

Implementamos varias aplicaciones basadas en el algoritmo A*.
Generamos una cuadricula donde cada celda se encuentra en el estado vacio o con obstaculo, seleccionamos dos celdas al azar, una es el inicio y la otra es el final, el algoritmo A* es capaz de encontrar el camino más corto en el menor tiempo posible, el algoritmo es capaz de evaluar las diagonales.

Depués integramos esta aplicación con el Path following, es decir hacemos que un grupo de boids recorran el camino mas corto desde el punto A hasta el punto B, también hicimos que n grupos de boids pudieran recorrer uno o varios caminos.

Implementamos varias aplicaciones basadas en el comportamiento y movimiento de grupos e individuos.
Partimos de una aplicación donde podemos generar grupos de boids que se mueven en el espacio. La velocidad de los boids depende de la aceleracion que a su vez depende de la aceleración, la aceleración se ve influenciada por las fuerzas internas y externas, en nuestro caso por 3 fuerzas que influyen en el grupo:

- Alineación
- Cohesión
- Separación

Para implementar la segunda aplicación nos inspiramos en estas fuerzas y añadimos una cuarta fuerza mas llamada objetivo. Implementamos 2 funciones distintas:

- Dirigirse hacia un punto reduciendo o no la velocidad al entrar en un area.
- Huir de un objeto aumentando o no la velocidad al entrar en un area.

En la tercera aplicación hicimos que los boids se persiguieran unos a otros e implementamos métodos de predicción de movimiento tanto del perseguidor como del perseguido.

La última aplicación tenia como objetivo hacer que los boids fueran capaces de seguir un camino marcado pero que no todos fueran exactamente por el mismo sitio, es decir que tuvieran cierta libertad. Hemos definido un camino con puntos y tambien hemos delimitado un ancho. Para poder cumplir el objetivo tuvimos que implementar 3 comportamientos:

- Wander: El Wander consite en hacer que los boids se muevan libremente por el espacio sin que sigan una trayectoria rectilínea todo el rato. Es decir, conseguir un movimiento curvilíneo y arbitrario, de tal forma que sea más natural.
- Path following: Consiste en que los boids vayan de un punto a otro recorriendo un circuito o camino.
- Paredes: Para evitar que los boids salgan fuera de la carretera, cuando se vayan a separar de la línea central más distancia que el ancho de la carretera, es decir cuando se vayan a salir se les induce una tercera fuerza de seek hacia el centro de la carretera.

Implementamos una aplicación capaz de simular un oleaje.
Para ello utilizaremos un conjunto de puntos distribuidos homogeneamente en un plano. las coordenadas "x" y "z" se mantendran constantes mientras que la coordenada "y" variara en funcion de los valores de una ecuación de onda, podemos diferenciar entre 4 tipos:

- Ondas simples: Pueden ser radiales o direccionales su ecuacion es la siguiente:

* Y = A * sin(w*t-k*x+fi);
* Radiales x = sqrt(poscentro-posperturbar^2)
* Direccionales x = PVector.dot(dirección Normalizada, posicion Perturbar)
- Ondas de Gestner

* X = posIni.x+Sum(q * A * Dir.x * cos(wt-kx))
* Y = Sum(A * sin(wt-kx))
* Z = posIni.z+Sum(q * A * Dir.z * cos( wt-kx))

- Combinación de ondas

Implementamos una aplicación capaz de simular colisiones a nivel de particula con particula y particula con plano.
Dejaremos caer x numero de partículas mediante la fuerza del peso sobre 3 planos y haremos que colisiones con los planos y entre partículas.
Podemos cambiar la fuerza de rozamiento, el tamaño de las partículas y desactivar la gravedad. Para el tratamiento de la colisiones hemos implementado 2 metodologias, cambio de sentido de las velocidades y poner un muelle entre las partículas, ambas, se basan en la 3 acciones siguientes:

- Detección
- Reposicionamiento
- Cambio de velocidad

Por otro lado para gestionar todas estas colisiones hemos implementado 3 estructuras de datos:

- Fuerza bruta se comprueba todo el rato las colisiones por cada particula.
- Grid se divide el espacio de forma homogénea en celdas, se comprueba para cada particula las colisiones con las partículas de su celda y de las celdas vecinas.
- Hash cada posición del espacio cae en una celda distinta de la tabla hash.El concepto es un poco más complejo que el Grid sin embargo, también es sencillo hallar las partículas y celdas vecinas.

Implementamos una aplicación capaz de simular fuegos artificiales con sistemas de partículas.
Hemos simulado la fuerza del viento y de la gravedad, m * k y m * g , respectivamente.
El cañon se mueve en el eje horizontal, puede cambiar la angulación del disparo y la potencia.
Por un lado, el cañon dispara una particula representando una carcasa de cohete, al llegar a su punto más alto explota liberando n número de partículas, que pueden ser de diferentes colores y pueden formar diferentes formas y tamaños. Las partículas tienen un tiempo de vida determinado cuando se les acaba son destruidas.

Implementamos una aplicación que simula el movimiento de una bandera a la que le afecta la gravedad y el viento. La aplicación es interactiva y en tiempo real, se han hecho varias pruebas con diferentes estructuras generadas mediante la unión de muelles y parámetros como la densidad de la malla, la fuerza del viento y su dirección.
Además también detecta colisiones contra una esfera.
Las estructuras implementadas son las siguiente y se pueden combinar entre si:

- Structure: Los muelles forman una cuadrícula ortogonal 1 a 1. Proporciona la estructura básica.
- Shear: Forman una estructura de rombos. Aporta transmisión lateral.
- Bend: Se unen dos a dos. Conseguimos un efecto antiarrugas y mejor transmisión

El cálculo de las fuerzas viene dado por el sumatorio de las fuerzas externas (gravedad+viento) e internas (ley de Hooke).

Implementamos una aplicación que simula el movimiento de una cuerda a la que le afecta la gravedad. Esta cuerda se hizo mediante la unión de varios muelles implementados en la práctica de muelles.

Implementamos una aplicación que simula humo mediante la utilización de un sistema de partículas a las cuales se les asigna una imagen de una nuve, un color y transparencia.
cada partícula es lanzada con una potencia aleatoria y una dirección aleatoria dentro de un rango de valores aceptable, ademas tienen un tiempo de vida aleatorio. La vida de cada párticula va disminuyendo y a su vez lo hace su opacidad hasta que son eliminadas.

Implementamos una aplicación que simula el comportamiento físico de un objeto que flota y la salpicadura producida podemos hacer que el objeto tenga mayor o menor flotabilidad.

Implementamos dos aplicaciones que simulan el comportamiento físico de un acelerómetro, mas concretamente la primera simula un cohete donde el usuario puede pulsar un boton para que el cohete vaya incrementando su energia y por tanto supere la fuerza de la gravedad. La segunda basandonos en este principio hemos implementado un minijuego en el que se puede acelerar una nave en cualquier direccion ortogonal y se trata de intentar llegar a un punto concreto sin caerse, cada nivel aumenta la gravedad y por tanto es cada vez más difícil.
Cuando aceleramos se aplica la siguiente fórmula:

- Ec += P * dt
Cuando dejamos de acelerar:

- vel = sqrt((2*Ec)/masa) - Ec += - kr * vel * vel * dt

Implementamos una aplicación en la que podemos observar la oscilación de 3 tipos de muelles, uno doble y uno simple en los que integraremos su movimiento teniendo en cuenta su posición, velocidad y aceleracón, así como las fuerzas que intervengan basandonos en la ley de Hooke, uno simple representado mediante una función de seno para poder compararlos.

La ley de Hooke esta definida por la siguiente ecuación:

- Fp = m * g
- Fk = ks(Lactual - Lreposo) – kd * vmuelle

El muelle simple al cual le aplicamos una función sinusoidal esta definido por:

- Y = A sin(w*t +fi)

Se realizan una serie de pruebas cambiando diferentes parametros y comparando 4 integradores distintos y la ecuación senoseidal:

- Euler Explicito
- Euler Semi-Explicito
- Heun
- Runge-Kutta (RGK2)

Implementamos una aplicación en la que podemos disparar un cañon que efectua un disparo al que le afecta la gravedad formando un tiro parabólico.
La unica fuerza que actua sobre el tiro parabolico es la gravedad por tanto la aceleración es constante.
La formula del tiro parabolico es:

- x = vel.x * t
- Y = -0.5 * ace.y * t * t - vel.y * t
Se realizan una serie de pruebas cambiando diferentes parametro y comparando 4 integradores distintos y la ecuación del tiro parabólico:

- Euler Explicito
- Euler Semi-Explicito
- Heun
- Runge-Kutta (RGK2)

Implementamos dos aplicaciones capaz de simular diferentes velocidades.

La primera aplicación es la simulación de la velocidad de una montaña rusa, en primer lugar hacemos que el objeto se desplace por las vias a velocidad constante, despues en función de la pendiente aplicamos mayor velocidad o menor.
En la segunda aplicación se tienen en cuenta las fuerzas que actuan en un plano inclinado y el rozamiento, también se realizanuna serie de pruebas con 4 integradores distintos:

- Euler Explicito
- Euler Semi-Explicito
- Heun
- Runge-Kutta (RGK2)

Implementamos una aplicación capaz de simular la conservación del momento angular, que es una magnitud física que esta relacionado con la masa, la velocidad y la distancia con respecto al centro de un objeto que gira en un circulo.
Es capaz de simular la conservación del momento angular entre dos cuerpos que están conectados con una varilla rígida de distancia variable. El momento angular de dos cuerpos que giran solidariamente alrededor de un centro de masas se conserva si no actúan fuerzas externas.
Si la configuración del cuerpo cambia la velocidad angular del sistema cambia para mantener el producto constante.

- I(t1) w(t1) = I(t2) w(t2).

Esto es lo que ocurre con los patinadores cuando están rotando sobre sí mismos y abren y cierran sus brazos.

Implementamos 3 aplicaciones para representar en 2D diferentes modelos matemáticos:

- Movimiento circular uniforme.
- Osciladores.
- Espiral.

Para ponerle mas énfasis a la importancia de los principios de animación realizamos este video comparativo de algunas escenas dentro de nuestros cortos donde se pueden observar con y sin principios de animación.

Utilizando el panel completo desarrollado por nosotros mismos, la sala de captura de movimiento(MOCAP) y Blender hicimos 3 cortos que representaran algunos de los principios de animación clásica, intentamos imitar lo mejor posible las escenas reales representadas ajustando tiempos, velocidades, sonidos, efectos de camara, efectos de luz, modelos, etc

En este video se puede observar el funcionamiento del panel completo.
Las funcionalidades del panel generado son:

- Interpolador de posiciones mediante 3 tipos: Lineal(Posición), Hermite(Velocidad) y Catmull-Rom(Tensor).
- Interpolador de rotaciones de cuaterniones: Slerp.
- Poder alinear cualquier objeto con la tangente del movimiento que deseemos.
- Controlar la velocidad de la acción: Reparametrización por la Longitud del arco y el cambio de variable en las curvas de movimiento.

Modificamos el panel para añadirle una nueva funcionalidad. Teniendo un recorrido dado, una curva de movimiento, queremos poder cambiar los tiempos en los que se alcanza diferentes posiciones del movimiento.

Podemos introducir keyframes en una nueva propiedad llamada cambio de variable, como su propio nombre indica utilizaremos un cambio de variable para poder controlar los diferentes tiempos que duran las acciones modificando simplemente la posición de los keyframes dentro del panel del F-Curves de blender. También podemos hacer que la velocidad de toda la acción sea constante y que se pueda aplicar la alineación con la tangente y la interpolación de cuaterniones, anteriormente implementadas.

Creamos un nuevo panel con las siguientes funcionalidades:

- Interpolación rotaciones mediante el uso de cuaterniones, a esta función la llamamos slerp.
- La capacidad de poder alinear cualquier objeto con la tangente del movimiento que deseemos. Sin tener en cuenta la orientación del objeto sobre la tangente y teniendo en cuenta el vector perpendicular a la tangente orientando al objeto, consiguiendo el movimiento típico de una montaña rusa.
- En el panel podemos orientar al objeto mediante una forma cómoda, tal y como queramos, introduciendo los vectores por defecto o podemos ponerlos personalizados, es decir el vector que queramos.

Creamos un esqueleto desde 0 para animar unas piernas. Utilizamos 2 métodos para dotar de movimiento estas piernas, cinemática directa y cinemática inversa. Ademas, tras captar una serie de movimientos en una sala de captura de movimiento, ajustamos diversos esqueletos a los cuerpos, el primero es un cuerpo normal y el segundo con los brazos mas largos.

Implementamos un programa en el que se puede manipular una superficie mediante puntos de control utilizando 3 metodologias geometricas distintas:

- Bezier
- A. Casteljau
- Uniform Rational B-Splines (NURBS)

Implementamos la posibilidad de ver diferentes niveles de detalle en función de la distancia del objeto representado hasta la cámara.
En el video lo hemos hecho invertido a como se hace normalmente para hacer notorio este efecto, normalmente a mayor distancia menor nivel de detalle ya que a una distancia determinada no se van a apreciar los detalles, con ello conseguimos reducir el coste computacional.

Representación de un tiovivo mediante formas geometricas simples. El tiovivo gira sobre sí mismo y las figuras del tiovivo(los caballitos) suben y bajan según la funcion seno.

Mediante el uso de diferentes modelos, hemos generado una escena 3D elaborada completamente en OSG. Decidimos utilizar la matricula de los vehiculos de la escena como reloj digital y el logo de la marca de los vehiculos como reloj analogico. Preparamos varias formas de visualización y luces diferentes en la misma escena.

¡CONTACTA CONMIGO!

Puedes enviarme un correo a daniuinad1994@gmail.com o completar este formulario.