Search Unity

Better method for animation compression

Discussion in 'Animation' started by Zaax, Feb 1, 2019.

  1. Zaax

    Zaax

    Joined:
    Oct 14, 2017
    Posts:
    13
    Just wanted to know if unity animation compression uses the techniques mentioned here:
    https://github.com/nfrechette/acl
    (NOTE I AM NOT ITS AUTHOR)
    Here is another blog about its stats (comparion to ue4):
    https://nfrechette.github.io/2018/07/21/acl_v1.0.0/
    At the bottom of the blog he does mentions about willingness to implement it in Unity .
    I highly recommend to read his blogs for more stats and about its implementation in Ue4.
    https://nfrechette.github.io
    https://nfrechette.github.io/2016/10/21/anim_compression_toc/

    Would love the Devs opinion on this!!
    And if they would be implementing something like this in future.
     
  2. Zaax

    Zaax

    Joined:
    Oct 14, 2017
    Posts:
    13
    Still no reply..:(
     
  3. zeno490

    zeno490

    Joined:
    May 11, 2016
    Posts:
    2
    Just found this and I can give a bit more context as I am the author of ACL.

    I did approach Unity at the GDC this year about working with them to integrate it and while they are interested, I could not get any traction going and nothing came off those talks. Part of the issue for them is that it isn't written in C# which means that it would need to be integrated natively into the engine (the engine also doesn't expose everything I need to write a plugin). It would be a LOT easier to integrate this natively in the engine, doing it as a plugin isn't a trivial problem and it isn't something I can write and maintain with minimal effort. While the decompression part could reasonably be written in C# as well and maintained in parallel, the performance might not match what I achieve with native code and intrinsics. I hand tune the code on many platforms to ensure optimal performance and I'm not sure if I can reach the same quality with just pure C#. But there is just too much code for the compression part to maintain a fully parallel C# implementation of the whole library. I would rather spend my time improving ACL and pushing the state of the art than spend it maintaining a C# port that realistically would only be used by Unity.

    Although I cannot publish any benchmark numbers with Unity due to their EULA, Unity struggles with accuracy on many clips and will be hard to tune. It often requires tuning for individual clips otherwise you are forced to use overly conservative default values and the memory footprint suffers a lot. ACL would win hands down on quality with little to no user involvement. ACL should beat Unity's memory footprint by a significant margin. It's unclear how it would compare in terms of compression and decompression speed as I haven't measured with Unity yet but I would imagine ACL would win here as well.

    I imagine that Unity knows their animation compression struggles. My blog post that details their animation compression from 2016 is my all time most popular blog post with almost all the traffic coming from search engines. It just isn't very high priority at the moment for them. They know of my work and if one day they reach out to work with me to integrate it, I will be more than happy to assist them. The ACL UE4 plugin should land on the UE4 marketplace later this year (for free), perhaps that will increase its visibility and renew their interest. ACL is entirely engine agnostic and could easily be integrated natively into Unity as well in a matter of weeks.

    Asking them for it through forums and customer feedback might move the needle as well. Keep fighting the good fight :)