Appending a rigged mesh/object without bones to a target file but still rigged !!

Hi all,
i am getting used to Blender but still not at the end of the learning curve…

I have a rigged belt with bones. This belt is “posed” in many Blender files.
I would like to add a buckle to all these belts in different files.
For this I made a nice buckle object, rigged it to the last bone of the belt in a “source” file. Everything workss fine here
And now I would like to append the buckle without having to re-rigged it in each “target” file…
Is that possible ?

Said differently, I’d like an object rigged with bone-10 in a source file to be rigged to the same bone-10 in a target file.

Any advice is welcome

This is the difference between appending and linking. If you append an object, you bring in the full copy of the object (or anything else you append) to the current file and it becomes part of the file. An object can be appended into 10 files, each file contains it’s own copy of the original, and each copy can be modified, without affecting others.

Instead of appending, if you link the object in, every time a file is opened containing the item, blender looks to the file the item is linked from, and copies it in then at the current state of the original object file. Basically works like this - have a file that is the belt. Link from that file into all the files you need the belt. Now when the belt file changes, when the other files that it is linked into will appear with the changes you made. Note that linked objects can’t be edited in the files they are linked into, so to make changes to them, the source file has to change.

But to answer your question, just delete the objects an re-append them.

Randy

Hi revolt_randy,
thanks for your answer (and the tutos with the fish cage which were very useful for me lately in learning mesh deform modifier).

What I have tried:

  1. re-appending the rigged belt+buckle from the source file. Problem —>need to re-pose the belt again in each target file
  2. appending the buckle only. Problem -->need to re-rigged the buckle to the belt armature in each target file.

My wish is 2) but with rigging/weigthing applied when appending in target files.

Question a):
The same armature exists in the source and target files so isn’t it possible to tell Blender that the appended object has to be rigged/weighted to the same bones as in the source file?

To avoid this problem in my next project, I have tested linking and proxies. But as far as I understand, proxies only concern objects in the source file, not new objects added in that source file.
I am really surprised here unless I missed something.
Hence my second question

Question b):
Say, I make a group of objects and I use them in 100s of files. Now if I add a new object to that group in the source file, isn’t possible to update that group in all proxy files?
Thanks

Hi revolt_randy,
thanks for your answer (and the tutos with the fish cage which were very useful for me lately in learning mesh deform modifier).

What I have tried:

  1. re-appending the rigged belt+buckle from the source file. Problem —>need to re-pose the belt again in each target file
  2. appending the buckle only. Problem –>need to re-rigged the buckle to the belt armature in each target file.

My wish is 2) but with rigging/weigthing applied when appending in target files.

Question a):
The same armature exists in the source and target files so isn’t it possible to tell Blender that the appended object has to be rigged/weighted to the same bones as in the source file?

For #1 I’m thinking your actions are becoming un-linked to the armature. If you delete an armature object, the action isn’t linked to anything, so when you re-append the armature, you need to link the action to it. Dopesheet/action editor is where to fix that.

For #2, your wish, and question a: How was it rigged in the original file? Was it parented to a bone? If so you need to re-parent it to the same bone in the target file. If it was using the armature modifier to control it, is that present and working after appending it? Yes there should be a simple way to tell blender which bone controls the buckle mesh, and it should be the same way as the source file.

If these answers aren’t right, I’d have to see the files, so I can see what’s going on.

To answer your other questions, I don’t know. I would think as you add mesh objects to a source file, and add them to a group in the source file, when linking in the group, you’d link in the new mesh objects added to the group in the source file.

TBH I’m playing around with character animation, I use one file that has the character & armatures. One file has the background which I append in when I want to render. I have played around with the linking vs. appending somewhat, but I’m no expert on the subject.

Glad you found the videos helpful,
Randy

Hi Randy,

>>For #1 I’m thinking your actions are becoming un-linked to the armature. If you delete an armature object, the action isn’t linked to anything, so when you re-append the armature, you need to link the action to it. Dopesheet/action editor is where to fix that.<<

Humm, I must say that I thought Dopesheets were for animation only. I am not doing any animation, just posing a character and render or export. Sounds like I have to look at it more closely, if you think this is the fix…

>>For #2, your wish, and question a: How was it rigged in the original file? Was it parented to a bone? If so you need to re-parent it to the same bone in the target file. If it was using the armature modifier to control it, is that present and working after appending it? Yes there should be a simple way to tell blender which bone controls the buckle mesh, and it should be the same way as the source file.<<

