Linking rigfile into scenefile

Hey guys.

After searching/reading this forum I am still not getting it. Here’s my problem:

I have a rigfile which contains a character mesh + the rig and a custom
script which gives me IK/FK switching for the arms plus bone-layer buttons.

I select the rig in object mode and shift-select the character mesh. then I
ctrl-G them into a group named RigGroup.

After that I open my scenefile and link in the RigGroup. Next I ctrl-alt-p this
into a proxy. I can now select the rig (i.e. RigGroup_proxy in outliner) and
switch to pose mode and everything works fine. So far, so nice. :slight_smile:

However, there are two things I don’t understand:

a) Why is there a second rig now which appears to be parented to an empty (which
is named RigGroup in the outliner)? What is this good for? :confused:
When I delete it, my character mesh is deleted as well.

b) The script for my IK/FK switch is not linked in at all. How can I link in my
rig WITH the script functionality? :confused:

Every hint is appreciated. Just drop me a line if rigfile.blend and/or scenefile.blend
can help here.

Best regards,
serum…

For the script, just append it in the scene file then open it in a text window and run it.

Now, when you link a group, the group become an instancied group in the scene file.
Every times you create a new instance, an empty object is created where the world origin was in the source file and it seem that this empty contains the linked file. It may be like that for you to be able to change the linked group, (object tab, duplication panel’ then change the name in the group field) for example if you want to work your animation on a low poly mesh at first and then replacing it by your hight def mesh when it’s done.

about the script-file,
i think - if its something like the rigify-addon -
you cannot link-in a script file and hope it gets executed at once.
That may be the problem.
You have to run the script file to create the internal functions and make
those available to the gui.

Again for the example rifigy-addon: this creates a .py file in the text-editor
and runs it and sets its option to register to re-run the script every time
the file is opened again. To do only a linkin, may not automatically run the script.

For the other things, … the duplicate linked-in objects, that seems to be, you did link them in twice. Remember a parented object will be linked in too, you dont need to select it, so if you select the object and another with a parentrelationship to it, it would linked in twice … – so far, like i understand these complicated things.
What happens to me, when i have to duplicate a group ob objects, the order they are selected seems to be crucial or the automatic transforming of the object-names in the relations (like constraints) would not transfered to the new objects.

edit: @silv, did not notice your posting … while i was writing mine …

thank you sliv & test-dr.

I can append the script file and re-run it in the scenefile. However, it does only
half of the job, that is: the bonelayer switches run perfectly while the IK/FK-sliders
appear in the UI (n-tab) but they are greyed out and have no function. I guess this
is because of the variable names in the script, which now don’t work anymore since
the linking/proxy-process changes the armature name and such??

@sliv: The duplication group gives no results. I can only select the RigGroup but when
I do this, the whole RigGroup is copied as a wireframe but it has no function. I even
cannot select anything there.

@test-dr: In fact, I didn’t link/proxy the group twice. But your point with the parent
relation is interesting. I’ll test that now and give some feedback on this.

btw, I don’t use rigify.

Best regards,
serum…

Okay,

we are approaching the goal. The process works as follows:

In the rigfile I only selected the character mesh and added it to the RigGroup group.
Then I linked that group to the scenefile. And voila: I got the mesh plus the rig! So, it
really links in all child objects of the mesh which is the rig in this case. :yes:

After that I appended the script and re-ran it. And voila: The buttons are there and
the IK/FK-slider as well. :eyebrowlift:

Still a problem: The IK/FK-sliders are displayed but disabled. I guess it has to do
with the naming of the variables and such :confused: This is still to be checked…

For the time beeing, I attached the rigfile without any grouping, the rigfile with
the group named RigGroup and the scenefile with everything linked/appended.
Maybe someone can have a look at those and give me a hint why the IK/FK-sliders
do not work? :eyebrowlift:

Best regards,
serum…

LinkRigFile.zip (411 KB)

Hmmmm,

as far as I can tell it has not to do with naming of variables, but with
accessing the custom properties of the IK/FK-sliders. Thus I made the
complete armature local by hitting the arrowed sheet icon in the object tab.
Unfortunately this didn’t change anything for the sliders :confused:

Any suggestions?

Best regards,
serum…

Well I’m not a python coding specialist at all, usually when I need to control something in the rig, I’m used to do it with custom properties and drivers and I use python only to add some extra buttons in the UI like in the rigify rig, actually, most of time, I edit the riggify script.
This way,when I link a rigged character, I just need to append the .py file and run it in the scene file after creating the proxy and it works perfectly. The only one time I had a problem was due to a Blender version change so the python script wasn’t compatible with the new version.

