HeroEngine Forums

HeroEngine Support => Art & Art Pipeline => Topic started by: Legacy on Dec 04, 12, 05:46:56 AM

Title: [Resolved] Dynamic character parts best practices?
Post by: Legacy on Dec 04, 12, 05:46:56 AM
Hello, I've got just a quick question to more experienced developers out there:

Basically, we are starting with a "naked" mesh (one shown when player unequips everything). Then we have some armor that can be equipped. Now, I am thinking about how to handle this naked mesh thing. One option is to have it all in one piece and just keep it shown all the time (so when player equips a piece it will just sit on top of this base mesh). This is simple but it's wasting polys because for every character in the scene there would be some 2k polys extra (plus we could smooth the mesh in future making the cost even bigger).

The second option is to break the base mesh into parts and replace those with armor pieces as usual. The problem here is that I am not completely sure how to skin two pieces of geometry (organic, making it even harder) so that there are no artifacts (I start with whole body and break it into pieces). I guess I could manually copy/paste bone weights for all verticies along every seam using the Weight table, but this seems rather tedious and one would need to redo it every time the skinning is tweaked.

Anyone has any advice on how to approach this? Thanks
Title: Re: Dynamic character parts best practices?
Post by: HE-BENNETT on Dec 04, 12, 09:44:54 AM
I have been working with those exact nitty gritty issues for some time now, so let me break it down for ya :)

First thing, absolutely do NOT 'just have the naked mesh there all the time'.  Skinning each item such that it behaves naturally for what it is AND will never interpenetrate will drive you insane.  Also, while non-visible polygons are culled, I believe there is still some added load to having them there...

Okay so, you're left with the second option, slices!  The skin weights issue can be a real pain, but there is a good process I use in Maya, I assume there is a way of doing it in Max as well:

-Keep a full base (the naked mesh you mentioned) and skin it to the character skeleton you'll be using.
-Do all your skin weighting on this mesh
-In Maya, you then smooth skin each part to the skeleton (either all at once or as each is ready)
-Again, in Maya, you can then go to Skin > Edit Smooth Skin > Copy Skin Weights and copy the weighting from the naked mesh to that part.

This or a similar process in Max allows you to do most if not all the skin weighting in one place and copy it out to the parts as needed.

The other recommendation is around the design of the slices.  This is mentioned in the wiki as well, but make sure to really concept out your parts so that you can limit the complexity of the slices to support only what you need.  Also, establishing the slice locations allows you to design the parts around those borders.

Title: Re: Dynamic character parts best practices?
Post by: Legacy on Dec 04, 12, 09:53:44 AM
Thanks for elaborate reply, Bennett! I will then explore more the second option as you suggested. I believe there is something called 'Skin Warp' in 3ds max which should basically auto-copy the skinning from one mesh to another. I'll look into this.

Thanks a lot

EDIT: The max modifier is called Skin Wrap and is working perfectly :) It has the option to be converted to normal Skin for export too...