Corgi Week 3: Weighting the Avatar

To adequately modify weighting for the avatar, there are a few methods of particular relevance:

Automatic Weights

This is a shortcut – one which attempts to assign the mesh to the bones that are closest to that particular area on the mesh. Automatic weighting is achieved by right-clicking the mesh, THEN the armature in Object mode, then Parenting the former to the latter by selecting ‘Ctrl + P’. This brings up the ‘Armature Deform’ menu, from which  ‘Automatic Weights’ should be chosen.

It is important to note here that with human avatars, it’s usually possible to use it to predict which parts of the mesh should be associated with which bones. The same cannot necessarily be said for avatars that depend upon a modified skeleton (like this Corgi). Sometimes Bone Heat works, sometimes it doesn’t. In any case, there will always be some degree of tweaking required afterward, so tools such as ‘Automatic Weights’ should be considered a useful tool in most cases, but not a magic bullet. This is why the following two methods are also very important to learn.

Manual assignation:

To accomplish either of the following two methods, the mesh needs to be parented to the armature. This can either be done by choosing ‘With Empty Groups’ from the Armature Deform menu (which we got to by selecting the mesh, then the armature – both in object mode – then hitting hotkeys Control + P) OR selecting the mesh and adding an Armature modifier, taking care to point the ‘Object’ field in that modifier to the appropriate armature.

Once this is done, the mesh can be weighted using the first, second or both of the following methods:

A) Assignment as an Edit Mode property – by selecting a single vertex or a whole group of them in Edit mode, you can affect their bone weighting by choosing the (above) indicated menu in the Edit properties tab, adjusting the associated weight and then hitting either ‘Apply’ or ‘Remove’. Vertices associated with a given bone can also be selected or deselected in this same menu.

B) Weight Painting – This is a weighting method which allows you to visualize the degree to which verts are weighted to a particular bone through the use of colour. It allows you to use a digital brush to add, subtract, draw, lighten, darken, blur or otherwise affect bone influence, which in this mode is represented by a gradient of colour, ranging from blue (no influence) to yellow(middling influence) to red (full influence).

There are pros and cons to using each of these methods and almost 100% of the time, I use the second method *after* having used the first, in order to make it look more natural.

The weighting process with the cute, fuzzy and not-at-all skinny corgi has been, inevitably, a bit different (and long-winded) compared to weighting the sleek & non-squishy Drider avatar covered not too long ago.

I’ve always found this to be the case – coming to a happy medium between influence from multiple bones in a soft mass is a very organic process that depends heavily upon an understanding of what you want to move, and where.  Don’t be discouraged if this doesn’t work out right away. Understanding a lot of this comes with experience & experimentation.

Whereas you can (for the most part) assign heavy influence of a rigid mass to a single bone, rigging to ensure smooth movement along a curvy mass often requires more of a gradiated transition – sometimes extending well past the immediate location of the bone.

For example, you could weight mesh along a tail rigidly, but when it comes time to move it, the mesh will be overly faceted and easily visible from afar as being unnatural.

Adding geometry judiciously at this stage is a good way of adding a more natural look. This is also a great opportunity to smooth out weights along

It’s at this stage that I have added more geometry to critical areas, such as joints and the tail.

Maintaining a low poly-count to start with is very helpful in reducing additional work when it comes to correcting delicate bone weights, but it’s also in these cases where adding intervening geometry is appropriate, and this is why, despite having used a Subsurface division modifier to visualize, I have not applied such modifiers permanently to my mesh. Being able to easily select and divide up edge loops and rings manually allows me the greatest ability to create more natural shapes while maintaining clean edge-flow.

The weighting and animation processes are inevitably intertwined. In the next little while, I’ll not only be animating but correcting vertices with stray weights as well. I will often be animating, find that a certain movement affects the mesh in some negative way, and as a result find that I need to go back to editing weights to prevent any significant negative outcomes.

It’s also during this process that any final joint position tweaks should be made. As was mentioned in the previous post, it’s important to ensure any such position changes are carried out between *both* the Control bones (green) and the Deform bones (blue, purple, red). Failing to do so can cause some unpredictable results upon export.

(which happened here some time ago while working on the Yeti)

So far, I’ve explained the concept of these weighting methods and discussed a few pitfalls, but I’d like to delve a little deeper next week with some video content, demonstrating the use of these Weighting tools in greater detail. If you’re looking to learn about weighting with Blender & Avastar and have any particular questions for me to work in to these videos, please leave a comment here or drop by my Discord server for a chat within the next couple of days! (Latest March 4, please!)


If you enjoy what I’m doing here or think someone else might also find it of use, please feel free to share this blog with them. If you’d like to keep up to date with posts, the RSS for this blog is here, I can also be found on Twitter and Plurk. The Discord server is here.

