# Low FPS on Animation Playback

I have a question about animation "best practices": If I want to render my animation at 24 fps, does that mean I also need my animation preview/playback window to run at 24 fps?

Some details: I've created 15 second walk-cycle scene that I want to render at 24 fps. However, when I use the animation playback feature (alt-a), the highest framerate I'm able to achieve is 16 fps. As a result, I've prepared an animation that looks reasonable at 16 fps but is much too fast at 24 fps. Of course, I could rescale my keyframes to compensate for the difference after I've finished the animation, but I'd prefer to see something close to the finished animation the whole time.

Some optimizations I've tried to increase the playback framerate:

• Sync Mode set to "Frame Dropping"
• All objects except my character and camera are set to be invisible
• All subsurf modifiers are set to their lowest level
• The shading mode is set to "solid" or "wireframe"

Are there additional things I can do to increase the playback framerate? Or do I just need to work around my current 16 fps playback framerate?

• you do not have to go with the 16 fps. That is just the preview running in the viewport. On a faster computer the viewport would run faster. Jul 21, 2014 at 18:31
• Can you post a blend file? A single character should not be that slow. Jul 21, 2014 at 19:12
• Have in mind that viewport playback speed has nothing to do with your final animation playback speed. Once the animation is rendered (through viewport OpenGL, Blender Render, Cycles or any other method) you can then control the playback speed of the output separately. If you render directly to a video file format which is strongly discouraged) the video will have the correct frame rate specified in the render settings Jul 27, 2016 at 1:41
• Check if you have any unapplied modifiers on your objects. Jun 1, 2017 at 6:30

Things you can try to improve viewport performance:

• Enable VBOs in User Preferences > System. This should speed up drawing of highly complex scenes with lots of geometry.

• Enable Only Render under the display panel of the 3D viewport. This will hide extra lines and wireframes, which are slow to draw.

• Disable Double Sided in the object properties editor for high polygon mesh. This is especially helpful on Fermi-level Nvidia cards.

• Turn off modifiers you don't need in the viewport.

• Use Simplify in the Scene property editor to globally reduce the complexity of the scene.

• Make sure you are viewing the scene in Solid mode, it's typically faster than all the other mode, including wireframe.

• If you are using physics simulations like particles or cloth, make sure they are baked. Otherwise, Blender will try to recalculate them every time you switch frames.

• Thanks! I was able to increase the framerate to 24 fps by using these optimizations and by enabling the "Simplify" checkbox (under Properties->Scene->Simplify). Setting the subdivision and shadow samples to low values in the "Simplify" menu seemed to help quite a bit. Jul 21, 2014 at 19:55
• Thanks! I added it to my answer. I wasn't sure if I should mention that one since you already saidd you manually set the subdiv to a low value. Does your character have hair? Jul 22, 2014 at 17:57
• There's no hair on my character, but my computer is a little slow. My scene uses a couple (somewhat complicated) assets that I didn't create, so I adjusted all the subsurf modifiers I could find but I guess I didn't find them all. Now that I know about it, the Simplify tool seems like a much better way to quickly adjust all the subsurf modifiers at once. Jul 23, 2014 at 20:41

This usually happens when I'm animating, but I have found another solution. I animate with my timeline, node editor and my graph editor open all at once, and I noticed that even if frame dropping is enabled that my PC plays the animation in around 10 -12 fps, but by only removing the graph editor, my frames go back to normal speed as it should be. I also noticed that my Blender lags a bit on other navigating controls, too, but that's also fixed by just removing the graph window.

I hope this helps for anyone still having problems after going through all the other answers.

• thanks, closing my graph editor pane fixed the fps for me Nov 10, 2018 at 1:33
• This works! My fps went from 8 to 26 instantly. Curious as to why that works?
– xtt
Jan 28 at 2:58
• @xtt my theory is that Blender UI tries to prioritize its responsiveness, which includes updating the graph editor during playback. Similar concept to why renders are often faster via running Blender in the terminal instead of within the UI. Apr 10 at 20:38

You could use the OpenGL renderer (AKA Quick Render) to preview animations. This feature allows you to preview an animation at full speed, but without having to use Cycles/Blender Internal to render a final image. As long as you set up your render settings correctly (choose an appropriate image size, pick a video filename and codec, etc), it will quickly render your viewport to an image sequence or video file. The drawback is that it's not realtime, so it's not interactive. It adds a few steps to your animation workflow, but may be the only option for complex models on slow computers. This is how I have to preview fluid simulations, even on a fast workstation.

In future versions of Blender, we'll see the addition of OpenSubdiv which uses the GPU to render complex models in the viewport. Initial tests look very promising. If you have a GPU, this could end up being your solution.

• The GPU already renders models in the viewport, I think OpenSubdiv is for realtime subserf using several different backends (some for GPU).
– gandalf3
Jul 21, 2014 at 19:00

Go to user preferances and system (User Preferences > System) and go to screencast. Type in 24 (or whatever frame rate you are rendering at) and it should do its best to do that frame rate in the viewport.

• im using blender 2.83, there is no screencast option May 7, 2020 at 23:53

Found the best solution for the issue. I applied the Decimate Modifier (with a ratio to about $$0.02$$) to the clone of the mesh which is being animated, and moved the original mesh to another collection and disabled it.

I then animated the decimated mesh smoothly, to reveal the actual mesh hide the clone and enable the collection.