Go the Modular Way - A guide to Non Destructive Workflows on avatars

This post is there to convince you about the use of non destructive workflows for avatar creation, especially regarding to the VRChat context (this can also be applied to non VRChat projects).

First, a little question. Are you using a non destructive workflows ?

  • Yes
  • No
  • No idea what it is
0 voters

Spoiler

Yes, you should. It’s better, trust me m8 :upside_down_face:

Not sure it’s for me, but sure go for it.

First of all, what is non destructive workflow?

It’s a vision of avatar creation that is based on descriptive modifications instead of direct modification. This can be compared to programming with functional vs imperative where you prefer to describe what you want to do instead of actually writing how to.

Hun? Didn’t get it

To summaries, it means describe to unity how you want your avatar to be changed instead of actually modifying it.

Oh, ok, but like how.

Lets go back on how we usually modify avatars.

First, most of avatar edits are to add outfits to avatars. This can be done directly in 3D software like Blender, or can be done through edits in unity by moving items or with various dressing tools (I could mention AutoDresser or Avatar Tools )

When those tools are used, their output is an avatar that have everything added to them. Their meshes, menus, animations, everything is bundled.

But let’s imagine that you want to edit that avatar again, either be to remove an outfit, upgrade a system or anything else?

Well … I, I’ll open it and …

And you will take forever to remove all the menus, assets, bones that were inside. That’s a long, tedious, and risky way to do things.

Wouldn’t it be so much simpler if you could just remove One file and everything related to that file was removed from your avatar. Well that’s exactly what non destructive is for. :star_struck:

It is meant to bundle everything that related to an asset inside a unity prefab that you can drag to your avatar, and all the deep modifications are only made when you go in play mode or if you upload your avatar. That way, if you don’t want an asset, simply remove it from your avatar and it will be cleaned in a single click.

Ok, you convinced me, show me how now

Not so fast, There is lots of ways to do this workflow, so let me guide you through it.

If you already know a lot about it, you can use the template project I made using most of the NDMF tools I use at GitHub - Spokeek/vrchat-ndmf-template-project: A VRChat NDMF Based Avatar Template Project

To go the modular way, you have two sets of tools. VRCFury and NDMF (Modular Avatar). I’m personally more familiar with NDMF but to explain the main difference between, VRCFury is a unique tool doing lots of things while NDMF is a framework made to allow multiple tools to work in a modular way. Pick your preference, here we will go with NDMF. :sunglasses:

NDMF is a framework that isn’t usable as itself, but there is lots of tools that use it to make things work. The main project that is also lead by the NDMF team is Modular Avatar. It is this tool that is mainly mentioned on assets that you can buy. Modular Avatar provides multiple tools to work with avatar like merging armatures, moving objects to bones, syncing blendshapes, etc. Most of your project will be enough with it but you may need more tools to work with specific tasks.

If you want some more tools I reference my list of NDMF based tools here GitHub - Spokeek/awesome-ndmf: An Index list for interesting projects based on the NDMF framework

First of all you will need a proper set of avatar tools to work with. This includes the latest recommended Unity Version (2022.3.6f1 as I’m writing here) and the VRChat Creator Companion.

Once installed you will create an avatar Project and select the project in the Creator Companion.

Then go to the Modular Avatar Website to add the VCC dependency at https://modular-avatar.nadena.dev


Once installed go the “manage” tab of your project and add Modular Avatar with the + icon

You can now open your project with the top right button.

For display purposes I will also use the Gesture Manager package.

For the rest of this tutorial I will use the Lasyusha avatar and a Witch Outfit to demonstrate the multiple uses, I expect you to install your assets to be installed at this point.

Here we have both assets in our scene, but they aren’t related at all.

It is at this step that you would use a tool to merge both of them in one object, but we will use modular avatar instead.

First you want to drag the outfit object into the avatar so you obtain a structure like this

armature

Now we will setup the outfit itself. There is a shortut here where you can right click on the outfit and click ModularAvatar/Setup Outfit. This will do some actions that I will describe here.

Once done, If you go to the outfit’s armature, you will see a component named MA Merge Armature

This component is the core of the feature, It will ask Modular Avatar to merge the armature bones to the main avatar’s armature. This includes merging the PhysBones and all the various objects on the armature.

For most avatar’s this would be enough, but here we will do an additional step.

As the main avatar have a menu to change the chest’s size, we want to synchronize the costume’s BlendShapes as well, we can do that with the MA Sync BlendShapes component.

This option allows to sync the changes made on the main body BlendShapes to change the values of the costume’s mesh BlendShapes.

That way when we change the chest size, the costume adapts automatically.

Modular Avatar have lots of other options, like merging animators, creating menus, etc. Check out the official documentation Component reference | Modular Avatar :open_book:

If you want to go beyond the usage, maybe some more detailed tutorials on how to use modular avatar can be done. :thinking:

If you have some feedback about this workflow presentation, please do and I’ll update it. :pray:

1 Like

Hey, I want to try out the modular design for my new avatar, but I’m not sure if I should choose modular avatar or VRC Fury for merging my outfits. I guess it would be smart to only use one or the other. Can tell me about the advantages and disadvantages of both of them?

Sure. Usually i wouldn’t use the words advantages but compromises.

VRCFury is an easy solution that “just works”. It’s a single package that you have to add, it has a reactive community and all you may want to use is within the package. It is also updated very regularly. But it is also by that use that the creator is mostly working on it’s own (from what i could hear) and by that, it’s not extendable by other devs.

On the other side, Modular Avatar is a core of features, but doesn’t do everything. It doesn’t do easy toggles for example. If you want additional features, you need to install additional packages depending on your needs. But in that way it is very customizable and adaptable to a lot of use cases.

The main issue right now, and that won’t help you, is that there is quite some bugs today when using both of them, making working with both a hard process.

So if you are new to the concept, i would probably recommend VRCFury.
Hopefully you find what you need.
:pray:

1 Like

ty for the response.

Some assets come with MA or VRCF. How should I handle the cases where I want to have both on my avi? Experimenting around, it seems to be fine if I mix both of them. Do they have an order in which they get applied? Is there anything I should watch out for?

I could probably recreate what MA does in VRCF and vice versa.

You can recreate indeed. I’d say test it by build and test and see if it’s fine. For the order, I believe vrcfury gets executed after, but I’m unsure. I’ll look later.

But yeah, test, and if not, redo what they did.

Also some people using MA for their assets do a minimal job to be honest, most likely never doing blendshape sync or menu creation and only adding the merge armature. So that’s pretty easy to redo yourself.

1 Like

After some initial struggles, I now got the hang of it and it’s super convenient ! I converted all my props and outfits into modular VRCF versions, and that enables me to drag and drop assemble an avatar with the outfit(s) and props I want. I always struggle with parameter count since face tracking takes up most of them and this makes it so easy to make different Avis for different occasions.
TY for you for your post, it really made my avatar creation process better, and I can recommend everyone else also going this way.

Regarding parameter limit, i believe the vrcfury dev is having a new optimization parameter feature in their new beta version, if you want look at it.

Also, thank you a lot, i appreciated it :fire:

1 Like