Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de...

15
Morphing PROGRAMACIÓN DE TARJETAS GRÁFICAS

Transcript of Morphing 3D Geometry · 2015-06-18 · Tipos de Morphing (geometría 3d) • En el morphing de...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Gracias por vuestra atención!