Extremely Slow Animation in Viewport

I’m trying to do some custom animations for a ship that I’ve modeled, but everything is running extremely slowly (3 fps) when I try to play the timeline. It’s not a geometry issue - the model is less that 170k triangles, and less than 90k verts. There is no difference in speed between solid mode and material mode, they both run at 3fps. Moving around the viewport and editing things is super smooth, even in rendered mode - both in Eevee and Cycles. I’m not running any simulations either.

I just recently got a 3070TI, my CPU is a Ryzen 7 3800X, and I have 64GB of RAM - so I don’t think it’s an issue with my hardware.

My only thought is that maybe I have too many objects parented to the armature? I have 114 objects in the scene parented to the ship armature. It’s not a complex armature either, there are only 33 bones total with only some very simple constraints.

But then even if I turn everything off in the viewport, except the sail I’m trying to animate, it doesn’t affect performance at all. I’ve even tried turning off the modifiers applied to the sail and that doesn’t make a difference. 3fps is too slow to be able to animate at all. I’m at a total loss here!

I’m inclined to think this is it, but it’s honestly hard to say, you’ve already checked the 2 or 3 basic things I’d recommend normally :thinking: can you share your file?

1 Like

Sure, can I DM you a Wetransfer link with the blend file? I’m planning on selling the model afterwards so don’t want to post a public link. I’m still on version 3.1, didn’t want to update until I finished the model in case something broke.

I do have some plugins enabled, though none that should affect the viewport in solid mode (Physical Starlight, Photographer, HumanGen). I tried turning all of them off too, but that didn’t help.

Something ain’t right, because…

3 fps? I’m going to keep my eye on this thread.

Good luck.

2 Likes

You can DM your file, but you should know that I’m about to leave the country and I won’t have access to a computer for about a week. If you need quick answers, I’d suggest DMing it to someone else that can help :slight_smile:

1 Like

Yea it is weird. You can DM it to me too, I may be able to infer a thing or two. Though sure that vert count should be manageable… unless the objects are subd’ed and bound to the armature (deformed)… but even then…

1 Like

Thanks Joseph! I’ve been itching to wrap it up (it’s a personal project so no deadlines - but I’m ready to be done with it, haha). I’ll DM it to you in a sec @Hadriscus , thanks for the offer!

Most of the objects are parented to the armature, but don’t have any deformation, and only the sail has a subd modifier and that’s included in the vertex count provided already. I am using mirror and bevel modifiers on a few of the objects, but not a ton.

Next thing I’ll try is to go through and delete any armature modifiers that aren’t doing anything that I may have applied when parenting. But again, I disabled everything but the sail - I tried both just hiding from viewport, and also by turning them off using the checkbox in the outliner, and that didn’t change anything.

EDIT: It looks like I actually have a lot more mirror modifiers and weighted normal modifiers than I thought! Maybe that’s it? I’ll try applying them and see if that makes things faster.

1 Like

Weighted normals will recalculate every frame if placed after an armature modifier, it may be what’s causing the slowdown.

1 Like

Nope! Applying the modifiers didn’t help. Neither did joining the larger meshes together??

The weighted normals were all were all before the armatures too, but now all but a few are gone. Even if I turn those objects that still have the weighted normals off it’s still not affecting performance at all. Now I’m really stumped!!

If I do a fresh scene with an animated cube I get whatever fps I set the framerate to, for whatever that’s worth. I’m assuming it has something to do with how I have things parented. Is it because I have multiple separate objects with an armature modifier that points to the same armature?

EDIT: I also unparented everything from the armature and removed all modifiers, only three drivers are still active, but I’m still getting 3fps from the empty armature just rotating as a turntable???

EDIT2: I can only get the framerate back to 30 if I delete anything but one or two objects. The framerate doesn’t get progressively better either. It goes from 3 to 30 once I delete enough objects.

1 Like

Hmmm… does it affect the frame rate depending on which objects you delete?

1 Like

Huh, yes…but this is really weird! It seems like I fixed it.

The object that was causing the slow down was a 1500 vert mesh which I had been using as a boolean cutter object on an ocean plane that is not in this version of the scene. It has no modifiers, and the only relation it has is it’s parented to the armature. If I delete or unparent it from the armature, everything runs at 30fps, even with all the mirror and weighted normal modifiers on the 114 other meshes!

If I make a duplicate of the problem mesh and then parent that, there are no issues either. Everything runs smooth

It seems that maybe Blender is still storing the boolean operation information from the deleted ocean plane in relation to that mesh?? That’s my only explanation for it. I had already cleared unused data-blocks to no effect so there most be something deeper down that can’t be seen from within the UI?

Old version with ocean plane and boolean modifier:

Current version with no ocean plane and no boolean modifiers, but still with the “Hull Volume” object that was being used as a difference solver on the ocean plane.

Version with “Hull Volume” object deleted, but with a fresh duplicate of it in there and parented to the armature, running at a solid 30fps

1 Like

Yeah, a Boolean modifier would do that for sure. Weird that it still was after you applied it though. Might be worth a bug report

1 Like

Yeah, I think I will submit a bug report.

I wonder if maybe it’s because I didn’t apply the boolean modifier before I deleted the ocean plane? It’s very weird that it seems to have been trying to cut an object that didn’t exist in the scene! Especially since it wasn’t the “Hull Volume” mesh that even had the boolean modifier itself.

1 Like

Could be, I got nothing :man_shrugging:t3: I’m just glad you found a solution!

1 Like

I went back to the old scene and played around a bit, and it gets a little weirder. If I select the collection the ocean is in and delete it and everything in it using “Delete Hierarchy”, the animation stays at 3fps. However, if I delete the ocean plane by itself then it goes back to 30fps as soon as it’s gone. So it seems to be somehow related to the collections and hierarchies? Though I haven’t been able to reproduce it on a simpler scene.

:man_shrugging::man_shrugging::man_shrugging:

1 Like

Maybe the dependency graph is not rebuilt after deleting a whole hierarchy. That warrants a bug report imho. Glad you found the solution! I was about to look at your file this morning (I let it download during the night), woke up to a solved problem.

2 Likes