Maniphest T76641

Lattice shape key animation on top of armature not rendered in animation
Closed, Archived

Assigned To
Philipp Oeser (lichtwerk)
Authored By
Ignatz (ignatz)
May 11 2020, 11:09 AM
Tags
  • BF Blender
  • Animation & Rigging
  • Dependency Graph
Subscribers
Ignatz (ignatz)
Philipp Oeser (lichtwerk)

Description

Windows 7 Pro 64-bit
NVidia GeForce GTX 1060 6gb

Broken: Blender 2.82 & 2.83 (all versions tested)

Lattice modifier with shape keys displayed correctly in viewport (both still frames and animated)
Rendered result for any single frame - using 'Render Image' - is correct and as expected.
When rendering out complete animation - using 'Render Animation' - the lattice deformations are ignored and not rendered.
It does not make a difference if the animation is rendered out to a series of images files or to one single video file.

Please examine attached Blender file.
Note the top of the cube is animated using a lattice modifier with shape keys (growing and shrinking). This is the part of the animation that does not render correctly.

Event Timeline

Ignatz (ignatz) created this task.May 11 2020, 11:09 AM
Philipp Oeser (lichtwerk) changed the task status from Needs Triage to Confirmed.May 11 2020, 12:59 PM
Philipp Oeser (lichtwerk) added projects: Animation & Rigging, Dependency Graph.
Philipp Oeser (lichtwerk) added a subscriber: Philipp Oeser (lichtwerk).

Can confirm.

Philipp Oeser (lichtwerk) renamed this task from Lattice shape key animation not rendered in animation to Lattice shape key animation on top of armature not rendered in animation.May 11 2020, 12:59 PM
Philipp Oeser (lichtwerk) closed this task as Archived.May 11 2020, 1:27 PM
Philipp Oeser (lichtwerk) claimed this task.

Ah sorry, there is a dependency cycle here:

Dependency cycle detected:
  OBCube/Geometry Component/GEOMETRY_EVAL() depends on
  OBLattice/Transform Component/TRANSFORM_FINAL() via 'Lattice Modifier'
  OBLattice/Transform Component/TRANSFORM_SIMULATION_INIT() via 'Simulation -> Final Transform'
  OBLattice/Transform Component/TRANSFORM_EVAL() via 'Transform Eval -> Simulation Init'
  OBLattice/Transform Component/TRANSFORM_PARENT() via 'Eval'
  OBLattice/Transform Component/TRANSFORM_LOCAL() via 'ObLocal -> ObParent'
  OBLattice/Transform Component/TRANSFORM_INIT() via 'Transform Init'
  OBEmpty/Transform Component/TRANSFORM_FINAL() via 'Parent'
  OBEmpty/Transform Component/TRANSFORM_SIMULATION_INIT() via 'Simulation -> Final Transform'
  OBEmpty/Transform Component/TRANSFORM_EVAL() via 'Transform Eval -> Simulation Init'
  OBEmpty/Transform Component/TRANSFORM_PARENT() via 'Eval'
  OBEmpty/Transform Component/TRANSFORM_LOCAL() via 'ObLocal -> ObParent'
  OBEmpty/Transform Component/TRANSFORM_INIT() via 'Transform Init'
  OBCube/Geometry Component/GEOMETRY_EVAL() via 'Vertex Parent'
Detected 1 dependency cycles

So the lattice alters the geometry which in turn determines the lattice parent (the empty).
This kind of circle dependency is not supported.

Think we have to close this, thx reporting anyways!

Ignatz (ignatz) added a comment.May 11 2020, 2:57 PM

Philipp,
Although you seem to have pointed out some programming that would seem to suggest that this is not supported...
... but the fact remains that it works perfectly well in the 3D viewport and one can render individual images without any trouble.

So if it works - one image at a time - why should it NOT work in an animation??

The logic escapes me.

And even if you have decided that the matter is closed I fear it will still be a problem for other users (such as myself) who can arrange these modifiers and see it working in test renders... only to be totally confused when it does not function for use in an animation.

Philipp Oeser (lichtwerk) added a comment.May 11 2020, 5:35 PM

I agree it would be nice to have this message presented to the user early on [so everyone is aware]

As to why this works out this well in the viewport and not during rendering - I could not tell without looking into details, it is possible it updates twice in the viewport somehow, but I also assume this is not updating 100% reliably in the viewport either (so it is likely having a frame delay and you might run into issues running backwards e.g.)

Not being a rigger myself, I think it would be a better solution to rig the lattice into the armature [bone parenting as the simplest thing] instead of relying on the vertex parenting.
To have reliable "on-surface" controllers that stick to the deformed surface (while being able to deform that said surface as well), we would need to consult a real rigger I am afraid...

Philipp Oeser (lichtwerk) added a comment.May 11 2020, 6:40 PM
In T76641#928987, @Philipp Oeser (lichtwerk) wrote:

I agree it would be nice to have this message presented to the user early on [so everyone is aware]

Looks like there is discussion already about this in D4730: Depsgraph: display a dependency cycle warning in the UI.