Handling armor across several models

Started by
8 comments, last by Kest 15 years, 6 months ago
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! ;)
Advertisement
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 :)
My Blog - http://www.freakybytes.org
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 :)
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.
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 :)
Gasp! That may very well be the best of both worlds there, webwraith. Thanks for the suggestion!
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).
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.
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.

I want to help design a "sandpark" MMO. Optional interactive story with quests and deeply characterized NPCs, plus sandbox elements like player-craftable housing and lots of other crafting. If you are starting a design of this type, please PM me. I also love pet-breeding games.

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.

This topic is closed to new replies.

Advertisement