Development Update - A dress maker, I am not!
Have you ever look at game character models, specifically females and wondered to yourself "why don't I ever see female models with a dress down to the ankles?" Or, to a lesser extent "why do most female characters have a pony tail or short hair?" No? I hadn't given it much thought myself. That is until I decided to make a character model.
Think about it for a second. Many female character models I think of have a pony tail or shorter hair. They also typically wear pants and in some cases loin cloth style hanging cloth over those pants. There are of course exceptions to this but there are reasons this is often the case. My first assumption was simply that Lara Croft can't be raiding tombs with hair in her face and a long dress. While this is true in this instance, there are other reasons I don't often see these features on female characters. The main one being, its freak'n hard to implement and even harder to animate with.
My original vision for the "ghost" character in my game was a long dress with long hair. I toiled away at my character until I came up against some big challenges. The hair was a challenge. Not only does it take up as many polygons as the character's body and face combined, but it's pretty odd looking unless there is some kind of simulation going on with it. Having the ghost move it's head but the hair is stiff as a board looks just plain wrong. There are several ways to solve this. You can simply bake simulation in to your animations for instance. I overcame this issue pretty quickly with cloth simulation inside Unreal Engine. I know it sounds odd but now my characters hair moves. Is it 100% accurate? Hell no! But it does the job well enough for the instances and context you'll see this character. I wouldn't however recommend this solution if your game is 3rd person action and it's applied to you main character that you'll see all the time.
The next big issue I had was the long dress. This has plagued me for at least a year. At one point I game up entirely and just had her running around in her underwear. This didn't look bad per-say, it just wasn't what I wanted. The biggest struggle I had with implementing a dress was weight painting. Weight painting is the amount a particular bone influences the polygons around it. If you have no dress its very straight forward. Leg bones affect the legs. The issues I had with the dress was that you had to have an even balances between the legs over the dress. The main issue with this is that if she takes anything more than a tiny step, her leg clips through the dress because the influence on the leg is stronger than it is on the dress. Hanging cloth not wrapped around the character doesn't have this issue because it doesn't limit the characters movement in any way. I also tried a half cloth simulated dress with no weights but I could never get the collision right. Below you can see my second version of the character. Notice the huge bulge that is her knee cap.
I also tried having the dress as a separate mesh entirely. Attaching it to the character, adding cloth simulation to it and mimic the characters movement in time with the character on the dress. This sort of worked but again, there was problems with collision during simulation causing lots of clipping to happen.
I've made this character 5 times now. Each time learning a little more. It took over a year and a ton of practice but I finally have a long dress on her. I had to compromise a little on the length but it works. How I solved this issue in the end was that I copied the weights from her legs over to her dress. This still required lots of tweaking. Once I got something that was 95% passable without breaking while still allowing the character to walk, I imported the model in to UE4. I then applied a cloth simulation to the lower part of the dress. It worked! So the solution in my case was to use a combination of simulation and weight influence.
Would I ever make a character like this again? Sure, if the project called for it. Would I try to avoid it as much as possible. Yep! So much time was spent getting the end result