![Page 1: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/1.jpg)
MorphingPROGRAMACIÓN DE TARJETAS GRÁFICAS
![Page 2: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/2.jpg)
Que es el morphing?
• El Morphing es una técnica que se
utiliza en gráficos por ordenador para
conseguir un efecto de transición entre
un objeto o imagen y otro distinto.
![Page 3: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/3.jpg)
Que es el morphing?
• En 1988 aparece en la película “Willow” el
primer morphing, con la transformación de
una de los personajes en distintos animales
(cabra-avestruz-tigre…).
• De modo que se van interpolando las
formas de una a otra creando un efecto
de metamorfosis.
![Page 4: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/4.jpg)
Tipos de Morphing (imágenes)
• Trata de la interpolación de una
imagen en otra a partir de puntos
clave (similitudes de color o forma),
que con una duración y velocidad
consiguen un tipo de transición.
![Page 5: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/5.jpg)
Tipos de Morphing (Morph Targets)
• El morph target es la deformación de una forma dada.
• Se utiliza para simular expresiones faciales en videojuegos, películas…
• Se hace la interpolación de una expresión neutral a otra y viceversa
• De esta forma se consigue un movimiento más natural
• https://www.youtube.com/watch?v=AXba8B739mg
![Page 6: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/6.jpg)
Tipos de Morphing (geometría 3d)
• En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan con los de otra.
• De esta forma modificamos la geometría inicial convirtiéndola en otra.
![Page 7: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/7.jpg)
Ejemplo Práctico
• Tenemos las posiciones y normales de los vértices de una geometría.
• Lo que queremos es convertirlos en un cubo, que es una geometría sencilla y conocida.
• Desde el fragment shader, modificamos los vértices de la geometría en función de la variable uBlend.
//VERTEX SHADER
in vec3 aPosition;
in vec3 aNormal;
const float SIDE = 0.5;
void main()
{
vec4 vertex = vec4(aPosition, 1.0);
vertex.xyz *= 4./length(vertex.xyz); //multiplica por 4/longitud del vector en cada caso
vertex.xyz = clamp( vertex.xyz, -SIDE, SIDE ); //limita los vertex a size y -size
vec3 tnorm = normalize( uNormalMatrix * aNormal );
![Page 8: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/8.jpg)
Ejemplo Práctico
float light = max(dot(uLight.intensity, tnorm), 0.0);
if (light < 0.125)
light= 0.125;
vLightIntensity = light;
vColor =vec4(tnorm,0.0);
gl_Position = uModelViewProjMatrix * mix( vec4(aPosition,1.0), vertex, uBlend );
}
//FRAGMENT SHADER
void main()
{
fFragColor =vec4(vLightIntensity*vColor.rgb,1.0);
}
![Page 9: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/9.jpg)
Ejemplo Práctico
![Page 10: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/10.jpg)
Ejemplo Práctico
• Eliminando la función clamp() del programa anterior, eliminamos la restricción y podemos generar una esfera, aunque no es perfecta.
![Page 11: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/11.jpg)
Ejemplo Práctico
• Podemos ver que hemos desplazado los vértices pero no están organizados de forma correcta.
• Algunos han quedado acumulados y otros los hemos estirado.
• Para evitar esto deberíamos reconstruir por partes el modelo
![Page 12: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/12.jpg)
Problemas
• Para hacer morphing de una geometría compleja a otra también compleja que sean distintas, es necesario un calculo de la interpolación minucioso (no podemos usar solamente la función mix).
• Además es necesario que el número de vértices sea el mismo en los 2 modelos, ya que pueden salir deformaciones.
• Así como los materiales y texturas también deben ser las mismas.
![Page 13: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/13.jpg)
Ventajas
• No se necesita aplicar físicas, solo cálculos de interpolación.
• Se consiguen buenos efectos (ej. expresiones faciales en personajes videojuegos).
• Coste de ejecución bajo.
• Deformación fácil de controlar
• Ya existen librerías y programas que hacen transparente el proceso (ej.Cinema4D).
![Page 14: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/14.jpg)
Referencias
• Graphics Shaders: Theory and Practice. 2nd Edition
• GPU GEMS Chapter 4.
• https://www.shadertoy.com/
• http://web.mit.edu/manoli/morph/www/morph.html
![Page 15: Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de geometría, se recoge la malla de vértices de una figura geométrica y se interpolan](https://reader030.vdocumento.com/reader030/viewer/2022041113/5f209a6dab6b8f3649226fd3/html5/thumbnails/15.jpg)
Gracias por vuestra atención!