Sign in to follow this  
Tigana

Handling armor across several models

Recommended Posts

Hi there, This is a question that has been plaguing me for a while, and I just don't have enough information to move a certain project forward right now. In a game with a high number of character models (male and female) of different races, and thus different body types, what is the most efficient way of sharing clothing and armor? How do current games that have armor sharing handle this? There are two methods that I can think of, each with their own set of problems: 1. Model one "average" armor piece, and let the engine deform it as necessary to fit all other characters. Possible issue: a clumsy, imperfect "fitting" with ugly seams when body types greatly differ. 2. Model one "average" armor piece, UV and texture it, then create duplicates with slight variations to fit every other character model perfectly. Possible issue: a leap in the size of the game client, to account for all the new models needed. Is there some happy medium that's just not coming to mind right now, or will I have to settle on the lesser of these two evils, so to speak? I would prefer the greater control of the second method, but the amount of redundancy is a bit off-putting. Halp! ;)

Share this post


Link to post
Share on other sites
i never did taht
but maybe somehow make the armor have bones and attaach em to the bones of the avatar who wears it. Then you can move em accordingly.
Simple cloth can also be just a texture mapped on a second layer onto the avatar i guess.

But I am curious myself how to properly and elegant do this :)

Share this post


Link to post
Share on other sites
Redundancy? Are the males and females of each race similar enough that you can have one armour per race, and deform to fit male and female?

Perhaps make male and female versions in small, medium and large, and choose and deform the closest match?

Just two spur of the moment ideas :)

Share this post


Link to post
Share on other sites
Quote:
Original post by DrHalan
but maybe somehow make the armor have bones and attaach em to the bones of the avatar who wears it. Then you can move em accordingly.


*nod* This is the first method I posted about, sharing one armor model across all the characters. The problem here becomes evident when you're using say, a torso armor piece, which is going to need to deform mightily if your body types are on opposite ends of the spectrum (really skinny race to a really fat race, for example). If the race models didn't vary too much, this would be the best solution. As it stands though, I would worry about the engine giving me a clumsy result when it has so much variation to account for.

Quote:
Original post by webwraith
Are the males and females of each race similar enough that you can have one armour per race, and deform to fit male and female?


That's definitely something to think about, thanks :) I would have to see how to handle the chest area in this case, and just how creative our engine can get.

Share this post


Link to post
Share on other sites
Here's another idea, if you're happy with having armour be a texture map, you could have something akin to an armour "skin", then just add parts that stick out, for example; large collars, or shoulder pads, as a separate mesh that attaches to the models shoulder joints. Hope this helps :)

Share this post


Link to post
Share on other sites
Quote:
Here's another idea, if you're happy with having armour be a texture map, you could have something akin to an armour "skin", then just add parts that stick out, for example; large collars, or shoulder pads, as a separate mesh that attaches to the models shoulder joints. Hope this helps :)


This could also be applied to Option #1. Deform your armor model to each character, but swap the texture to compensate for imperfect "fittings" (or if you wanted just deform the characters body model and swap textures, not bothering with armor models).

Share this post


Link to post
Share on other sites
Hm, I'm not sure I follow that one. Take the Guild Wars Gladiator torso as an example:

http://wiki.guildwars.com/images/thumb/6/67/Warrior_Elite_Gladiator_armor_m.jpg/127px-Warrior_Elite_Gladiator_armor_m.jpg

To make sure it fits well over the shoulder and under the arm, it would have to align very closely to the default body mesh. Scaling it up or down won't achieve that, if you have one dwarf model and one giant model that both need to use the piece. I'm not really understanding how swapping the texture could help this.

I'm intrigued in the way FFOnline handles this issue - their sets work across races as giant and bulky as the Galka (http://www.crimsonvelvet.com/obsess/ffxi/AFmonk.jpg), and at the same time the tiny Tarutaru (http://www.geocities.com/steveciciola/mnktarum.jpg). My guess would be that the armor is tweaked by the modeler instead of the engine, because it just fits so well.

Share this post


Link to post
Share on other sites
Swapping the texture would mostly be to account for differences in proportion, for example one race's male form has broad shoulders while the other race's male form does not. The model can be mathematically distorted to account for the difference without much trouble, but the same distortion would make the texture look horrible on whichever one it hadn't been made for.

Share this post


Link to post
Share on other sites
For my game, I build human male versions of suits first (actually, sometimes I start with the female). After it's completely finished, I merge the female body into the scene and reshape the model to be more petite and remodel the chest area. Then the UVs of remodeled parts can just be welded into the existing UVs, so there's no need to remap the rest.

It usually takes me 1-2 days to build a fully functional suit of armor, and it takes about 10-20 minutes to reshape it to another character type.

Each character defines a "shape" type. For example, average humanoid males are "MM". Average humanoid females are "MF". Massive humanoid males are "LM". When a suit is created, it specifies its mesh resources like this:

DefineMesh( "MF", "KIT_Hm_RinArena_MF.X", "Leather" );
DefineMesh( "MM", "KIT_Hm_RinArena_MM.X", "Leather" );
DefineMesh( "LM", "KIT_Hm_RinArena_LM.X", "Leather" );

When a character equips a suit, the suit just loads the mesh that matches the character's shape. I usually try my best to make new species of characters share existing shapes. But only when the species is very humanoid and can be player controlled or recruited into the party. Otherwise, it's more interesting to just make them unique outfits.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this