Menu

Morph target animation

2010-06-23
2015-10-14
  • Debdatta Basu

    Debdatta Basu - 2010-06-23

    I didn't find anything in the docs about morph target animation import from Collada. Does assimp have this feature? If not, what would it take to implement it….

     
  • Debdatta Basu

    Debdatta Basu - 2010-06-30

    bump!!

     
  • Kim Kulling

    Kim Kulling - 2010-06-30

    Hi,
    as far as I know assimp does not support morph target animations, if you mean morphing as the feature . But maybe I have not understand you right. Can you explain what you want to do, please? I am not the author of the Collada importer and I have to investigate this further for a more detailed answer.

    Thanks a lot,
    Kimmi

     
  • Debdatta Basu

    Debdatta Basu - 2010-07-01

    Morph target animation or pose animation is a technique of doing facial animation and the like. The face is modeled in various postures, like smiling, frowning etc, and the blend proportions of these are varied to form an animation.

    http://voooz.com/2009/11/22/3d-max-tutorials-morph-facial-animation-by-merlyn-lear/

     
  • Thomas Ziegenhagen

    To my knowledge this method is also known as the good old vertex animations. It is rarely used today, mainly due to its large memory footprint. Assimp is currently on its way to support vertex animations, but the implementation is still very young and nobody here really has time for it.

    Collada is a bitch. Implementing vertex animations in its loader might be a time-consuming task. I wrote the loader for Collada, but I don't have time to expand on it to support vertex animations. Therefore: if you want to take over this task, I'd appreciate it very much, and I'll support you wherever I can. But I won't implement it on my own.

     
  • Debdatta Basu

    Debdatta Basu - 2010-07-01

    No… vertex anims are different…    In vertex anims you animate actual vertex position. Thats y the memory  footprint. And ur right. Its *Never* used.

    In morph target anims, u create morphed versions of your mesh and blend between them. The blend factors are animated, not the vertex positions themselves.

    Morph target animation in used in facial animation *ALL* the time.

     
  • Kim Kulling

    Kim Kulling - 2010-07-02

    Hm, sounds interesting. Do you have some time to descripe this on our mailing list how a possible datastructure should look like? Hopefully that information can help us to find a good way to implement this. And hopefully we will get a clue how many customers of assimp are interested in that feature.
    Thank's in advance for you input :-)

    Kimmi

     
  • Thomas Ziegenhagen

    Well, we do use bone animations for skinning. The only application I know which actually uses morph targets is the NVidia Geforce6 demo. This isn't interesting for you, I guess, but I just wanted to counter the "*ALL*" in your post :-)

    The current situation is that morph targets are not supported. I personally think that they're similar to vertex animations - in both methods you interpolated between multiple sets of vertex data. But where in vertex animations there's a sequence of many vertex data sets, in morph targets there are all data sets present at the same time, but with varying weights. This approach does not fit our present vertex animation structures, so we probably need new structures to handle morph targets.

    Just to make it clear: I as the founder and maintainer of the Collada loader will *not* implement morph targets. I simply don't have the time for it.

     
  • Debdatta Basu

    Debdatta Basu - 2010-07-06

    @Kimmi

    The data structures would basically consist of a primary vertex buffer and an  array of secondary vertex buffers that serve as morph targets. The vertex buffers all have an individual weight. The animation track would consist of keyframed values of these weights, which would vary over time.

    On the hardware side, the primary vertex buffer is created as a vertex buffer, and the secondary ones are created as a hardware texture or constant buffer. these are looked up in the vertex shader along with the weights to create a morphed version of the mesh.

    @ ulfjorensen
    Well… facial animation in almost entirely done using this technique now a days…. The geforce 6 demo was one of  the first examples of this, but there have been  hundreds of games to use it since. all modern graphics engines.. Ogre… Torque… Unity….. support this. It would be great to have assimp support this as well, as this would create an open standard for importing this kind of data from collada. :)

    and regarding demand, I guarantee the demand for this would be substantial, to say the least.

     
  • Kim Kulling

    Kim Kulling - 2010-07-09

    Hm, I know the tech-demo from Nvidia, its really nice. I will see if I can experiment with this :-)… Thanks for that update!

    Kimmi

     
  • Pietro Piazzolla

    I'm currently using morph targets for clothing... I'm one of those Assimp users that would like to see, at least, one of the loaders (let's say the FBX for example) able to import them.

    Any chance that you are working to add this feature? I can offer my help for extending the FBX loader, if needed.

     

Log in to post a comment.