It was rigged with automatic weight (Ctrl-P, after selecting mesh and armature). So I guess this is parenting? But there is also an armature modifier for the mesh, so I am not sure I understand everything here.
Please find

  • a Belts1.blend file with the rigged belt+buckle in layer1
  • a Belts2.blend file with the rigged belt only (and “posed”)
    So again my problem: how do I append the buckle from Belts1 to Belts2 with rigging/parenting/weighting kept.
    Currently, if I append the buckle (in Object datablock) from Belts1 to Belts2, I get two independent armatures…

>>To answer your other questions, I don’t know. I would think as you add mesh objects to a source file, and add them to a group in the source file, when linking in the group, you’d link in the new mesh objects added to the group in the source file.<<

Not in my hands. Linking seems to update objects that were present when creating the link, whether they are in a group or not. It does not update the group member list. Unless again I missed someething.Belts2.blend (952 KB)Belts1.blend (1.52 MB)

OK, took a quick look at it. Open belts2 and append the buckle from belts1, notice that when the buckle comes in, so does the armature. Not sure why, I really don’t think it should be coming in, I’ll take another look at that… Anyhow, once the buckle is in belts2, go to the object properties panel and scroll down to the parent field. It says the buckle has a parent, which is armature.000, so it’s a child of that armature, your posed armature in named armature.001, so change that parent field to be armature.001 and you can delete the armature.000 now. Go to the modifiers tab, in the armature modifier, change the object field from nothing to armature.001 and the buckle should snap in place as posed.

When you did the ctrl-p with auto weights, blender makes the buckle a child of the armature, adds in an armature modifier and does an automatic weight paint job. Which I was curious about because there is another way to make an object controlled by a bone without an armature modifier, that is to make the object a child of the bone that will control it.

Oh, never mind the bit about the dopesheet/action editor, that was a bum steer on my part, when you had mentioned you had posed the belt, I assumed you were creating actions, an animation. That bit doesn’t apply since you are simply doing static poses.

I’m not sure why when appending the buckle, the armature comes in too. It appears that when you append an object, blender appends the object’s parent as well. Tried it with 2 other files of my own, and when I append in a character mesh, the armatures come in as well. Normally, I add objects (meshes & armatures) to a group and append in the whole group, but that’s different as I’m not just appending in parts that I added later. Which has me to thinking about another way to do this…

Load up belts2, open up a dopesheet editor, there is a dialog box in the header to switch modes of the dopesheet (much the way you switch from object to pose mode in 3d view) and switch the dopesheet to be an action editor. Select all the bones of the armature in pose mode. I-key to insert keyframes and choose LocRot, so you insert keyframes for the location & rotation of every bone. In the action editor, you now have an action with keyframes and it has some generic name, (further right in the header from the mode switch box). Go to the 3d view and delete everything, buckle, belt, armature. When you do this, the action disappers. It’s not linked to the current object because there are no objects. Now append in the belt, buckle, and armature. Select the armature and go into pose mode. In the action editor, select the action you just created, and now the belt should assume the pose you had before because the action is linked to the armature.

As to this:

>>To answer your other questions, I don’t know. I would think as you add mesh objects to a source file, and add them to a group in the source file, when linking in the group, you’d link in the new mesh objects added to the group in the source file.<<

Not in my hands. Linking seems to update objects that were present when creating the link, whether they are in a group or not. It does not update the group member list. Unless again I missed someething.

I’ll have to take a look at it later, after work tonight perhaps…

Randy

Anyhow, once the buckle is in belts2, go to the object properties panel and scroll down to the parent field. It says the buckle has a parent, which is armature.000, so it’s a child of that armature, your posed armature in named armature.001, so change that parent field to be armature.001 and you can delete the armature.000 now. Go to the modifiers tab, in the armature modifier, change the object field from nothing to armature.001 and the buckle should snap in place as posed.

Yes, it does work. Which is really surprising to me. How does blender transfer weight paint from armature.000 to .001 ? Just transfering weight painting (which is stored where?) on the same bone number?
I have to point out that armatures are the same (.001) in both files so it is when appending the buckle that its armature is renamed .000 !!

Although it would be quite tedious to do the steps you described for large number of objects, your solution is better than re-rigging/re-weight painting.

So now I think the question is: can we append the buckle without the armature (and eventually directly rigged it to the same bone in the target file) ?
I try to find some information on the web for that
Thank you for spending time on this.

Just curious, do you have previous 3d software experience?

Correct on the weight painting. In the object data properties panel (icon looks like a triangle) is where information about weight painting is stored. It’s actually called vertex groups and when you use auto weighting, blender creates a vertex group for each bone that is set to deform. Bones can also be set to not deform, think that’s in the bones data properties panel, useful for mechanism bones (bones that only exist to serve some function and not intended to deform the mesh).

