Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify Animation Curves Tool #268

Open
david-cattermole opened this issue Oct 21, 2024 · 0 comments
Open

Simplify Animation Curves Tool #268

david-cattermole opened this issue Oct 21, 2024 · 0 comments
Assignees
Labels
enhancement maya plugin Maya API Plug-In (C++) maya tool A user tool inside Maya.

Comments

@david-cattermole
Copy link
Owner

david-cattermole commented Oct 21, 2024

Feature

Users wish to simplify an animation curve that may be noisy or bumpy into a less complicated "smoother" animation curve.
Users may also wish to apply these animation curve simplifications to sub-ranges of an animation curve - just a part of the animation curve.

This tool may be similar to the Smooth Keyframes tool, and although this is a similar tool, there would be different methods available, and the goal here is to reduce the amount of detail.

For example, this tool can be seen more as a "curve fitting" tool, that fits a mathematical curve model to the input set of 2D points.

Examples of simplification methods;

To help with simplifications while maintaining keyframe tangents, we could look at https://github.com/Toolchefs/kiko or https://github.com/Autodesk/animx/ for inspiration.

Expected behavior:

  1. Users should be able to select an attribute or animation curve keyframes
  2. Run a tool
  3. The animation curve will be modified (with undo) with the simplified/smoothed curve values.

User's should then be able to repeat this process, with different attributes or different sections of an animation curve.

Software Versions

  • mmSolver version: 0.5.x
  • Maya version: All supported
  • Operating System (OS): All supported
@david-cattermole david-cattermole added enhancement maya tool A user tool inside Maya. core solver Related to the low-level solver functions. user interface Related to a User Interface (Maya or Qt) python api The Python API for mmSolver maya plugin Maya API Plug-In (C++) labels Oct 21, 2024
@david-cattermole david-cattermole self-assigned this Oct 21, 2024
@david-cattermole david-cattermole removed core solver Related to the low-level solver functions. user interface Related to a User Interface (Maya or Qt) python api The Python API for mmSolver labels Oct 21, 2024
david-cattermole added a commit that referenced this issue Nov 2, 2024
Test files added to ensure correctness.

GitHub issue #268.
david-cattermole added a commit that referenced this issue Nov 2, 2024
This uses the "argmin" and "ndarray" crates (and includes the Intel MKL
libraries)

GitHub issue #268.
david-cattermole added a commit that referenced this issue Nov 2, 2024
This can be used to plot curve data and analyse how the curves are
moving, so we can detect jittery values.

GitHub issue #268
david-cattermole added a commit that referenced this issue Nov 2, 2024
This allows any number of linear points to be fit to an input line.

GitHub issue #268.
david-cattermole added a commit that referenced this issue Nov 2, 2024
Switches the non-linear least squares solver to Quasi-newton BFGS
solver, because it converges significantly faster.

Note: as a result of this speed the quality of the curve with a large
amount of randomness is less accurate - but I feel this is a good
trade-off for speed.

GitHub issue #268
david-cattermole added a commit that referenced this issue Nov 2, 2024
david-cattermole added a commit that referenced this issue Nov 9, 2024
Curve pop detection is intended to clean up curves with accidental pops
or extreme noise/jitter in only a sub-section of the curve.

We also add a simple curve resampling feature, and
statistics/distribution related functions.

GitHub issue #268.
david-cattermole added a commit that referenced this issue Dec 19, 2024
A maya command plug-in that is used to manipulate an animation curve.

This also adds C++ bindings via CXX.

GitHub issue #268
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement maya plugin Maya API Plug-In (C++) maya tool A user tool inside Maya.
Projects
None yet
Development

No branches or pull requests

1 participant