Page MenuHome

Add Support of PointCaches to Library Overrides
Confirmed, NormalPublicTO DO

Description

Support baking simulations into PointCaches for library overrides.

Milestone 1 - Minimal Viable Product - 2.92

Milestone 2 - Support memory cache - ???

  • Support baking existing cache slots in memory (this requires some specific handling during application of overrides step).

Milestone 3 - Potential Extensions - ???
Those will require T82160: LibOverrides - Refactor how diffing of RNA collections is handled, and extend diffing possibilities. to be tackled first.

  • Support adding new cache slots to a simulation.

Original Report

System Information
Operating system: Windows-10-10.0.19041-SP0 64 Bits
Graphics card: GeForce GTX 1080 with Max-Q Design/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 457.09

Blender Version
Broken: version: 2.92.0 Alpha, branch: master, commit date: 2020-11-06 19:20, hash: rBd2c102060d44

Short description of error
Cloth sim bakes work great on library overrides until you save and reload. Then the bake is lost.

Exact steps for others to reproduce the error



Download both files
Open "Library Override.blend"
Press Bake
Save
Reload

Event Timeline

Philipp Oeser (lichtwerk) changed the task status from Needs Triage to Confirmed.Nov 9 2020, 1:44 PM

Can confirm.

Not totally sure about how much is supported here, think @Bastien Montagne (mont29) would know best.

Bastien Montagne (mont29) changed the subtype of this task from "Report" to "To Do".Nov 9 2020, 5:04 PM

Thanks for the report, but this is indeed not a bug, and is not intended to work currently. We need to find a proper way to swap back local point caches and linked ones, but this is not straightforward as there may be differences (especially due to modifiers).

So I believe the best way to deal with this would be to use Disk cache for the time being.

@Bastien Montagne (mont29) Thanks but how does it work?

I tried enabling the disk cache option in the character file. But in the linked file the setting will be disabled and there's nothing I can do to enable it.

For the records, I've been trying to understand what is going on with those pointcaches, so far no luck...

Have a basic patch to enable some of their properties for override, and get better control over the operators (Bake & co) in override cases, but there is a very weird thing happening here.

Those properties do not get overridden properly, their values keep changing randomly... There must be some dark RNA magic happening here. :(

Thanks for taking a look!

Bake to disk should now work in master (has been tough to track down, we had a pile of non-obvious issues to solve there...).

Supporting bake in memory is for later, this is trickier to do properly.

I gave it a test and it did work on 2 out of 3 characters strangely enough! I have simplified as much as I could and here are the test files:


Download both files to the same directory
Open Library override
Bake
Save
Reload

Actually I just lost another character's bake I don't know how. So I guess it's affecting all objects.

I gave it a test and it did work on 2 out of 3 characters strangely enough! I have simplified as much as I could and here are the test files:


Download both files to the same directory
Open Library override
Bake
Save
Reload

Should be fixed "good enough" by rB13bcb000fa81

Bastien Montagne (mont29) renamed this task from Locally baked cloth simulations on library overrides are lost after reload to Add Support of PointCaches to Library Overrides.Nov 17 2020, 8:58 PM
Bastien Montagne (mont29) claimed this task.
Bastien Montagne (mont29) updated the task description. (Show Details)

Hi Bastien,

If I'm reading rB13bcb000fa81: "Fix broken pointcache on disk in some cases" correctly, the fix is committed and should be in the latest 2.92 alpha builds, am I correct? But I re-tested this bug in the Jan 5 build of 2.92 alpha (blender-2.92.0-9b17e71c23a9) and the Jan 5 build of the experimental-build branch (experimental-build-blender-2.92.0-123fd3d5c446) and am having the same issue originally reported. I'll attach my {F9551380}test files (without the bake cache to save space); here's how I reproduced the error:

create model/hairy.cube.blend

  • delete camera and light, keep default collection & cube
  • add particle settings and switch to hair
  • enable hair dynamics
  • change cache to Disk Cache and de-select Use Library Path
  • save and close

create scene/bugtest.scene.blend

  • delete camera, light and cube
  • File -> Link; browse to model file --> Collection --> Collection, and link the Collection
  • select the collection and Make Library Override
  • select the cube and navigate to particles --> cache
  • bake. Confirm that it says "250 frames on disk"

observe the bug

  • close the file
  • open scene/bugtest.scene.blend again
  • select the cube and navigate to particles --> cache
  • Confirm that it says "0 frames on disk"

other observations

  • if I Make Local the object, the issue cannot be reproduced (this was already known but I just wanted to re-confirm that the error is specific to library overrides)
  • the issue can be reproduced if I link in the individual cube object (instead of the collection)

I am new to the blender dev forums so I hope I've approached the test correctly.

@Jon Friesen (Threedio) besides the fact that you forget the Save step at the end of your create scene/bugtest.scene.blend section, did those steps and it works for me?

Hi Bastien,

Ha yes I definitely saved my file after baking the frames. That is peculiar that it is working for you and not for me -- which release are you testing with?

I'm going to try it on my linux box and see if I get the same results, as an additional test.

I was able to reproduce the issue on my linux box too. Attached is a video of me reproducing the error on my Windows box -- hopefully I am not embarrassing myself with some kind of user error.

To further illustrate the issue, I added a second linked library override cube to my scene, and for the second cube, I did Make Local --> Object and Data. Side by side I can show that the local object retains its cache but the linked object does not. I'll attach the blend files here (

) and a screencast depicting the issue.

Arf, spent quiet some time on this, but this is in fact only a display issue (message is not updated when reading overrides, but cache is indeed there, and is used perfectly).

Found other issues regarding hair cache settings though, thanks to that same unique pointcache being exposed in four different RNA paths... sigh

Rats. In an animated feature I'm working on, I have a much more complicated scene, and when I bake and render the animation, the hair dynamics of my library override characters animate correctly, but if I bake, save and close, and render from the command line, the hair dynamics are lost. I thought I had targetted the issue, but you are right, I was on the wrong track with this display bug. I will try again to distill my issue down to a simple test case. Sorry for the red herring!

UI message not being updated shall be fixed now (rBbe7106a97464). Also fixed the hair-specific issues in rBcd8893d4463ab.