Updated version of the old Motion Trail addon

Please read the section about using the dependency graph in the usage instructions below!

Download

Download here.

The addon is currently for 3.2 and higher, works better in 3.4 and higher. For a 2.93/3.0/3.1 compatibility version, or an older version of this addon, see the releases on the github.

Github repo:

The default one branch is a slightly outdated branch without certain experimental changes. The latest fixes and such are in the other_one branch (which the above download link leads to).

I saw that the old Motion Trail addon by Bart Crouch was included in master but not updated, so I finally decided to update it myself. There is now support for trails for objects with all kinds of constraints, parents, etc., and bones, but please read about the depsgraph. If you find any (further, non-dg) issues, please make sure to mention them here.

Depsgraph

The most important toggle, and the one at the top, is for using the dependency graph. When using the dependency graph, the addon will display completely accurate motion trails that factor in all constraints, parents, drivers and more. HOWEVER, there are many drawbacks to using this - all your unkeyframed changes will be removed, the motion trail will not update while you use the graph editor (or others), performance while dragging will be much worse, and likely more.
If you happen to lose some unkeyframed changes you deemed important, first disable the motion trail then undo.
If you want better performance while using the DG, you can increase the drag step size.
As always, addon or not, save often.


If the depsgraph is not used, the addon will use its own custom evaluation. This will not evaluate drivers at all, will not work with most constraints, whacky scenarios like vertex parents, the variety of bone options, and more. Non-DG evaluation will generally not work for complex rigs like rigify or autorig pro. It might work for your own custom rig, as those tend to be much simpler.


Generally, if the motion trail doesn’t line up or isn’t visible (because it’s way offscreen), use the depsgraph.


Usage

For simplicity, let’s assume your grab, rotate and scale keys are g, r and s.

The motion trail toggle is located in the sidebar (AKA n menu) of the 3D viewport.
The motion trail can work with location, rotation and scale keyframes. Currently, rotation can be a bit weird. Scale by default will not be allowed to be negative, if you want negative scale you can tick the tickbox for that.

On the trail, keyframes on the same frame will be grouped together into a single point. When there are multiple of different transform, their colors will be combined.

When using values mode…

With a keyframe on the trail selected, you can:

  • Move with G all its values at once. With a location keyframe, this will move the position of the trail.
  • Scale with S both handle sides for its keyframes.
  • Rotate with R both handle sides for its keyframes
    If there are multiple transforms, the first available one in location, rotation, scale will be used. If you wish to choose a different one, press shift+g/r/s.

With a handle selected, you can:

  • Move the handles on that side with G or R
  • Scale the handles on that side with S

When using timing mode…

With a timebead (green dots along the trail) selected, you can press g/r/s to shift in time all keyframes from the enabled transforms, and you can toggle some transforms with shift+g/r/s.

With a keyframe selected, you can press g/r/s to shift the keyframe in time, until it hits another keyframe.

When using timing mode, you also have the option to position the keyframes on the old Y axis of their curves. I added this to attempt to make timeshifting distort the curve less, however it didn’t quite achieve that, nonetheless I’m sure someone will find a use for this.

In either mode, you can enable frames, which will show individual frames on the trail (keep in mind these are affected by the step size!), you can select and drag a frame to insert keyframes in all the transforms you currently have chosen.

There are 2 buttons for deselecting - one on miss, and one always. For missing, you can use the same key as regular selecting, so you can select when you point at something, and deselect when not. Otherwise, you might want to deselect even while pointing at something, so that’s what the miss key is for.

When you deselect, the deselect passthrough option is whether or not the addon should then pass your input through to the rest of Blender, so you can do whatever you wanted with just 1 input.

You can see what the rest of the various toggles and properties in the sidebar do by hovering over them and reading the descriptions.


Old stuff

Here’s the old wiki link.

Here’s an outdated silent video demo for an older version of this addon:
https://www.youtube.com/watch?v=LUE99D4ME8g


Changelog

1.2.5

  • Minor bugfix for odd keymaps

1.2.4.

  • Minor bugfix

1.2.3.

  • Option to calculate motion trail outside of scene frame range

1.2.2.

  • Minor bugfixes
  • Passthrough for user saving

1.2.1.

  • Initial Armature constraint support for non-DG eval
  • Hopefully improvements for constraints with non-1/0 influence for non-DG eval
  • Attempts at getting local location to work for non-DG eval
  • Ability to set what panel the addon is in

1.2.

  • Minor performance optimizations
  • Extra improvements and settings for unfull keyframe display (e.g. choose the side)
  • Fill unfull keyframes with (shift)+f: f for the channels that are displayed, shift+f for locrotscale
  • Initial, bad version of ability to automatically adjust handles by moving a point on the motion trail inbetween keyframes
  • Reorganized defaults in the addon preferences
  • Support for newer (4.0, 4.1) Blender versions
  • !!! Fix for child bones’ non-DG motion trail (and for quaternion rotation in general)
    This was caused by a Blender bug. Note that this still does not include constraints or the various other options like local location and such.

1.1.

  • Ability to delete a keyframe with X
  • Better undo support
  • Unfull keyframe visualization, i.e. that lack specific channels, e.g. quaternion keyframes, but w is missing, or location has only x and y
    This can help you understand why you can only move a motion trail keyframe along specific axis.

