Page MenuHome

Library Override: Driven Shape Keys Don't Work (neither via custom properties nor transforms)
Closed, ResolvedPublicTO DO

Description

System Information
Operating system: Windows-10-10.0.18362 64 Bits
Graphics card: GeForce GTX 1050 Ti/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 430.86

Blender Version
Broken: version: 2.81 (sub 12), branch: master, commit date: 2019-09-26 14:56, hash: rBa933237d6878
Worked: (optional)

Short description of error
Trying out the new library overrides, the attached blend file has a character called bird. The custom properties for the bone "Body" are not working, all of them drive the shapekeys, while making the custom properties i did check the "Library overridable" checkbox.

The same rig works completely fine using the proxy system.

Exact steps for others to reproduce the error
This is the .blend conataining the character "Bird" collection.

  1. in a new blender file, link the collection "bird" from the above file
  2. create a library overide for "bird rig", object --> relations --> make library override --> bird rig
  3. enter pose mode, select the "body" bone, try to play with the custom properties in the N panel.

the same procedure works fine with the proxy system, so you can test that. i am also not aware of any additional steps that the Override system has so apologies if i missed out on something.

on a completely unrelated note: getting a Build failed error ( error c4013 ) so unable to check on the latest version.

Event Timeline

Philipp Oeser (lichtwerk) renamed this task from Custom properties (shapekey driver) not working library override to Library Override: Custom properties (shapekey driver) not working.Oct 23 2019, 3:10 PM
Philipp Oeser (lichtwerk) lowered the priority of this task from 90 to 50.Oct 23 2019, 3:58 PM