As to the naming of the armatures, that’s blender’s way for anything that is duplicated. Start off with a new blender session with the default cube, duplicate it or add another cube and it’s name will be cube.000, next one added with be cube.001, so on and so forth. Just like all the bones in the armature you created. So I’m thinking when you have an armature object already in the file and append in a 2nd one, blender tacks on the .000 and looks to see if that name is taken, if so it would increment the .000 part until the name isn’t taken. If you appended the buckle again, the new armature that comes in with it would have a suffix of .002, since .000 and .001 are taken.

I’m also thinking the reason why the armature comes in is because you are appending the buckle, which is a child on the armature, it’s a dependent of the armature, so the armature is needed. But I’m not sure, that’s just a wild ass guess…

So now I think the question is: can we append the buckle without the armature (and eventually directly rigged it to the same bone in the target file) ?

Sure, see the 2nd method I mentioned above, about the dopesheet and creating an action. To be honest, that’s about the same amount of work. You have to go this way because the armature with a static pose and no keyframes has no animation data about it, it’s just bones that are posed and their position is saved with the file, but that’s not animation data that can be applied to a new armature.

Mind if I ask why this:

I have a rigged belt with bones. This belt is “posed” in many Blender files.
I would like to add a buckle to all these belts in different files.

I assume by ‘posed’ you mean static poses like the files I looked at, so why is that? If it’s because every file is a different static pose and different lighting/camera set ups, you could do that in just one target file.

Now… as to this…

Not in my hands. Linking seems to update objects that were present when creating the link, whether they are in a group or not. It does not update the group member list. Unless again I missed someething.

I looked at this, I opened belt1, added the armature to a group, and named the group - belt. Naming things is important and you need to get in the habit, yes it is a PITA, but saves you time later in life. Just trust me, please. Saved the file, started a new blender session, deleted everything and linked in belt1’s group ‘belt’. In comes the armature and I save the file, calling it ‘target’. I open the belt1 file, add the belt mesh object to the group. When doing this, the group name was wrong, I had to delete the name and type in ‘belt’ as my group name. Saved the file. Opened my target file, and I have the armature and the belt mesh. Went back to belt1 and added the buckle to the group - belt - and saved, it came through when I opened the target file. So adding items to a group in a source file are coming thru when linked into target files for me.

Your welcome, I don’t mind helping, and maybe I should do a video tutorial on this subject…

Randy

Hi Randy,
Nice to have someone like you spending time to explain basic tips.
No I have no experience in 3D. I started to use Poser to pose characters then switched to Blender about 1 year ago because it is more flexible than Poser for (basic) modeling. I must say that I am a bit hooked, although I find Blender very complex and not user-friendly enough (especially the UI). Anyway, I would love having a regular Blender course next to my place to improve myself…

To come back to the thread:

  • About weight painting and vertex groups, I thought these were 2 different things since I can define vertex groups with no bones and no painting. In the bone panel, it is not obvious to see the weight painting data. But never mind, I don’t need this.
  • About numbering, yes I noticed that numbering was changed when duplicating for instance. I am just surprised that appending behaves like duplicating. I would be so easy to append the object without its armature and use the target armature…I remember having seen an add-on where we can decide what datablocks are used in some functions (duplicate for instance?). Maybe, we can exclude the armature when appending a rigged object with this add-on.
  • About child on the armature: is there another way ? when an object is rigged, isn’t it always a child on the armature?

I assume by ‘posed’ you mean static poses like the files I looked at, so why is that? If it’s because every file is a different static pose and different lighting/camera set ups, you could do that in just one target file.

Yes you are right, I am doing only static poses (thanks god !) with 1 pose/file so far. How do I get mulitple poses in one single file ? With dopesheets ? With Pose Libraries (I am doing that already but I have shape keys for each pose and shape keys are not applied then and ) ?

  • About linking a group, that’s great that it works. I must say that when I tried some weeks ago, I used linking+proxies, not linking alone since I want to pose in the linked files. I’ll look at it more closely

Thanks

Thanks for the info on your background, I was starting to think you were coming from different 3d app to blender. Yes, blender is very complex, but it kinda works like this: complexity = powerful application. 10 years ago I tried learning macromedia’s flash, hard to learn, but it allowed me to make websites that didn’t just switch from one page to another, but instead sort of ‘morph’ into different pages. As you know yourself, poser = very easy to use, but limited in what you can do. Anyhow…

  • About weight painting and vertex groups, I thought these were 2 different things since I can define vertex groups with no bones and no painting. In the bone panel, it is not obvious to see the weight painting data. But never mind, I don’t need this.

