Custom Wireframes/ Mappings
In an effort to make this tutorial as comprehensive as
possible I am covering some items that many of you may never need to worry
about. Creating custom mappings or 'wireframes' to paint for a model is one of
those issues. You will most likely come upon this circumstance if you work with
a team that is creating new models to add into a game, whether it be
professionaly or on an amateur level. I would recommend that if you are
given the chance to create the mappings yourself, then jump on it! No modeler
can fully understands the needs of a skin artist unless he has done some
skinning himself. In fact most modelers I've worked with have an extreme
shortcoming when it comes to doing the mappings for skins. Even upon giving
feedback after feedback to relate the issues that would allow me to create the
best skin I often would be handed something that was lacking entirely in its
presentation to me.
It is to everyone's benefit for the mappings on the model
to be as good as possible. A bad texture/skin for a model can ruin the whole
appearance. No one wants to spend hours of time, to have it sabotaged because
the layout of the texture was done poorly.
But on occaison you will not be able to do the mappings
yourself, and in that instance you can use this tutorial as reference for your
feedback to the modeler, OR you could point them in this direction to take a
look at what I've layed out here so they might better be able to meet your
needs.
I happen to be in a great position here where I have taken
up 3D Modeling recently and am doing the mappings for a new model. Therefore I
will use that model as an example here that should provide great reference for
you when creating the mappings that you need to do in the future!
So lets take a look at the model in question. I've just
positioned him standing next to himself here so you can get a look
at his geometry:
Nothing incredibly exciting, just a normal human male weighing in just shy of
600 polygons.
Now first let me define what I think are the most important factors for your
consideration when laying out the mappings for a new skin in no particular
order:
Now you know what points I consider to be important, let me
explain why for each:
Avoiding errors.
I know your saying 'duh!' of course you don't want
errors, but this is worth mention as I've seen a lot of mappings that I would
consider to be in 'error' where the people who did them had no idea there was a
problem. What are some common errors:
- Overlapping areas that should not be overlapped. In other words don't
overlap his head over his leg, or anything else of that nature.
- Don't warp the mesh when your mapping it because it will end up getting
back to normal shape when its displayed on the model and whatever was painted
there will be either compressed or stretched to fit and quite possibly look
odd. This does not preclude from uniform scaling (ie: scaling up or down
equally in all directions)
- Not mapping visible surfaces. If you do this (depending on the engine) you
will get anything from black areas on the model to strange shimmering areas,
etc etc.
Maximum coverage
I see a lot of mappings done in the neutral position
(standing there with hands down near your sides feet shoulder width apart) and
the backside right next to it, which ends up only using 70% of the available
surface area and looses out on a significant amount of potential for detail.
Here are some tips on how to maximize your coverage:
- When possible try to use what I called 'mirrored mappings'. In other words
instead of laying out surface area for the right leg and left leg
individually, create a mapping for the right leg, and then mirror that onto
the left leg. This can be done in several ways depending on your program but
most support creating the same mapping for the opposite leg and then either
rotating or using a 'mirror' function and placing it overlapping the other
leg. So you will effectively be painting both at once with the same surface
area on the texture. This only works well though if you have symetrical
parts on the model. So if you have a mutant with one large arm and one small
arm that have a different number of joints and different muscle bulge areas
you arent going to be able to use this technique. Also this is not effective
if you want to paint the texture in a non-symetrical manner such as having
ripped pants on one leg but not the other.
- Don't be afraid to 'cut it up' this allows you to get much more surface
area for certain items especially if your happy with symetrical presentation.
So for instance you could cut his head in half and mirror the left over the
right and then scale it up (uniformly) 200%. Effectively your taking the same
surface area on the image but you will be able to create a much more detailed
face.
- Also you can cut up the mappings in other respects like separating the
arms, legs, torso and head. This will allow you to position them in effecient
areas and unwrap them to cover all the surfaces properly and make more
economic use of the texture space.
- Position all your peices like a puzzle to allow each item to be as large
as possible in the area given and leave as little blank space between them.
User friendly mappings
I've got a friend who really doesn't beleive in this at
all but I argue for it for the following reasons:
- Consider you may have another person needing to do a skin for you model at
some point such as.
- The team or company you are with wants someone else to do a skin for the
model. Imagine if your mapping was so convoluted and hard to work with they
had it redone and your original work had to be thrown out as unusable?
- If your model is released for public use like a Quake2 Plug In Player
Model you will get considerably better reaction to a model that can be
easily painted by other people instead of cryptic mappings that they cant
figure out.
- There is no real benefit to creating a non user-friendly mapping other
than trying to keep other people from working with your material. But if your
working in a team environment, of if you ever want to try to work for a
company or team environment they may see your work as too hard to adapt to and
pass you by.
Efficient use of texture
size to save memory.
Don't create a texture for your
mapping that is 1024x2096. (Or any other really large crazy number) Stick to
texture sizes that are mutiples of 8 and keep them as small as possible. This is
extremely important if you are working on your own product, but still has a fair
impact even if you are making a amateur add-on because if you allocate too much
texture to your models you may slow your players frame rates down, or make a
scene impossible for their video card to draw. Being efficient is a good
practice for all levels of proffesionalism. Here's my general
recomendations to keep your texture size effecient:
- Don't create a large texture for a small item. Example: a friend of mine
created 128x128 textures for weapons that were to be held in the hands of
Quake2 character who would be running across your screen at rapid rates. The
size of the actual weapon on screen was fairly small, and with the character
standing about 10 feet away (most of the times it they are probably farther
away than the equivalent of 10 feet) ..anyways with the character standing 10
feet away and your screen resolution at 800x600 the actual weapon was only
about 30x30 pixels total surface area... So here we are using a texture of
128x128 to paint a 30x30 surface area ..that is running across your screen at
a sprint? Whats the point. Even if you could see every detail of the weapon if
it were standing still right in front of you, its almost never going to be
doing that and the space and detail are wasted. Save your texture memory for
other items that are either larger or will be seen more often.
- 256x256 is a very large nice area (at the time I am writing this)to map
for anything that you might wish to portray a good amount of detail. MANY
items will be less. Here are some recommendations:
- Weapon texture map sizes: between 32x32 to 64x64
- Armor texture map sizes: between 32x32 to 64x64
- Power-Ups or Items (box of shells, health etc): 32x32 or smaller
possibly. Maybe larger if its an infrequently used item.
- Monsters, Players, Characters: 128x128 or 256x256
- Textures for walls: 64x128, 32x32, 64x64, 8x16, 128x128,256x256 use the
size that best fits the texture. Dont make a 256x256 for a button.
Proper layout
When laying out your surfaces make sure to 'unfold them'
if neccesary. For instance if your mapping a head dont just take a shot from the
front, and from the back. You wont be able to paint the sides of their head, the
ears, the way the hair goes over the ear and sideburns, etc etc. Make sure to
unfold the object so that all faces are visible to the artist. If you don't
unfold your model you will have areas where 1 pixel of texture area will be
stretching across what may ammount to 30 pixels of space when seen on the model
from the proper perspective!
Now lets take a look at the mappings I have created for
the model I showed you above. My goals here was to create a detailed face,
chest, and back, and reasonable detail for the rest of the model. In this
particular instance I plan to paint a bandolier across his chest so I decided
not to create symetrical mappings for his chest or back, as well as I'm thinking
about a scar down one side of his face so that will not be symetrical either.
So we see on the left hand side the 'wireframe' of the
mapings I have created, and on the right hand side we see the texture I've
created for it (displayed here so you can better visualize what each peice
represents).
On the right hand side we see his back at the top, and
just below that his chest. These I have not utilized any mirroring. Also his
face can be see off to the left hand edge, which was not mirrored either, as
well as the back of his head. Everything else on this mapping has been
mirrored, which effectively gave me almost twice the space!
Okay so for explanatory sake let me outline each peice that was mirrored:
- Left and Right sides of head, located just below the face.
- Left and Right forearm just to the right of the face.
- Left and Right bicep to the right of the forearm.
- Left and right foot above the arms.
- Left and right upper legs and crotch below the arms.
- Left and right hand front below the back of the head.
- Left and right back of hands below the front of hands.
- Left and right shin/calf located below the chest.
If these items had not been mirrored, imagine how
small each area would be if I had tried to keep them within the same 256x256
texture! You can also see that I have arranged the peices in a mixed up puzzle
style that allowed me to fit them together for the maximum coverage. A detailed
oberserver might say 'oh well you didnt scale the back of the head up , look you
had 10 pixels of space!' Thats a good observation, but what you may not
realize at first sight is that I scaled all sides of the head (front, back,
left, right) at the same time and the same amount to avoid having odd unmatched
seams when I paint them. So the back of the head theoretically could be scaled
slightly larger but if I did then I would have a hard time matching the hairline
from the side for example.
Finally lets take a look at the almost finished texture mapped and
skinned model to see how its turning out:
Not too bad.
Finally I would like to show some examples of problems that I mention above
so you can see what I'm talking about. I don't mean to be harsh here at all
about the originator's of these items, in fact most are created by poeple who
are good artists in one way or another but there are points worth critiqing, and
therefore should be valuable as demonstrations.
Nore PPM: Mapping Warp due to (non-uniform scaling)
The Nore PPM
for Quake 2 was created for the
Stand TC for Quake2 by Jon "shine" Jones, and mapped and skinned by Chris
"shatterface" Holden.. and addtional skins by yours truly.
So here here are our two example skins for Nore showing both the 2D Skin
(focused in on the problem area) and the skin on the model.
Chris Nore skin (final version)
 |
My nore skin (in progress)
 |
3d shot
 |
3d shot
 |
If you take note of the 2D shots on the top you'll see the skin I created had
a uniform metal riveted strip around the edge, and the one that Chris created
had a strip around the edge that varies in width. The reason becomse apparent
when you display the skin on the model. You'l notice while the 3D Shot of
Chris's model still displays some stretching/warping my shot is incredibly worse
becaues I was unaware of the stretching that was going to happen when I created
the skin. Particularly on the right hand side the metal strip is reduced to 1-2
pixel width when it should be more in the scale of 5-8 pixels wide. This is one
of the factors I'm trying to portray in the things to avoid section. Obviously
you can work around it, but it takes the artist more time, and multiple
revisions to adjust the skin to compensate for warped mappings. A good modeler
or skin mapper will hopefully make the attempt over time to reduce or eliminate
this kind of problem.
I hope this has helped you learn some of the needs a skin artist will have
for when you lay out your mappings. Please feel free to write with
comments, feedback, or suggestions.
Carl "slaine' Kidwell
melkior@planetquake.com