3
$\begingroup$

I have a walk cycle made with Grease Pencil in Blender 2.9.

I would like to be able to use the NLA editor to duplicate it a number of times and operate on it.

I have seen a number of useful videos for how to this for non-Grease Pencil walk cycles, like this example.

However I am unable to use that procedure to duplicate a Grease Pencil walk cycles (or general animations). This seems due to the fact that the Grease Pencil animations does not appear in Dope_Sheet/Dope_Sheet below

enter image description here

Instead the Grease Pencil animation are only visible in the Dope_Sheet/Grease_Pencil tab as below

enter image description here

Is the NLA editor simply not supported by Grease Pencil objects, or I am missing something?

$\endgroup$
2
  • 1
    $\begingroup$ I'm pretty sure it isn't supported. The problem isn't only the fact that Grease Pencil keyframes do not show up in the Dope Sheet. The real issue is that creating Grease Pencil Animations does not also create any actions. And if there are no actions for Grease Pencil animations, then there is nothing for the NLA to act upon. $\endgroup$
    – R-800
    Apr 11 at 20:45
  • $\begingroup$ It can be done: see the brilliant answer by @wilks $\endgroup$
    – divenex
    Apr 14 at 18:43
4
$\begingroup$

Glad you asked, I had a eureka moment a few weeks ago and been using the NLA with GP ever since, quietly thinking to myself that it's the best thing since sliced bread.

TLDR; Re-implement the timeline by placing keys on a Time Offset modifier then push those keyframes as action strips.

For a super simple example, we're drawing on 4s and only doing half a walk cycle (it's a silhouette so no difference between right leg in front and left leg in front). So our loop has 4 drawings, the first on frame 1 and the last on frame 13 (and in this case those 2 frames are actually the same):

walk cycle

Add a Time Offset Modifier and switch it to Fixed Frame. Go to the first frame and add a keyframe by pressing I over the Frame field in the modifier. Then go to frame 13, set the Frame field to 13 and add another keyframe:

modifier keyframes

Right, so we've just painstakingly re-implemented what the regular Blender timeline does by default, which might seem a bit of a waste of time, but far from it: we have two keyframes that show up in the action editor!

Now go over to the NLA editor, push those keyframes as a new action strip and you're good to go. Using the Action Clip section of the Strip tab in the right panel, you can set it to repeat and/or change the playback speed. You can of course also duplicate the strip and move it about as per usual.

I suppose it is just a workaround, but what's awesome is that if later you decide to add extra frames to the loop (say, draw it on twos or on ones) it will automatically update the entire animation. Just remember to disable the modifier in viewport when you want to change/add frames.

nla screenshot

Another cool thing is that, by using multiple Time Offset modifiers with the Influence option to limit it to certain layers, you can combine different animations in the NLA editor, which really opens up a whole bunch of possibilities.

$\endgroup$
5
  • 1
    $\begingroup$ Wow! Brilliant idea. Thank you. I thought I had to wait for a future version to use NLA with GP. Which sounded like a shame as NLA is so incredibly useful. Your solution is a bit tricky but it makes GP usable with NLA already now. $\endgroup$
    – divenex
    Apr 14 at 17:40
  • 1
    $\begingroup$ This really is brilliant. Thanks for sharing. $\endgroup$
    – R-800
    Apr 18 at 3:06
  • $\begingroup$ While this trick does indeed create a new action strip based on something called a "stroke action", it doesn't seem to actually allow me to produce any new animation behavior with any extensions of that strip, or even, with any duplications of it. None of the animation behavior continues after the initially created strip. Anyone else having this issue? $\endgroup$
    – R-800
    May 30 at 18:31
  • $\begingroup$ It would appear to be not working, even though a new action strip appears. The reason the first loop works is because the Action Editor timeline is reading the original keyframes, and so isn't reading any new ones created by the strip because the strip isn't influencing the timeline at all. It exists, but behaves as if its empty, even when making sure that its influence checkboxes are on in the NLA. Hmm... $\endgroup$
    – R-800
    May 30 at 18:37
  • $\begingroup$ Hmm, I just did a little test and it still works here. From your description, it kinda sounds as if the time offset modifier was disabled? Maybe? I can check if you have a link to your file $\endgroup$
    – wilks
    May 31 at 0:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.