Home Website Youtube GitHub

Propagating Template Changes to Rigs

Hello,
I was curious if there already exists in mGear a way of propagating updates to a rig template to any rigs that may use that template? Kind of like referencing the template? It seems that mGear doesn’t like referencing Guide Rigs directly (or maybe there’s something I need to do that I’m missing?).

Here’s a potential use case: we have a ‘base’ guide rig that we want all our characters to be built upon (game pipeline). This would be for the shared skeleton in-game. All animation would get baked to this rig. However, the guides would be moved into place to match each character’s proportions. Then, on top of that, we’d want to add extra joints that are specific to each character that uses the base rig. e.g. https://youtu.be/GB6qNAXUyX0?t=499

So, what we might like to do, is to be able to have any structural and settings changes made to the core rig be propagated and updated in each character’s rigs, maintaining their transform data.

I know setting up a tool to do this should be relatively straightforward, I’m just curious if something already exists in mGear that I’m not aware of.

Thanks in advance again!
-Chris B.

1 Like

Hey there @Chris_Bullock

There are many ways you can go by doing this, like you mentioned yourself that setting up a tool that meets your personal pipeline and workflows might be the most ideal.

That being said, to use the same template guide for each character you want to rig up, you could make use of some of the built-in features of mgear.
image

I would then export out the base guide template that all your characters are going to share. Depending on your needs here,

You could manually import the base guide by using the menu shown, or
If you are wanting a bit more of an automated workflow, you could create a tool that automatically bring in the base template, depending if you have made changes to the positions, you could automate that process too?

Or you could just import, adjust and export out that guide again with the changes that you have? It really depends how deep the rabbit hole you want to go down man.

The same concept with adding joints to your rig, you could make use of adding the control_01 with joints enabled to add to the base template. This is nice as they are all part of the components, you export out that guide and you are good to go! You could also add joints through a postscript that is part of that specific rig build?

The most straightforward method would be to create the generic guide, import that guides per character, adjust, add (if needed), export guide out, repeat.

Hope that helps! Have fun! Would love to hear what your end result is one day!

2 Likes

@Chris_Bullock

If you use universal topology for your characters you can calculate average positions and directions of the guides based on vertex positions. But the modelers should respect that points.

Thanks for getting back to me! Yeah, I’m using Guide Templates, the thing I was wondering was: if there was any built-in mechanism to update a rig that’s using that template, if the template is updated.

And yeah, it seems like it would be relatively straightforward to script reimporting the guides from the updated template. And yeah, was planning on doing the extra joints in a Post Script, so rebuilding the rig would be trivial.

Thanks for getting back to me @iRex. Yeah, I think our characters will likely vary quite a bit, so using the same topology for everyone is likely out of the question.

Hey @Chris_Bullock,

I understand your question better now, thank you for clarifying that.

So in the picture below I am showing two guide templates that I have saved out, one being the master and the other being the slave. The master has just an arm_02 component and the slave is that template that has been imported, and I have added control_01 to it.

What I did after importing the master template into slave scene, I updated the position of the guide and saved it out again. So now we have the scenario that the master template is updated. And the slave is out of sync.

image

Then the Shifter Guide Manager has a template tab, I have added the slave guide in and it shows all the information about that guide.

Then under the guide menu bar option, there is a diff tool.

When you run the diff tool here is an example of what spits out, basically recognizing that the positions have been updated.

Now, to my knowledge, I am not sure how to update those values through the tool, a tool? You could edit the values one by one in that editor, but to me, that just sounds tedious and error-prone. I would probably create a quick little tool to use this diff tool and then create a new json file with the updated values and then import the new guide to the scene.

I’d be curious to know if the rest of the dev team has something that I do not know about to make those updates through the tool?

Hope that helps man!

3 Likes

The tool was the first iteration and is a little raw, and needs more love. That kind of functionality was in the roadmap at some point.
do you feel like doing the upgrade?

3 Likes

Sounds like fun! I will jump onto that. :heart:

3 Likes

Thanks for this explanation. I definitely missed this, and will definitely look into it further!

1 Like

I had a look at the Diff Tool. I agree @JaschaW, seems like it’s meant / its usefulness is to be a tool to determine if two Templates are identical. It doesn’t do a good job of telling you which template has which values, just that the values are different. Also, it seems like it’s left entirely up to the user to do anything with that information (presumably by hand or through their own script).

Some things that would make it more useful:

  • Diff against selected guide rig–run the diff against a guide rig that is currently in the scene to see if it’s using that template.

  • Displaying the data in a table–rows could be each item that’s different, and columns would be template A’s and template B’s values (or Guide Rig and Template file).

  • Merge templates–for each item that’s different (Row), use value A or value B. Or accept A or accept B (for all rows)

Thanks again for pointing it out!
-Chris B.

2 Likes

Thanks for the feedback @Chris_Bullock :slight_smile:
you are right the data printed in the diff tool is not clear in some areas :frowning:

1 Like