Page MenuHome

Geometry Nodes input values corrupted during animation when using keyframes or drivers
Closed, ArchivedPublic

Description

System Information
Operating system: macOS-11.5.2-x86_64-i386-64bit 64 Bits
Graphics card: AMD Radeon Pro 5600M OpenGL Engine ATI Technologies Inc. 4.1 ATI-4.6.20
Also tested on:
Operating system: macOS-10.14.6-x86_64-i386-64bit 64 Bits
Graphics card: AMD Radeon R9 M395X OpenGL Engine ATI Technologies Inc. 4.1 ATI-2.11.26

Blender Version
Broken: version: 2.93.5 Release Candidate, branch: master, commit date: 2021-09-01 11:53, hash: rBae1a57a05eed
Broken: version: 2.93.4, branch: master, commit date: 2021-08-31 09:23, hash: rBb7205031cec4
Broken: version: 2.93.3, branch: master, commit date: 2021-08-17 18:30, hash: rB8b80d19f3641
Worked: Unknown

Short description of error
Modifier Properties panel inputs are not updating within Geometry Nodes reliably during animations, and as scene complexity increases, the amount and severity of the errors increase.

Exact steps for others to reproduce the error

  • Create Geometry Node system
  • Create inputs for use in the Modifier Properties panel
  • Create keyframed or driver based animations in the Modifier Properties panel
  • Duplicate the object many times (see notes below)
  • Play through the animation: some objects may not update every frame
  • Render the animation: if the playhead is not at frame 0, the first frame rendered may randomly use different keyframe values, and if frames are rendered non-linearly (very common in some workflows if you render every 10th or 5th frame initially, then render the rest of the frames later) the input values may be randomly corrupted
    • This is how I created the example animation: I rendered frame steps of 10, 5, 2, and then 1. While the animations are entirely deterministic (a combination of keyframes and frame/300 drivers, none of which would ever change from render to render), the resulting animation is jittery and randomly uses values from incorrect frames (something wrong with the frame update system?).


Notes

  • This issue appears to be dependent on the complexity of the scene. Just 3-4 objects may not produce consistently noticeable issues, but depending on scene complexity, 5-10 Geometry Node objects can be enough to push it over the edge (which is how I discovered it during a client production)
    • If the scene complexity is enough to drop playback below 15fps, the errors start to become easily visible in the viewport, typically showing up as asynchronous geometry updates; some objects will update on one frame, others on the next, and the entire playback is jittery and buggy
    • While not replicated in the example scene (it's still not complex enough), I've seen it get so bad that stepping through an animation doesn't even update geometry positions half the time
  • Using the same Geometry Nodes group on multiple objects is NOT required, it's just easier to demonstrate this way. Using unique Geometry Node groups will produce similarly buggy results
  • The attached demo project uses a LOT of objects, and replication of the issue seems to be reliable in my tests (still not as severe as my client project, but that is of course under NDA and cannot be shared)

Partial workarounds (not fully vetted, but included in case they help point to the root culprit)

  • Using keyframes or drivers within the Geometry Node system works as expected (but cannot be customised per-object; these are by nature global to all objects using the node group, so not an option for systems that need variations per instance)
  • Using drivers within the Geometry Node system that are referencing the input fields in the Modifier Properties panel also works, you just can't connect those inputs directly within the nodes (but again, global to all objects using that node group since that driver reference isn't dynamic per-object, so not an option for animations that need variations per object)
  • Using an object input in the Modifier Properties, then getting the position, rotation, and scale values as values within the Geometry Nodes group does seem to work, and based on some limited testing, appears to work ok across multiple uses of the same group on different objects with different object references (this is the only potential workaround I've found so far that allows for different inputs per-object using the same Geometry Nodes group)

Event Timeline

Richard Antalik (ISS) changed the task status from Needs Triage to Needs Information from User.Sep 3 2021, 5:14 PM

When I open your file and change frame, I see -inf as Texture Sample 3rd value. Then all objects with geometry nodes will produce no mesh. This can be reproduced even with 1 object with geometry nodes.

Is this behavior you see too? I am not sure if this is same bug or different.

@Richard Antalik (ISS)

Nope, I've never seen that behaviour, totally different issue!

Is it possible you have driver evaluation turned off? The third value of the texture sample is using frame/300 (mentioned in the documentation I posted above). If it's evaluating to infinity, it sounds like there's something else going on with your setup.

Note that I included the drivers only to demonstrate that the Geometry Nodes input issue affects both keyframes (which I'm using to control the instance scale-in reveal) and drivers (which I'm using to affect the more subtle wiggle of each instance's position). You should be able to delete all of the drivers and test with just keyframes too.

I've seen the input value corruption bug on three different computers running two different versions of MacOS and four different versions of Blender, using different render engines in independently created projects...so I'm reasonably confident it's not a fluke...but that doesn't rule out a bug that's exclusive to the MacOS version of Blender, or some other commonality in my testing (for example; even when testing brand new installations of Blender, I've always selected "industry standard" keyboard shortcuts on first open).

Thanks for testing the file yourself, I appreciate it!

This comment was removed by John Einselen (iaian7).

@John Einselen (iaian7) I am revisiting this report just now, so sorry for delay. I think the issue I saw was because I was checking with version 3.0. Becasue 2.93 receives only critical fixes (crash, etc.) can you check if you can reproduce with alpha build from https://builder.blender.org/download/daily/? That is if you can get it working of course as I mentioned I saw some issues that may need fixing too.

After testing across two systems, it looks like both the rendering and the playback bugs when using animated Geometry Node inputs have been fixed in the 3.0 alpha. :) Tested with version 3.0.0 (3.0.0 2021-10-13).

Though it's disappointing to hear that 2.93 LTS fixes don't include bugs like this. :(

Richard Antalik (ISS) closed this task as Archived.Oct 13 2021, 10:35 PM

Thanks for checking, will close then.

Thing with backporting more fixes is that sometimes these introduce other bugs or just area has changed so much, that change is simply not applicable.