Library Override: Driven Shape Keys Don't Work (neither via custom properties nor transforms) #70319

Closed
opened 2019-09-28 11:40:31 +02:00 by pranavjit virdi · 49 comments

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: a933237d68
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.
Bug_Report_01.blend

  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.

**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: `a933237d68` 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. [Bug_Report_01.blend](https://archive.blender.org/developer/F7778411/Bug_Report_01.blend) 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.

Added subscriber: @PranavjitVirdi

Added subscriber: @PranavjitVirdi

#76451 was marked as duplicate of this issue

#76451 was marked as duplicate of this issue

#71466 was marked as duplicate of this issue

#71466 was marked as duplicate of this issue
Philipp Oeser changed title from Custom properties (shapekey driver) not working library override to Library Override: Custom properties (shapekey driver) not working 2019-10-23 15:10:40 +02:00
Member

Added subscribers: @mont29, @lichtwerk

Added subscribers: @mont29, @lichtwerk
Member

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 @mont29

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 @mont29
Philipp Oeser changed title from Library Override: Custom properties (shapekey driver) not working to Library Override: Driven Shape Keys Don't Work (neither via custom properties nor transforms) 2019-11-11 11:20:29 +01:00
Member

Added subscriber: @bunny

Added subscriber: @bunny
Bastien Montagne self-assigned this 2019-11-11 16:53:23 +01:00

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.

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.

Added subscriber: @KonstantinsVisnevskis

Added subscriber: @KonstantinsVisnevskis

Added subscriber: @TakeshiFunahashi

Added subscriber: @TakeshiFunahashi

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?)

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)

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.
Deditor.JPG

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.

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. ![Deditor.JPG](https://archive.blender.org/developer/F8195531/Deditor.JPG) 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)
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.

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.

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.

Added subscriber: @MarcelLegindi

Added subscriber: @MarcelLegindi

Added subscriber: @istoltoto

Added subscriber: @istoltoto

Some idea if this will be fixed in 2.82?

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.

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.

Added subscriber: @kpavicic

Added subscriber: @kpavicic

Added subscriber: @Werwack

Added subscriber: @Werwack

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

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

Added subscriber: @LapisSea

Added subscriber: @LapisSea

Added subscriber: @FrankMartin

Added subscriber: @FrankMartin

Added subscriber: @gabrign

Added subscriber: @gabrign

Added subscriber: @Strife.Lim

Added subscriber: @Strife.Lim
Member

Added subscriber: @moisessalvador

Added subscriber: @moisessalvador

Added subscriber: @linosia

Added subscriber: @linosia

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

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

Added subscriber: @crantisz

Added subscriber: @crantisz

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

2020-06-02 19-28-23.mp4

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 [2020-06-02 19-28-23.mp4](https://archive.blender.org/developer/F8572491/2020-06-02_19-28-23.mp4)

Removed subscriber: @moisessalvador

Removed subscriber: @moisessalvador

Added subscriber: @winnertakesteve-1

Added subscriber: @winnertakesteve-1

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. :(

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. :(

Added subscriber: @CosmoMidias

Added subscriber: @CosmoMidias

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.

outputFile.mp4

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. [outputFile.mp4](https://archive.blender.org/developer/F8657196/outputFile.mp4)

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

@CosmoMidias 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.

Original report should have been fixed by yesterday's commits actually (0291039079 and previous). @CosmoMidias 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.

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'

@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!

@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!

@KonstantinsVisnevskis 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?

@KonstantinsVisnevskis 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?

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

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

Removed subscriber: @linosia

Removed subscriber: @linosia

this is fantastic! i just confirmed my linked character workflow seems to be working straight through to exports for game engines! 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!

Removed subscriber: @kpavicic

Removed subscriber: @kpavicic

Added subscriber: @jgilhutton

Added subscriber: @jgilhutton

Just encounter this behaviour:

  • Link & override a rigged character. Shape keys do work on the rig
  • Link & override the previous character for a second time. Shape keys do not work on this 2nd rig, but continue working on the first one.
  • Link & override a different rigged character. Shape keys do not work on this 3rd rig, besides being its first time being brought to the file. First rig still keeps its shape keys working as desired.
Just encounter this behaviour: - Link & override a rigged character. Shape keys **do work** on the rig - Link & override the previous character for a second time. Shape keys **do not** work on this 2nd rig, but **continue working on the first one**. - Link & override a **different** rigged character. Shape keys **do not** work on this 3rd rig, besides being its first time being brought to the file. First rig still keeps its shape keys working as desired.

Added subscriber: @Nevil

Added subscriber: @Nevil

I faced the same problem in Blender 2.92-rc too. problem is this. when object turns to Library override, Blender keeps 2 version of the object. the link of the original one and mirrored local one. Inside the scene only local one detectable but drive can see the both.
Drive detects the target by name and this cause some time get linked one and some time the local one.
Driver.jpg
I find a temporary solution in python.

name = driver.variables- [x].target.id.name
driver.variables- [x].target.id = bpy.data.objects[name]

link of the script

object by name always return the local object and reassign it to driver solving the problem, but only works when file still open. on save and reopen links break again.
I hope this info helps to solve the problem.

I faced the same problem in Blender 2.92-rc too. problem is this. when object turns to Library override, Blender keeps 2 version of the object. the link of the original one and mirrored local one. Inside the scene only local one detectable but drive can see the both. Drive detects the target by name and this cause some time get linked one and some time the local one. ![Driver.jpg](https://archive.blender.org/developer/F9826524/Driver.jpg) I find a temporary solution in python. > name = driver.variables- [x].target.id.name > driver.variables- [x].target.id = bpy.data.objects[name] [link of the script ](https://github.com/NevilArt/BsMax_2_80/blob/master/tools/internal/animation/driver_fixer.py) object by name always return the local object and reassign it to driver solving the problem, but only works when file still open. on save and reopen links break again. I hope this info helps to solve the problem.

Removed subscriber: @Strife.Lim

Removed subscriber: @Strife.Lim
Thomas Dinges added this to the 2.90 milestone 2023-02-08 16:27:56 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
21 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#70319
No description provided.