It seems you control your rig only with a python script so I’m sorry I can’t really help you.

Anyway, the empty thing and the fact it seems a second rig still exists on your mesh are not a problem, this is the normal behaviour in my opinion ; only the proxy will control your character.

Yeah, right. That is exactly what I am doing here. Except for that driver thingie…

Nope, the script simply adds buttons and sliders. There is a custom property in the Armature Object Data panel.
As you can see, these custom properties are perfectly working in the RigFile_noGroup.blend but after linking they
are not accessible anymore :-/

Further ideas?

@serum: maybe you should check the rigify-addon some time …

about the missing functionality of the ik/fk-buttons. Those are setup (most time)
with some scripting and it could be, that there are the names of the original bones used and if you make a copy it might not find those bones, because the name of the armature has changed, but in the driver is still set the old name.
NOt all things get automatically changed if a object-name changes.

check the driver settings and compare with the names - next, it could be the script itsself is fixed to same default naming …
and last, (i dont it is this) a script cannot tweak the bones of an armature if the armature is not on an active layer … (its some kind of wrong context).

@test-dr: yeah, I did some research on the rigify-addon some weeks ago. thus, I came up with my approach…

I can exclude that the naming of bones, drivers, custom properties, etc is causing my problem. they are all named correctly.
I double-checked that :-/

slowly I’m running out of ideas :-/

Well,

I totally removed the script. There is absolutely no script anymore!

The IK/FK-switching is now done by custom properties which can be found
under the Armature Object Data panel. After linking the RigGroup these
custom properties do not work anymore although the naming of bones,
drivers, custom properties etc, are all the same as in the RigFile itself.

You can check this in the new attachment here:

RigFileLinking.zip (403 KB)

I start to feel completely lost here :frowning:

further suggestions?

Ok sorry, usualy I put my custom properties on the bones, not on the object data so I didn’t search them at this place.
What happens if you try to put custom properties on bones instead of object data ?

Hi sliv,

well, I will give that a shot although I think it doesn’t make any difference.

However, when you load up the scenefile, select the plane, hit L-KEY and click on “All” the sliders work!!
Of course then all objects are local which is not exactly what I want to achieve with the linking.
So, I guess there is some problem within the linking itself???

Interestingly, I get an error from the driver setup saying that there is an Invalid Target Channel.

As you can see in this screenshot:


Adding the custom property in the object data works perfectly.

You should urgently give rigify a chance -
rigify creates the sliders not in the object-part, it creates the sliders
after running the script in the property -right in 3d-view.
And if i create a human-meta, run the rigify addon,
save this file and in a new file i import with linking this skeleton,
i have to import the short rig-button-setup-script of this file too.
Then i can make the armature a proxy, switch to pose-mode
and after running this little text-py-file (it is created from the rigify-addon
at its first run on the armature in the original file) the buttons appear in
the porperty-part in the 3d-view. So these buttons are not part of
the object and are not restricted from editing with their sliders.

If an object is linked in, then it should not possible any more to make
significant changes to the object - maybe thats what you see.
In the proxy-object the bone-names are changing …?

And what if, in the driver options you change the prop ID type from Armature to Object then you choose your armature name in the field next to it with the properties still on the bones ?
This is the rigify method that I use too.

Yeah, I’m totally aware of that. But that is not the problem here.
And I do not have any protected bone layers. I double checked that.

No, they are exactly like in the rig file.

Maybe I’m doing something wrong with the grouping in the rig file:

a) Does the Armature have to be in Object Mode or Pose Mode when grouping?

b) Do I have to group the character mesh first and then the Armature, or vice versa?

c) What is the correct procedure to group the character mesh and its rig?

YEAH!!
That does the trick! Obviously the problem is the property’s ID Type!
Damn, you made my day sliv!!

Absolutely brilliant. Thank you so much and all the best to you.

Cheers bro,
serum…

You’re welcome :slight_smile:
I don’t understand with acuracy what is exactly ID types but I know that when you work on some linked files you don’t have access to everything you want ; for instance, if there’s some shapekeys on the mesh, I didn’t find a way to see the list by selecting the linked mesh, I needed to create some extra bones to control shapekeys through drivers.
Perhaps this means, on linked files, you have access to object ID type but not armature ID type.

Interesting. I didn’t know that some similar restriction apply to
shape keys as well since I always control them with bones
via drivers (e.g. for face rigs). But it’s good to know this!

By the way, I could fix my script and now I have my custom
controller buttons and sliders back. However, the sliders react
very sloppy or better said: the bones react sloppy with
respect to the slider values in the scenefile. In the rigfile
the bones react perfectly. I guess this is due to the linking?!?

Regards,
serum…