4
$\begingroup$

I am trying to animate in 2d. I do it with planes that have textures on them. I recently came up with the idea of having a plane with an image sequence of mouths because animating actual lip syncing by hand takes too long and isn't really necessary for what I'm trying to acomplish. However, when playing back the animation in textured viewport shading the animated texture stays at the last frame until the animation stops. I can use the arrow keys and it works fine as well as scrubbing through the timeline, just not when playing back the animation with alt+a. Can anyone help me with this problem?

$\endgroup$
0

3 Answers 3

6
$\begingroup$

It is a very, very, very, very well known limitation of the current system.

Viewport shaders are optimized for speed and performance for smooth playback and as responsive interaction as possible during animations.

Animated materials and textures require shader re-compilation, and this is a computationally expensive and resource heavy task, that is generally preformed on the CPU rather than the graphics card). Recompiling requires constant re-upload and sending data back and forth from the CPU to the GPU which is comparatively slow.

As such, they are pre-compiled before playback to avoid constant updates or refreshes, and during this process animations are suppressed to achieve faster updates and increased smoothness during playback.

It is a limitation that will likely be overcome in future 2.8 versions of Blender and the redesigned EEVEE viewport engine.

That being said, if you plan on rendering using the OpenGL renderer whether for your final output or animation previews, offline rendering will effectively update the animated materials and correctly render your movie.

If you only have a sequence of images or a movie strip as texture just turn on the option Auto Update in the image texture node

$\endgroup$
5
  • $\begingroup$ Thank you. I actually do render these animations in OpenGl because ray tracing is pointless for 2d shadeless objects. I found that with textured viewport shading or solid with textures enabled it wouldn't work. After I switched to material I had to turn the objects shadeless but now they're animated! Also, like in the link you sent me, If I pressed alt+a over the preview area it would animate the texture even in solid! $\endgroup$ Sep 30, 2017 at 0:10
  • $\begingroup$ Hi @CadenMitchell I'm facing the same problem and I'd like to know how did you solve it. You wrote you turn the objects shadeless and the animation worked? What do you mean with "turn the objects shadeless". Is there an option for it? I need to have some planes with image sequences running on them when I hit alt+A in OpenGl viewport. Thanks in advance. $\endgroup$
    – mugnozzo
    Nov 18, 2018 at 17:24
  • 1
    $\begingroup$ @mugnozzo Shadeless just made it visible without lighting. You should use the addon called “Images as Planes” and in the import process open the folder with the images and select them all. You should check the image sequence option and the auto refresh option. If it loops enable cyclic. Cycles Renders viewport cannot display image sequences. You’ll need to be in Blender Render and set the material viewport shading to GLSL. It should work. $\endgroup$ Nov 21, 2018 at 6:26
  • $\begingroup$ Ongoing bug in 2.8. In the post you can find some temporary workarounds. $\endgroup$
    – 5agado
    Jan 16, 2019 at 12:14
  • $\begingroup$ offline openGL renderer still doesnt update textures for me in 2.79b. $\endgroup$ Feb 8, 2019 at 1:58
0
$\begingroup$

I work with architectural visualizations and set up stills as animations so I can render multiple variations of designs and multiple cameras at once. These are not actually animations, so I don't care about performance, but the lack of this feature would make my life a nightmare, so I use this script that forces Cycles material updates on every frame change:

import bpy


def update_materials(scene):
    for m in bpy.data.materials:
        m.use_nodes = False
        m.use_nodes = True

bpy.app.handlers.frame_change_pre.append(update_materials)
$\endgroup$
0
$\begingroup$

Perhaps I misunderstand the question, but in Blender 2.93.5 I can import .PNG image sequences (with transparency) using 'Images as planes', and they display as animations with the Viewport Render.

(I import ticking Animate Image Sequences, Principled OR Shadeless, Overwrite Material. Once in the Shader Editor I select Cyclic and Auto Refresh. I note that extraordinary numbers are put in the 'Offset' box e.g. Offset = 2770097 for a 483 image sequence starting at frame 100 in my timeline... mysterious... if I put in something more rational I just get the 'pink plane of death'...).

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .