SkankerzeroModularCharacterSystem

From polycount
Revision as of 07:09, 15 March 2012 by EricChadwick (Talk)

Jump to: navigation, search

Skankerzero Modular Character System

How to create a modular character system, by Jesse 'skankerzero' Sosa. Mirrored from the Polycount thread MUTANT Little League TEAM.


I'm going to kick this contest up a notch and make A WHOLE TEAM using the specs for a single character.

I'll try my best to document what I do to help others think outside of the box in the future. I'll also try and write down my brainstorming process.

Modular Assets

For this 'character' I will be creating a modular asset.

By 'modular asset' I mean an asset that can act as a lego piece if you will.

During my 9 years at Terminal Reality, I spearheaded our crowd / parting system on the art side. We created characters that used a single animation rig and were made out of parts that were swapped according to an XML file. In that file we defined specific variants and the parts they worked with. We were also able to completely randomize the character using parts and creating an exception list of parts that didn't work together.

Below is a small example of some that I've done in my past.

Back in 2004, I tackled my first modular parts character for BloodRayne 2.

Every human bad guy in BR2 ended up using this technique. All of them used no more than a 512x512.

Another early example are the females from Aeon Flux.

This is probably a bad example because looking at the texture now it's obvious I didn't use the full texture. I can't quite remember what I did with these characters, but I believe I ended up cramming the male and female textures together into a single 512x512.

Following are two examples from Ghostbusters:

The first example is a single character that is meant to be viewed at about 75 feet or more away from the camera.

This is considered a single character as it has a single rig that animates all the characters. The rig is less than 32 bones and would animate all the outstretched arms and random heads and bodies to create the illusion of a crowd stirring about. The polycount falls within a single character's budget (12,254 tris). and it uses a single 256x128 texture.

The second example is the crowd system I helped design and build for the game.

This image shows 2 different characters. Both characters use the same rig and animation set. They also share a single 1024x512. This level of detail was to be 25 feet or more away from the camera. We had higher res crowds for the up close shots. What you see here is the final assets that made it into the game. The original assets had twice as many parts but had to be cut down in order to fit the memory footprint for the levels. Each possible variant was around 1500 - 1700 tris. The above image is the 'low poly' character assets that I created off the 'higher poly' assets delivered to us from the outsourcers. I had them deliver the assets in such a way that I could easily piece together unique character NPCs whenever they were needed. This is all thanks to a modular setup across all character models. For example; If we wanted Bill Murray to wear jeans and a shirt, I could easily drop his head into a scene and merge in a shirt and some jeans from the crowd system and in just minutes we had a new Bill Murray variant.

I could go on and on about creating modular crowd assets, but perhaps that would be best for another time.

For now, I'm going to apply the same knowledge and theories to create a full little league team for this challenge.

Knowing Your Platform aka: Being A Smart And Efficient Artist

First step is to know your platform. Often time there is a lot of wasted effort put into characters simply because artists don't understand the platform they're building for. In this challenge we're aiming at the mobile market. Below are two images that show the screen resolutions for the phone and tablet platforms.

phone:

tablet:

A lot of wasted time and effort can go into details that will never be seen at these resolutions. Most detail will 'swim' or 'shimmer' because more than one texture pixel will take up a single screen pixel. The engine has to decide which texture pixel to draw for that screen pixel every frame. Thus, 'swimming' or 'shimmering'. This is why mipmaps are so important.

Knowing this, I will also choose an appropriate art and texture style to accommodate the final platform. A simpler art style will also be advantageous when I have to assign less texture space to certain parts.

Setting Up The Rules

So now I set up the rules that I will follow for this character asset.

1: 2,500 tris max per variation including equipment and fx 2: 512x512 textures per texture pass 3: 9 total unique characters to form the team

I'll further break this down.

  1. The modular asset will be much more than 2500 tris, but the final unique variations will all fall within the limitation.
  2. I will be using a 512x512 diffuse in the rgb with the specular in the alpha for all the parts. I will also be using a 512x512 rgba image for masks. I will not be using bump maps because the final deliverable will be screenshots. Bump maps are only good for high end renders and motion. So they will be a waste of my time. This all goes into being a smart and efficient artist.
  3. I will take the modular models, mix and match parts, and squash and stretch proportions to create 9 unique characters with minimal effort. It can be assumed that each character will be on it's own rig with it's own animation set, so this frees me of the single rig limitation when it comes to proportions.

I can also go in and edit the mesh on each unique character as I see fit as long as I don't go above 2500 tris.

Identifying Parts

With most crowd characters, a lot of time is spent studying reference to see what makes up the crowd you're building.

On Ghostbusters, I watched and took lots of screenshots from the 1991 - 1992 seasons of Seinfeld. That was the year and location of the crowd I was building.

I had to identify the key elements that people wore during the fall season. For this, I will be looking at a baseball team and breaking down what I believe is needed to achieve the amount of variation needed.

All the above is subject to change, but I think this is what it will take to create a good, varied team.

The list may seem like a lot of work, but trust me, it's not. A lot of it comes from creating a good base model with uvs. From there it's only a matter pushing and pulling verts to create different shapes, moving uvs, and adjusting textures.

If time allows for it, I will also create the away team using the same textures and masks to create a whole different team.

Creating A Proper Base Mesh

When people think of 'base meshes' they usually think of either a Z-Brush base mesh or your standard 'naked human' base mesh. For this example we're going with the latter.

In a crowd system, your base mesh should be the most average character contained within the system. This means you can push and pull the verts to extremes without having too much uv distortion.

For example: If you're going to create 3 characters off one base mesh; A 6ft tall human, a 7 ft tall human, and a 5 ft tall human; your base mesh should be the 6ft tall human.

Do whatever you normally do to get to this point:

This is the game mesh I made for this challenge.

Now, let's reference back to the parts list I created.

Let's identify those areas on your base mesh and make sure we built the mesh correctly to accept part variations.

I have decided to part out the hands and feet as well since they will receive parts such as gloves, mitts, shoes, and bare feet. Try to place your parts at clothing seams. As I have learned over the years, this is the easiest way to do part swapping.

Be sure that you have complete edge loops where you're parts meet. This will save you many headaches in the future.

Your character should have clean cuts such as below:

That's pretty much all there is to setting up your base mesh for parts.

UV Your Base Mesh Now

Take this base mesh and uv it quickly. Be sure to make your uv seams along the part seams you determined earlier. This will help a lot later.

I use Headus UVLayout because I'm a winner, and so should you.

There is no need to pack the uv islands, just go ahead and unwrap it. This can save you time later when you begin to copy geometry off it to create new arms and legs.

Using Headus UVLayout, that took be a little less than 10 minutes to unwrap and get the consistent result you see in that screenshot. (The eyes are temp, so I didn't bother to uv them.)

The next step is to take this base mesh and alter it to make all the pieces in your list. You should always have a copy of your clean, unaltered base mesh in your scene. This is very useful when you need to build clothing over it or when you need to go back and Frankenstein a part off it.

More Info


Personal tools
Namespaces

Variants
Actions
Navigation
Tools