Vertex groups are a group of vertices, but each individual vertex can have a variable amount of weight assigned to it. Weights range from 0 (no weight) to 1 (fully weighted). You assign weights to vertices via weight painting, and this will allow you to blend weights between vertex groups. Subtract weight from one group, add weight to another group. The armature modifier has a check box enabled by default that tells it to modify the mesh based on vertex groups. The more a vertex is weighted to a vertex group with the same name as a bone, will be moved more by that bone. If you want a vertex to move less when a bone is moved, you subtract weight from that group, and add weight to another group/bone.

  • About numbering, yes I noticed that numbering was changed when duplicating for instance. I am just surprised that appending behaves like duplicating. I would be so easy to append the object without its armature and use the target armature…I remember having seen an add-on where we can decide what datablocks are used in some functions (duplicate for instance?). Maybe, we can exclude the armature when appending a rigged object with this add-on.

The numbering thing is only because the objects have the same name. If you have a file with a male character and it’s armature(rig) is called boy.rig and you append in a female character with a rig named girl.rig, blender will do nothing about naming, because the names are different already. As to the addon, I don’t know this one, but you’re still going to have the rig come in when appending because of the parent/child relationship. Oh, and I did look at the manual on this, to double check myself, and it’s seriously lacking info on this…

  • About child on the armature: is there another way ? when an object is rigged, isn’t it always a child on the armature?

Actually you could do this without the belt mesh being a child of the armature, just add an armature modifier to the mesh object. For this to work, you need to do a couple of things, but these should be standard things you do when rigging anyhow. When starting to rig a mesh, the first step should always be to ensure the mesh object has no rotation, the x,y,z rotation fields in 3d view transforms panel should all be 0. The scale should also be set to 1 for all axis. Ctrl-A -> apply rot and scale will reset these values for you. Then when adding in the armature object, your 3d cursor should be at the origin point of the mesh object, this way both your mesh & armature have the same point of origin. Not doing these steps can result in some odd behavior where when the armature is posed, the mesh will end up contorted in strange ways. I noticed your belt & armature had different points of origin.

Yes you are right, I am doing only static poses (thanks god !) with 1 pose/file so far. How do I get mulitple poses in one single file ? With dopesheets ? With Pose Libraries (I am doing that already but I have shape keys for each pose and shape keys are not applied then and ) ?

Yep, the dopesheet/action editor. Make an animation, 1st frame is the 1st pose, 2nd frame is the 2nd pose, etc, etc… You can change camera angles, lighting, everything from frame to frame. You’d even keyframe the shape keys. But from the sound of things, it seems to me like each file you have with a static pose might have a shape key on the mesh. And I’m thinking different files might have different shape keys? I would have just done all that work in 1 file, each frame a different pose and different shape keys as needed.

As you said, blender is complex, and yes it takes time to learn how to use it good and efficiently. You’ll stumble alot while learning it, but just learn from your mistakes and move on. If you learn or understand how your current workflow caused you problems now, then you’ll know to avoid those in the future.

A thought about linking and proxies, stay away from them for now. They are more for working with others on a group project on a network of computers. Plan ahead, add the buckle before posing the belt instead of trying to add the buckle later.

Hope this helps,
Randy

Hi Randy,

Well thanks a lot about the various tips. Having the same origin for mesh an armature didn’t sound necessary to me, that’s the kind of tip I am missing and that may explain some troubles indeed (for instance I made a cage around the belt and it isn’t working great and this could be the reason why).

Yep, the dopesheet/action editor. Make an animation, 1st frame is the 1st pose, 2nd frame is the 2nd pose, etc, etc… You can change camera angles, lighting, everything from frame to frame. You’d even keyframe the shape keys. But from the sound of things, it seems to me like each file you have with a static pose might have a shape key on the mesh. And I’m thinking different files might have different shape keys? I would have just done all that work in 1 file, each frame a different pose and different shape keys as needed.

There is no real file-specific shapekeys. That’s because I am making file2/pose2 from file1/pose1 (after resetting pose1) so shapekeys are all in file2 (and pose1 too in the Pose Library). So at the end, file-‘n’ has ‘n’ poses (in the pose library) with all shapekeys. That’s one way of accumulating poses and shapekeys in the latest file but it is quite complicated I must say. It might look weird to a well-organized Blender user, I am sure.
Anyway I haven’t done a lot of posing because I am trying to find the best way to organize the work.
So DopeSheet sounds really interesting. Still have to work heavily on this.

For dummy like me, it would be nice to have some sort of on-line service with people charging to help on a specific task with remote control etc…
Just an idea
Thanks again