Page MenuHome

Animated alembic curves dont update on render
Open, Confirmed, MediumPublic

Description

System Information
Operating system: Xubuntu 18.04
Graphics card: Titan X (Pascal)

Blender Version
Broken: 2.80 63ac7c799c8

Short description of error
Imported alembic objects with animated hair strands render incorrectly.
The cache doesn't get read properly and no updates happen in between frames when rendering, resulting in a render where the animation is stuck on the first frame of the cache.
Problem persists between Eevee and Cycles. Regular mesh based caches work fine, this only seems to affect imported hair/curves.
Tried animating the frame parameter too, as well as adding a driver, but it doesn't help. Every render is static on the first frame of the cache.

Exact steps for others to reproduce the error

  • Create hair system
  • Animate said hair system (dynamics / forces)
  • Export Hair to Alembic
  • Import Alembic with hair animation
  • Hair animation doesn't update on render

Details

Type
Bug

Event Timeline

Jacques Lucke (JacquesLucke) lowered the priority of this task from Needs Triage by Developer to Confirmed, Medium.

I can reproduce that. Sounds depsgraph related, because the Alembic import itself is working fine.

This isn't a dependency graph problem..

The actual issue is caused by the following facts:

  • Bevel is only allowed on pre-tessellated curve, while it is still guaranteed to have curve twist and other properties.
  • Mesh sequence cache is a constructive modifier, which runs on post-tessellation state.

This makes it so bevel is never affected by the curve read from the cache. It *kind of* appeared to be working in 2.79 because mesh cache modifier was modifying object's splines, which is not only going against all designs we have :( but also was causing 1 frame delay during playback.

Now, with Copy-on-Write in place, cache modifier modifies copied version which gets tossed away after frame finished rendering.

The only proper and reliable solution i can think of here is to support real constructive modifiers for curves, which will operate on splines, and give splines back.

Maybe @Sybren A. Stüvel (sybren) will have time to look into proper solution one day. But for now unassigning from myself, since is unlikely i'll be handling this myself in the nearest future.