1.0.

  • Made lines prettier
  • Added option for even prettier lines
  • Added outlines
  • New shader for pretty points, which are now circles rather than squares
  • Ability to work on rotation and scale keyframes
  • More Blender-like drag, alongside ability to hold Shift or Alt to slow down / speed up
  • Ability to scale and rotate keyframes and handles
  • Removed speed mode
  • Added ability to constrain movement of keyframes
  • Lots of code refactoring and some bugfixes
  • Improved UI
17 Likes

I remember looking for something like this before and being so sad that the addon was not being updated, the current motion paths system pales in comparison (even if its buggy)

Thank you so much

1 Like

Thanks for updating and fixing the things you could. I wonder why we don’t have this natively in Blender.

2 Likes

Hi I see you’re still working on it and I’ve been wondering whether it would be possible to add axis locks to the addon easily?

Sure! Though there are a decent amount of things to add and fix right now, don’t expect them to show up very fast. I’m close to finished with some improvements to the caching, after that I’ll try to add rotating the motion trail, and alongside it, I’ll add pressing (shift+)X/Y/Z for the axis as it will be pretty handy for rotating as well.

1 Like

I’ve added constraints in the other_one branch, though the rest of the drag functionality is still pending rewrites and most of it doesn’t quite work yet. Handles can’t be moved, I might remove Global/“Local”(?) constraining in favor of other kinds of more intuitive constraining. Here’s a quick demo:

3 Likes

looks great although im getting lots of errors on the other_one branch mainly when i try to change handles tilt by selecting the one end of the handle, also on deselecting while moving im getting an error like that


You’re making lot of progress for one person

The errors are there because I haven’t rewritten that part of the code yet to handle the extra rotation and scale fcurves (or to just not use some things I didn’t like in the code’s old state). A decent chunk of the work is already done. They will be fixed, don’t worry. That’s what that branch is for, you can still get the old better working version from the master branch.

2 Likes

I fixed and improved the “Values” mode, so you can drag handles like before, you can also scale them now alongside constraining, can cancel, and (not shown in the video) if you decide to work with multiple different transform keyframes you can choose which transform you want with shift+(your grab, rotate, scale key). Also, there’s support for quaternions as well (though rotating them unconstrained, or their handles in general might be a bit weird).
Adding keyframes by selecting a frame bead and moving/rotating/scaling is next on my to-do list, and then the other 2 timing and speed modes. They are not implemented yet, they’ll give you an error.

2 Likes

Great its really impressive how fast you’re progressing on it once again thanks for your great work.
Btw I’ve seen that the earlier builds have had acceleration mode and it looked quite fine when I’ve been testing it you removed it since it caused some problems or you’re refactoring it?

1 Like

Around "mid"way through making the next version, after improving caching for the trail itself, I changed how the addon works internally with f-curves (so it can now work with rotation and scale as well), and how it stores original data at the start of a drag, and that made a lot of existing functionality break as those things try to access the old, now nonexistent data (or incorrectly interpret the different existing data).

For example, it seems that Crouch (or someone else?) had tried to add support for child objects (something which the addon didn’t originally support), and complicated the code in some places with this. Initially I just avoided it and altered the addon until it started working in a way I wanted it to. Hacks like that are not good long-term, and with the need to add rotation and scale, that had to be redone with the new systems I added for dealing with parented objects.

A lot of the addon was kinda bloated in some places code-wise, with repeated things, unnecessary (since the attempted parented object thing didn’t work out?) things. It still is, I’m not perfect, no one is, but it’s better now. I’m refactoring it and adding better functionality now that I can comfortably do so and have a better grasp of the entire addon, like scaling keyframes now, something which I just expected the addon to have initially. Or, dragging more akin to default Blender where your cursor infinitely warps around and you can affect the speed with shift/alt.

4 Likes

Hello.
I tried to install the latest version (1.0.0), but I get an error message and cannot install it.
Is there any way to deal with this? (DeepL)

Can you show a picture (or text) of the command prompt after this error happens (window > toggle system console, or on Windows 11 for some reason just open the new command terminal), and also say what GPU you have?
In the meantime you can also get the last old version which wasn’t using custom shaders https://github.com/a-One-Fan/Blender-Motion-Trail-Update/releases/tag/Release

Thanks for the reply.
The command prompt now looks like the image.
The GPU used is NVIDIA GeForce RTX 2070 SUPER. (DeepL)

I’ve made an update (1.0.1), say if that fixes it

Thanks for the update.
However, this time I got an error on a different line.
By the way, the GPU driver was the latest version. (DeepL)

It’s not an issue with your driver or GPU, don’t worry. I made a tiny and dumb mistake which for some reason didn’t matter and worked fine on my RX 480 but apparently doesn’t work with Nvidia’s drivers. Issues like this are kinda why OpenGL is deprecated, AFAIK, and Vulkan is replacing it.

I’ve updated again, 1.0.2, check and say if it finally works, this should be the last such issue…

Thanks for the reply.
The updated version (1.0.2) did install!
However, the motion trail does not appear when I press the button on the panel. (DeepL)

Does the system console say anything, again?

The sentence in the image was repeated. (DeepL)