Can confirm (both that it is working with the old proxy system as well as the failure with the override).
Afaict, the procedure you describe is the one to be taken here [not aware of any additional steps to be taken -- according to https://wiki.blender.org/wiki/Reference/Release_Notes/2.81/Library_Overrides]

getting this on the console (seems fine)

We did generate library override rules for OBBird.001
We did generate library override rules for OBBird_Rig
We did generate library override rules for OBBird_pupil_L
We did generate library override rules for OBBird_pupil_R

also getting this on posing and using the custom properties (not sure about this, posing seems fine...)

No new library override rules for OBBird_Rig

CC @Bastien Montagne (mont29)

Philipp Oeser (lichtwerk) renamed this task from Library Override: Custom properties (shapekey driver) not working to Library Override: Driven Shape Keys Don't Work (neither via custom properties nor transforms).Nov 11 2019, 11:20 AM

Arf... OK, so TL;DR: This is not supported automatically currently, you have to do some manual work to get it running.

And yes, I know this is not nice, I have to find a solution for this too, but currently there is no 'nice' way to do it.

Now the long explanation:

Shape keys are part of the Mesh datablock, which is not overridden by default because that would save the whole mesh geometry locally (there are plans to address that, but nothing concrete yet).

So to get those drivers working, you need to override the mesh, and go into its shapekey drivers to re-assign them to the proper local override of the rig...

Note that proxies can work without any issue here because there is only one 'local copy' per linked datablock, so you can just copy things between those two, and that's it. this is no longer possible when you have several overrides for a same linked data, at least not in a dummy easy way.I'll keep this open as a TODO, as a remainder of the issue, that is not really a bug currently.

Though there seems way, "manually re-assgin driver of shape keys with override armature (object) properties", I can not find way to add new shape keys for override meshes.

Now I have character which have shape keys for character mesh. then those shape keys are driven by armature bone transform (aka corrective shape keys to get clean mesh when posing)

Then when I override collection (armature and mesh in one collection)
it seems load all shape keys with mesh, but un-editable (gray out). so how I re-assgin driver for each shape keys?

I try to local override about mesh, but there seems no change. (shape keys still un-editable and gray out)

About other custom property of armature (pose controller, which change each bone transform with slider,generated by script) I could set them "Is library overridabe" in outliner > object porperty > Custom
properties>" edit " of original scene armature. then it work about override scene and character.

I do not care, if I really need import all shape keys, about override mesh again,, but can I add shape keys about override meshes? then can re-assgin each bone transform about override armature bones?
when I try it (local override ,about mesh,) I can not add any new shape key.
what procedure I need, to add new shape key for override character mesh? (or I need to make it local?)

Ah OK, I seems miss use "local override". I select mesh object icon in outliner, then r-click and try "Add library override" but I need to click green "mesh data" icon. then r-click "Add library override",and return object mode after that shape keys becom editable.

(But I do not know reason why same script expression of drivers seems not work anymore)

There seems problem about driver up-date. I need to re-assgin armature (object) name in driver editor expression (though it is same strings.) about all shape key driver (assgined with armature bone rotations)

As mentioned above. I could return shape keys as " editable". after use local overide for "character mesh "
object data. All shape keys still keep "driver expression" which discribe bones transform of Armature.
but driven shape key value not change when I pose related character bone.

I open driver editor, and try "update dependency", not work. but select again armature object in "driver expression" (re-assgin) from drop down menu, immideately driver work and change shape key values.

Though I suppose I can make script to edit object armature name (add space and remove) with bpy, but hope there should be option, to force up-date and return driver link of armature correctly.

im not facing any such problems here's how i've been setting it up

  1. override the rig
  2. 'make local' the mesh (overriding the geometry is useless, since edit mode changes aren't overridable, so the geometry needs to be made local, the devs do let the user know this as clicking the local override icon leads to 'making local' rather than 'override' as the user would normally assume it is)
  3. go to the drivers, edit them, and switch the name of the driven object (the rig in this case) from "object_rig" to "object_rig.001"(whatever the outliner decides to name your rig object at the time of overriding it)
  4. at that point everything is done (but hit "update dependencies" just in case)

If I need to use make it local for mesh , it means we need all shape keys data and mesh-data in current blend file. right? I only hope to change shape key "value" witch will be driven by custom property of override armature (obj) , and bone transform etc. but all shape key-data are saved in original blend file.
(I suppose so)

Then for me I need not change rig name from rig to rig_001 for driver expression.
I feel as string, rig ID is same for driver expression. (at least for my test scenes)
but I need to select rig again. (maybe it re-assgin driver target object (armature object))

Though those step may need to be confirmed by developer in official manuall (I hope so)
when overide system up-date. So I do not know, If I actually need to "Make it local" for my purpose.

I see,,as I said I could return driver, and can change values of custom prop (drive shape key values)
and the new value are saved in override blend file.

But when I re-open it, driver stop to work again. then I need re-assgin driver target armature.
so at current I may need to use proxy, or make local the mesh . not use local override about mesh and shape keys with driver (link with armature)

I do not know it need to report as new one.

Some idea if this will be fixed in 2.82?

This will not… Had to spend most of 2.82 dev window on undo speedup project, so liboverride did not get much love (mainly fixed some crashes in that area). And no specific timeframe for it yet either.

Hello everybody
We are starting a production and we just bumped into that issue. Looks like it is a major issue for us. Any chance to address it soon?
Thank you very much

Can still confirm problem with 2.83 beta from 7-th of May

This also affects on modifier's data blocks. Then two library linked collections from same instance uses modifiers with drivers, these modifiers jumps from one driver to other:

Example. This scene uses lattice with simple deform, angle driven from bone scale. It looks like a Dependency cycle, but one collection works well

hope this gets resolved. i was going to give library overrides a try on a project, but this situation seems messy enough that i can't see any real benefit to using them right now. :(

When I add a driver to a Library Override in the Shape Key Editor
It does work.

But if I reopen the file is disappears even after saving the progress.

Original report should have been fixed by yesterday's commits actually (rB029103907937 and previous).

@Julio Cargnin Pereira (juliocargnin) you are trying to do something completely different here, adding new drivers to an override is currently totally not supported, and won't be in a near future. Related operators should actually be disabled, will see to that.

Bastien Montagne (mont29) closed this task as Resolved.Wed, Jul 1, 5:57 PM

@Bastien Montagne (mont29) Awesome! Tested, and kinematics driven ShapeKeys indeed seem to work. Which means that at least simpler characters should now be possible.
From bone custom properties they (as well as some IK/FK constraints drivers/switches etc.) are "Disabled: Can't edit this property from an override data-block".
Should one expect that to change within 2.9 or look for workarounds?
Thanks!

@Konstantins Visnevskis (kivig) nice, thanks for testing!

Custom properties need to be defined as overridable (in the library file, in their edit popup), by default they are not since you can end up with thousands of those sometimes. Making them all overridable could then have a severe impact over performances…

Not sure about what you mean with “some IK/FK constraints drivers/switches”, are those also some custom properties defined in the rigs?

@Bastien Montagne (mont29) Somehow that slipped past me. It indeed works. Which means complex character testing begins :) Thank you.

this is fantastic! i just confirmed my linked character workflow seems to be working straight through to exports for game engines! thank-you!