Tech Demo: GPU Facial Morphing

YouTube Preview Image

Downloads:

Comments: Facial morphing using Directx9. I guess its my try to fit something that only does it after banging your head against the wall. The target channels are fixed to a number of 6. The implementation seems very straightforward after all (…the pain). In every vertex of the morph mesh you have the position and normal differences between the neutral mesh and the targets of the channels. In the vertex shader you just blend the targets with the weights of every target. Easy peasy, as an English teacher of mine used to say, isn’t it? . The fixed number of channels is due to the limit of attributes per vertex and no workaround possible. In Directx10 this can be solved using stream out or buffer templates (which in my opinion is the natural way of do it). The monkey head shading is generated using a perlin noise 3d texture and a gradient color texture. I spent a lot of time tweaking with the parameters until I got something I liked. Also I added a fresnel term and I used an ambient occlusion term per vertex.

Algorithm: Morphing with fixed number of channels. Implemented with directx9.

Technology: C++, DirectX 9.0c, HlSl, Win32, Visual Studio 2005

Develop/Build/Test Machine Specs

  • Intel Pentium 4, 3000 MHz
  • 1024 MB (PC3200 DDR SDRAM)
  • GeForce 7800 GS (256 MB)
  • DirectX 4.09.00.0904 (DirectX 9.0c)

Resources:

6 Responses to “Tech Demo: GPU Facial Morphing”

  1. PpluX says:

    This is great! not only because of the blending effect, also the shading result with perlin noise, ambient, fresnel… a very eye-catching demo :)

  2. Ruben Penalva says:

    Thanks! I had to tweak a lot the parameters of the perlin noise to get the desired result (you can see the shaders, if you want to). Definitely, ambient occlusion plus fresnel term are worth it.

    It would be great if I added cube environment mapping and hdr, but they are beyond the scope of the demo, so these features go to the next one.

  3. r3D says:

    Aunque añades la dependencia d3dx9_34.dll la que pide el programa realmente es d3dx9_36.dll
    Saludos

  4. Ruben Penalva says:

    Muchas gracias r3D! Cierto es. He revisado las demos, y ha sido a partir de la del “depth of field” en la que empece a linkar contra la 36, sin yo saberlo. Algo que instale debio de actualizar la version de directx. Ya esta corregido. Ahora ya podras bajarlo y probarlo si antes no podias.

    English readers:
    r3D found that this demo links against d3dx9_36.dll and not d3dx9_34.dll, which happens to be the one I included within the rar. This behaviour happens since the depth of field demo. Now is corrected and the future demos, aswel as the depth of field demo and facial animation demo, will include the d3dx9_36.dll.

    Thank you very much r3D.

  5. Hola Rubén, soy Jorge Gascón, uno de los compañeros de la Universidad Rey Juan Carlos que trabaja con vosotros en el proyecto del simulador artroscópico de GMV. Quizás me recuerdes porque alguna vez que otra he ido a GMV para hablar con vosotros o he estado en la charla que diste aquí en la URJC (Que por cierto, aún están pendientes las cervezas, jejeje!)

    Bueno, al grano, resulta que este año tenemos pensado ir al Siggraph, y Miguel Ángel Otaduy me dijo que te vió allí el año pasado. Seguramente este año iremos Miguel Ángel, dos compañeros y yo ¿Podrías asesorarnos de alguna manera?

    He oido que existe un programa de voluntarios en el cual es más fácil acceder ¿Qué podrías comentarnos sobre ello?

    Pues nada, si es posible contéstame en la dirección de e-mail que te indico. Gracias por todo!!

  6. Ruben Penalva says:

    Hola Jorge!

    Empezando por el final, el año pasado estuve dentro del programa XSV de voluntariado, asi que tengo una idea bastante clara de como funciona el voluntariado en el siggraph. Echale un ojo al post que puse al respecto aqui: http://www.rpenalva.com/blog/?p=19

    Luego lo de asesoraros, pues si quereis hacer algun tipo de voluntariado os puedo aclarar cualquier duda que tengais y comentaros un poco la dinamica del Siggraph.

    Te mando un mail para que podamos hablarlo mas concretamente.

    English readers:
    Jorge is thinking about going to siggraph this year (New Orleans!) and he wants to know more about the volunteer programs.

    I wrote a post in the blog just about the types of volunteer you can find at siggraph here: http://www.rpenalva.com/blog/?p=19