Incorrect Between-frame interpolation

Alright, so I’m stuck with this infuriating problem that I have tried to find some way of diagnosing and fixing to no avail.

I have this mesh that is the end of an autocannon. It has a few disks holding together six gun barrels. I need to make it look like it’s blurred while shooting, so I animated it turning so I could use nodes to use vector blur and give the impression of motion.

The problem is this: i set a keyframe for one of the disks, move five frames downstream, and make a second keyframe after I’ve rotated the disk. Now, this disk is NOT aligned perfectly to any axis, it is facing in a direction that’s a combination of all axes, so animation is not a simple matter of rotating around X. Y, or Z. Doing just that works perfectly fine. To get the disk to rotate the way it’s meant to, I need to switch the rotation axis to Z LOCAL. So that’s what I do, and I rotate the thing on the Z local axis about 170 degrees and make the second keyframe. However, when I go back upstream and check the previous frames, blender has NOT interpolated the disk to rotate on that axis. Instead, the larger the number of degrees I rotate it, the more prominent the screw-up is: the disk turns in place and points in different directions.

It doesn’t rotate on a single axis, or even the correct one for that matter. Each of the previous five frames show the disk pointing in a different direction, and if I were to animate it, it would look almost like the face of the disk is tracing out an invisible circle with its “line of sight.” I know this may not make sense to some, but it’s not like it’s an easy thing to describe. If no one can help me with this description I suppose I have no choice but to post the blend file, but I’m hoping someone understands what the hell is going on here because it’s starting to make me rage and that’s no fun.

Thanks in advance for any help and if you don’t understand something lemme know and I’ll do my best to be descriptive.

Or perhaps a picture might help. :spin:

So you have something made like the barrel of a gun which is meant to spin, but your problems start because it’s in separate parts? You could join them together (CTRL+J) or parent them to a centrepoint object (an empty) and rotate that.

While [R][X] rotates around the world axis, [R][X][X] often rotates around the local axis (depends where the object is facing).

Render around frame 5 or so to get your blur.

Are you keyframing the 170 degrees at once? I remember animating a wheel and needing to use smaller increments, like 90 degrees and then make the ipo cyclic to get ti to work correctly.

I know about joining and parenting, which has nothing to do with the problem. It’s just the one disk. If I can get it to rotate correctly, I can get all the other pieces to rotate with it. I’ve already done trial and error with both parenting and joining and they don’t contribute to the issue.

While [R][X] rotates around the world axis, [R][X][X] often rotates around the local axis (depends where the object is facing).
Did you even read my post? I mentioned I tried doing just this exact thing with the Z axis, but it won’t rotate around that axis in the interp’ed frames.

Render around frame 5 or so to get your blur.
This has nothing to do with the problem either.

Are you keyframing the 170 degrees at once? I remember animating a wheel and needing to use smaller increments, like 90 degrees and then make the ipo cyclic to get ti to work correctly.
Yeah I thought about this to, Blender doesn’t like anything getting keyframed over 180 degrees in one frame transition. Don’t worry, I thought this might be the case too, but actually when I decrease the degree amount, the problem persists, but it’s just not as prominent.

Alright, so clearly this takes more than just descriptions, so I’ve attached the .blend file. When you initially open it, you’ll be on frame 25. If you click and move frame by frame to 30, notice how the disk moves. The other disks and tubes are parented to it. Now, delete the IPO curves for the disk’s movement (it’s the front disk that controls it all). Try making the disk rotate on the Z LOCAL axis, any amount of degrees (although I’d suggest over 40, the smaller the degrees the slower the turn, and the less noticeable the problem, but it’s still there).

Let me know if you figure out how to make the disk (and the rest of it) rotate along it’s local Z axis without crapping itself. edit: I should mention to anyone who didn’t figure out the obvious yet, I mean try rotating the disk from frame 25 to 30 (>40 degrees, <180 degrees) on it’s local Z.

Attachments

rotation.blend (365 KB)

Hey, did you try converting to mesh first? Looks like they are all still curves to me…

. .

Attachments

rotation2.blend (64.7 KB)

Yeah, they are curves, but that shouldn’t make a different. Lancer’s file has the thing rotating, and they’re still curves; his workaround was changing the orientation of the axes according to the leading disk itself. It works, but I noticed when messing with it that I can simulate my problem by rotating the disk in away from the direction Lancer has it initially facing.