If you really like my stuff, perhaps consider donating to my Patreon? Your continued support helps to produce weekly content (written, modelled, animated or otherwise) and helps to keep original content creation in Second Life!

Thanks for your support!

Corgi Week 1: Working with modifiers in Blender to help visualize advanced geometry efficiently

This week I figured I’d get started on some Wilds of Organica-related items, since the last couple weeks have been pretty landscaping and decor-heavy.

Linden Lab have taken the past few weeks off, as far as Content Creation user group meetings – they will resume tomorrow (Feb 15, 2018) at 1PM SLT, on Animesh 1 region (on ADITI grid).

It’s hard to gauge how much longer the testing period will take. When we last met, it seemed like development was ongoing, but felt like we were moving a bit closer toward final performance and animesh limits testing. There has been some push in terms of increasing the triangle limit, however I’m still of the opinion that 50K is far more than enough.


With that said, I’ve begun development on a new WoO product this week that would likely see use as either an avatar, animesh, or both. We’ll see how development goes moving forward – I’m excited to see just how well it can be implemented, given the positive experience I’ve had popping in animations and some basic scripts for existing content thus far.

When I’ve chosen a real-world subject, typically I’ll look up some basic reference material to get the proportions down. In this case, it’s mostly been looking up corgis on Google Image search. It’s easy to get caught up researching cute critters and your search results are likely to be the same as mine, so suffice it to say that I use such references as a touchstone to develop an idea of what age and proportion I want my avatar to be.

My preference, from a stylistic point of view, is to avoid being photorealistic in my translation of a real dog to SL dog. I don’t really enjoy the uncanny-valley look that often comes from taking references completely from photograph to projected final texture, so usually these references become proportional and very general references later on when I paint my fur textures manually.

In this case, I was going for non-puppy, but still on the young side, just to get a nice balance between lovable huge ears and adorable elongated & lowered carriage. I’ve also elected to go the non-docked route, although a bobtail option might be in the cards at some point.

The early hours of my avatar making process usually start with something very simple – like a box with some very simple extruded faces, to block out limbs, head, etc. Once I feel i have the main proportions down, I will usually toss on a few modifiers to help me get a clear idea of what the final product will look like, even if i might not apply all of these modifiers by the end of the project.

 

By using a SubSurf modifier, I can non-destructively visualize how my geometry might look if i were to subdivide and smooth. I don’t typically ever apply this modifier permanently because it’s too easy to just apply it and call it a day, without addressing some of the geometry problems that it introduces.

In particular, SubSurf tends to cause geometry to form vertices which either branch off in three or five directions, which is not ideal from an edge-flow perspective.  Also, it’s typically a lot more efficient to add edge loops and rings in areas where necessary, as opposed to allowing a modifier to add them all over your model.

I tend to add some edge loops and rings to some degree at this stage, to get the basic silhouette established, but do tend to add more later on, during the rigging stage, for added flexibility and attention to specific bone weights. One might conceivably use the ‘simple’ subdivision method rather than Catmull-Clark, however that subdivision method will not apply any vertex to vertex smoothing calculation and, at least for this use case, does little to add to this workflow.

I will typically mix the SubSurf modifier along with a Mirror and EdgeSplit modifier.

The Mirror modifier allows me to model on one side-only and have those changes propagate symmetrically.

I usually add an EdgeSplit modifier to help visualize the edge-flow of my model – in this case to help define key features in the surface as well as to give some definition to the fur.

I usually turn off angle calculations for this modifier, opting instead to define my sharp edges manually by right-clicking a sequence of edges, hitting Control E, then selecting ‘Mark Sharp’. Basically I want to adjust the geometry based on shapes I want to add to it, rather than adjusting the geometry based on what I have so far.

This helps to give the mesh a more distinct silhouette and to give me a better idea of how the geometry will need to be broken down later from the standpoint of someone who needs to rig and animate. As with the SubSurf modifier, unless I actually need a very sharp edge in my final model, I usually don’t permanently apply this modifier permanently either, since the resulting edge-splits will cause duplicate vertices that are not always necessary.

Below, you can see the difference between my Mirrored model (with no other modifiers added, but faces rendered as smooth), my mirrored model with edge-split, and finally with SubSurface divisions.

Once I am happy with this edgeflow and overall shape, I will usually begin modifying the Avastar Extended Bento skeleton to fit the avatar.

We’ll cover this, along with rigging our corgi, next week.


If you like what you see but don’t think it’s quite right for you, perhaps consider donating to my Patreon? Your continued support helps to produce weekly content (written, modelled, animated or otherwise) and helps to keep original content creation in Second Life!