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 Kidwell
melkior@studio-erebus.com
Copyright 1999-2000