While I have found a couple workarounds myself the past few hours, this still bugs me. I mean it’s not a problem anymore, but what’s causing this? How can it be permanently fixed? What if you tried to have this rotating barrel firing while the gun was swept across the horizon?

The problem has been “solved” for now, but not knowing how to actually fix this, not knowing what’s truly wrong is going to bother me. I want to know why it’s acting this way, mainly for future reference and for better functionality.

Wrong. My solution involved parenting. Look for the empty called “realgun” and point it any way you like.

That’s true, but my point was that the objects’ relative axes are not in line with the global ones. Changing those orientations, no matter the method, is why your solution currently works.

Yes… starting with your original file, you needed to reset the rotation altogether (CTRL+R) and then parent to an empty. Now you can animate your spin, and then move the parent around however you like. It’s basically a parental rig and is a fairly standard way of going about things. I placed the empty right near the end of the turret, though it makes more sense to put it at the elbow end of the gun, where the main gun direction will actually turn from.

Blender simply does not have sensical IPO curves which work well localy in practical terms (someone can prove me wrong here to make my life easier). Armatures even use QuatXYZX rules and other things which I think were designed from the programmer point of view rather than the end animator trying to fine tune the curves of a walkcycle.

Stop being so proud, you rude little mushroom*. Admit it: my solution fixes your problem. :stuck_out_tongue:

  • that’s a joke btw.

I already did, but I guess you missed that part.

I did find my own way around it before your response, because I didn’t need an animation, just the illusion of motion, so I only rotated it over the span of one frame, where blender couldn’t screw it up. Your solution, of course, is a better workaround, allowing more versatility and use for anyone who would hypothetically want to turn the barrels without making all those stupid keyframes on every single frame.

However, both of these are workarounds…I mean yeah, story of our lives right? It seems fifty percent of overcoming any problem in blender (or any 3d program) is creative workaround and/or faking something (could be why it has a bit of a challenging appeal). This rotation screw-up and why it happens is going to irritate me for a while, although my issue now is getting the barrel spinning to look right using vector blur in composite nodes. It blurs fine, but doesn’t quite have the right look to it…

Time to get another workaround in.

What about using the MBLUR button in the render settings?

Yeah I tried that but it didn’t seem to do anything. I must be missing something, I guess…I’ve never used Mblur, but it looks intuitively easy. If there’s anything beyond interpolation and turning the Mblur button on (and increasing Bfac), I don’t know it, but then again I haven’t looked too much into it yet.

Odd. I’ve never had much of a problem with it. The Motion Blur button works for both animation and with still frames as long as you choose a frame mid-movement (e.g. frame 5 or something).

It does not need nodes at all, but I just double checked and it doesn’t seem to get overwritten if they are used.

See whether or not the attached file reveals anything. Hit F12.

Attachments

motionblur.blend (36.6 KB)

Yeah, that does work, and it works with the gun barrel too as long as it’s readjusted to work around that stupid rotation issue. Notice, though, how when you render a frame, even if it’s at the end of the object’s motion, that the afterimages produced appear to be both in front and behind the cube? It gives the cube the illusion of motion, but you can’t tell whether it’s going forward or backward. Do you know how to make it so that the cube has afterimages only behind it, to make it look like it’s going forward?

Not sure there is an option for that one.

If you are just wanting a directional blur, could you use a separate render layer for the gun and apply a blur node to just that layer, kinda like using photoshop filters on a selected layer of pixels?

well i got the blur to work, and since it’s rotating, the directional ambiguity doesn’t actually matter.

Now there’s a NEW problem: the Mblur works fine until I use the “use sequence” render button. Whenever i try rendering the scene using the sequence render, the mblur disappears. is there a way around this?

If you use sequence, then everything should disappear… model included. The “sequence” means to ignore the render and instead use the Video Sequence Editor, which is kind of like having After Effects or Adobe Premiere built into blender… it plays movie files and can chop / edit scenes with overlapping fade ins etc.

If it’s animation you’re after, hit the “Anim” button. Be sure to set the correct “start” and “end” (frame) values.

No, I have sequence engaged because I am overlaying one scene on top of another one. It seems that in order to have the motion blur, I’ll need to incorporate both scenes into one, which I may be able to do, but if this were any large project, that would not be feasible.

My question is, can you get Mblur to show up while still using the sequencer?