|
The
Making of the Giant
This article will
take you through the various stages I used to create Keith Thompson's Giant
character, from initial setup and block-in all the way through to final renders
in Unreal3 engine.
I am still very much
learning this whole process, this isn't necessarily the best way to do this, it
just what worked for me on this project.
I won't be covering the
steps in detail but this should help to explain my workflow and the reasons for
some of the decisions I made along the way. This article assumes that you have
a decent grasp on modeling and texturing. I have always wanted to document this
process from start to finish and I hope it helps some people.
My workflow for this
model was...
I prefer to build a
quick and messy block-in mesh first. This is because I find it a lot easier to
get the topology looking good with a retopology pass. It also allows you to
make design changes as you progress with your model and not be bound by the
shape and topology of a low poly mesh created earlier.
The drawback to this
workflow used to be that you end up with a high res model that doesn't have UVs
assigned to it. The transfer UV's tool introduced in Maya 8 now solves this
problem by allowing you to copy you low res UV coordinates onto you high res
mesh
BLOCKING IN
The
initial block-in mesh is a quick and rough shape that will be used as the base
mesh for the high resolution sculpt in Zbrush. I am not too concerned at this
stage with creating an animateable topology, but just getting the basic shape
modeled. The Zbrush pass is the stage of modeling I enjoy the most so I never
want to spend too much time on the block-in.
I tried
to build the block-in mesh as evenly spaced quads if possible, to help
keep
even poly distribution when I start subdividing in Zbrush. I don't
really worry too much about single triangles dotted around the mesh. If
you download the ActivePolySmooth script (from
Highend3d or 3dbe.com) then you can check at the touch of a button if your mesh
is going to have any problems with pinching when it is subdivided.
I started
with the sections that would be taken into Zbrush for sculpting, using
poly-by-poly modeling. I never really got my head around box modeling and I
find this method is much quicker. The first stage is blocking in the strips
that will define the shape of the body, hands and legs, paying close attention
to the reference images...
- I try
to keep things as simple as possible at this stage. Just follow the front and
side views to define the strips. This gives me a basic cage. from here it is
just a case of extruding new polygons and joining up the various strips to
create a whole shell
- The
hands and feet have more topology modeled into them at this stage than the rest
of the character. I find it much easier to sculpt the tendons of the feet and
hands if you have edges defining their flow.
- I
always prefer to block in the arms using primitive cylinders so I do this last
and join them up with the strips already in place for the shoulders and chest.
After I
joined up the various strips and tweaked the mesh I end up with this....
The
block-in of the rest of the model is very simple. The wooden planks, cannon and
armour are all just modeled from primitive shapes then moved scaled a rotated
into position and hidden for later. There is no need for a retopology pass on
these parts so I made these hard surface parts as accurate as I could at this
stage....
The last
stage of the blocking process is to decide how to split the mesh up into
smaller workable chunks for sculpting and baking maps. As I was going to be
baking my maps in Maya I had to split the mesh into small sections so the final
sculpted parts wouldn't be too high-poly for Maya to handle
Thinking
about where I could hide the seams in the model played a big part in my
decision of how to split the mesh.
- The
large collar could be used to hide a seam between the neck and body geometry so
I could make the head a separate mesh.
- Also
the cloth on the arms would allow me to hide a seam between the hands and the
arms - this allowed me to make the hands a separate mesh too
here is
how I split the mesh up....
Finally I
exported all these parts as separate .OBJ files, using the following export
options....
the
materials "off" option isn't really a big deal, but this way it saves
having a separate .MTL file for every section you export.
HI RES MESH
ORGANIC SECTIONS
All the
high res modeling for the organic sections of this model was done in Zbrush3.
The high res hard surface parts were modeled in Maya. There are hundred of
excellent sculpting tutorials available for Zbrush online, so I will focus on
how I imported and prepared each part of the model for sculpting.
1. Open Zbrush. Press the import button and
load up one of your OBJ exports. Drag it out onto the canvas and press 'T' to go into Edit Mode
2. In
the tool menu I collapse the 'MORPH TARGET' submenu and click on 'StoreMT'
3. In
the geometry submenu I then divide the mesh a couple of levels with the smooth
modifier turned ON. You will notice that the mesh loses quite a
lot of volume from the subdividing process
4. Finally, slide the SDiv slider back down
to the first level, and in the MORPH TARGET submenu hit the "SWITCH" button
5. Now when you slide the SDiv slider back
up to 3 you will notice that the original volume and shape has
been returned to the subdivided mesh. You are now ready to sculpt!
When I'm
sculpting I only really use the Elastic Brush, Inflate Brush and Smooth. The
Elastic brush adds volume to the mesh while maintaining all the previously
sculpted details underneath which I find more intuitive to work with than the
Standard Brush.
For me,
the best results come when sculpting at very low Zintensity. I rarely
go above 20 intensity. Gradually building up low intensity strokes on
your mesh helps to avoid
puffiness that you see in a lot of Zbrush models
A lot of
sculpting tutorials online start with a tweaking pass where the major forms are
moved around until all the proportions are correct. In this instance I had
already built the base mesh to be as close to the intended shape as possible so
a tweaking pass wasn't nessecary.
While
sculpting I think it is very important to get the absolute maximum detail from
every level before subdividing
again. I usually get to a point where I think its time to subdivide, then set a
timer for 1hour and force
myself to work on the existing level for that extra hour. This also helps to avoid the dreaded
Zbrush puffiness.
Once the
sculpts were finished I exported each section into a folder as an individual
.OBJ file.
The
imported head and hand sections and resulting sculpts through 5 levels of
subdivision......
Once all
the separate sections were sculpted I imported them all into Mudbox. I selected
all the parts at once and exported them as a single mesh. This is the mesh that can be used to render
the full high poly model in Zbrush for presentation.
I used
Mudbox to combine the separate sections because Mudbox recognizes world
coordinates, so it is simply a case of importing, selecting and exporting. In
Zbrush each section has to be drawn out, moved, scaled and rotated into place
as a subtool.
HARD SURFACE SECTIONS
The hard
surface sections of the model are really easy to produce. I use Maya's basic
modeling tools.
For the
collar piece...
1. I started by selecting faces from the
low poly mesh, duplicating them and moving them outwards from the original
2. Then extrude the new faces to give the
new section some depth. and move it back into the original
mesh
3. I repeated this
until I had made enough individual little pieces. I then beveled all the
sections (with 2 segments on each bevel) and applied a mesh smooth
(Exponential - 2 levels) to give me
the final collar.
This same process can be repeated with all the
hard surface sections. The crisp edges obtained from beveling and smoothing
give excellent results when baking normal maps later on.
Once I
had all the hard surface sections worked up into high res meshes I combined
them with the organic sections give me my complete hi res mesh...
RETOPOLOGY
Next I
rebuilt all the organic sections with topology that represents muscle flow and
is also animatable
I first
saw this method for retopology passes on Zack Petroc's
excellent Human Anatomy sculpting DVD from Gnomon. Zbrush3 has since introduced
its own retopology tools but I still prefer to work in this way, as the new
tools in Zbrush seem quite clumsy in comparison.
1. I start by importing one of the high
resolution sculpts I finished earlier into Zbrush. Hitting T to enter
edit mode, then under TOOL > TEXTURE hitting the AUVTiles button. This is a quick and easy way of assigning UVs to the
mesh, each polygon is assigned a square
of UV space based
on its size in the mesh.
2. In the Texture menu, I set the texture
to a nice high resolution, in this case 4096x4096, and click
"new" to create a new texture. I would recommend using at least
2048x2048 for this as the
topology lines can get quite messy at lower resolutions
3. After Zooming close into the model I
drop it into Projection Master by pressing G, and select just the colour option, with
Fade turned off
4. - The first thing to do is make
sure Zadd or Zsub are not selected so
the mesh shape isn't changed by your brush strokes
- Select the simple Brush from the
brush palette
- Choose a nice sharp alpha shape
and the freehand stroked
- Choose a dark colour for your
topology lines
- Now I can simply paint on my ideal
topology, changing my colour to white if I want to erase any lines. I try to keep the lines as
straight as possible as they represent poly edges. Curved areas have to have enough resolution to
support their shape as does the silhouette of the character.
5. I just keep working around the model
until the entire topology is painted, a lot of reference of other
artists work is needed here. This is where a retopology pass really seems
worthwhile to me, as I
can experiment with various topologys and just work in a trial-and-error style
until it looks right. This
amount of investigation work put into a 3D mesh would take a lot longer.
When its all done I open the texture
palette, Flip Vertically and Export.
(Textures going from Zbrush to Maya
always have to be flipped vertically :/)
6. Before shutting down Zbrush I export
the mesh as a new .OBJ file. This mesh has UVs assigned
to it and I need them for the painted topology to display properly.
7. Back in Maya.......
-the new UV'd mesh is imported and
put into a reference layer
-hardware texturing is turned ON
-the painted topology map assigned
as a texture.
-back face culling is also turned ON
I find this part fun as its like
organic modeling for idiots. Using the Create
Polygon Tool (Holding down the 'V' key to snap to points) I simply snap points to the painted
topology. The final
result is like a patch work of polygons like this....
8. Merging the vertices gives me a clean
animatable mesh. I usually go round the model once with the MOVE
NORMAL TOOL and tweak some points
using the high poly mesh layer as a reference,
and making sure the low mesh fits around the high one as tightly as possible. I
have a bad habit of tweaking
meshes to death but using this method the low mesh shouldn't need too much more work.
9. I repeated that process for all of the
organic sections, and for the hard surface I just import the parts I modeled for the original block-in
mesh. Once they are all put together I have my final low poly mesh. At this point I had to collapse a
few loops and merge some verts to get my mesh
to my target 10thousand triangles.....
UV MAPPING
This
section will be short and sweet as there is nothing really special about my UV
mapping workflow. I have tried quite a few pelting and unwrapping plugins for
Maya but I always come back to laying out the mesh by hand. 95% of my
projections are using Planar Project and then just stitching pieces together
and relaxing the UVs.
I always
use the channel box to input identical Projection Width and Height values. This
keeps all the projections even.
For this
model I initially projected all the UVs as evenly as possible....
Then I
had to think forward to the baking and texturing stages. Thinking about how I
would paint textures, and how the model would be used in a game I could make
decisions on which parts needed more texture space than others. For
example.....
- the
face would usually be given a lot of UV space but for this character the face
is mostly hidden by the mask and straps
- Also I
planned on using the same overlays on all the various skin textures so all the
skin sections had to be around the same scale.
- I
thought the planks on the armour would look bad if there was no obvious wood
grain texture to them so I assigned them more space
- The
feet are mostly covered by planks, but as this character is a giant they will
be the nearest thing in view to any player in a game, so they were assigned a
bigger space in the UVMap
- The
skin areas would be covered in small scars so I didn't want to share UV space
and have the scars identical on both legs and arms
- The
left arm has ropes cutting into it so that needed its own UV space
Once I had
decided which parts were a priority for UV space I did the bit I hate most of
all...laying the UVs out into 0-1 space...
RIGGING
As this
model was just a personal project I didn't want to spend too much time on the
rig. Just enough to get the character posed. The protruding belly on this
character was difficult to include in the rig as it was held in place by the wooden belt
I used a
very basic rig, with the armour pieces parented to the nearest bones...
As you
can see, its not going to worry Jason Schleifer
anytime soon, but it does the job for this project. I tend to rush
through the rigging part to keep myself motivated. I learned rigging from an
ancient Gnomon dvd and haven't really moved with the times in terms of new
tools
I modeled
and rigged in this pose rather than a Tpose because in my limited experience it
is easier to get the shoulders deforming well in the semi Tpose. This pose
means that the hand joints can pull on the verts in the legs, but I find it
easier to fix this problem than doing intricate weight painting in the
shoulders.
I also
find it helpful to keep a script on my shelf to snap the rig back to this bind
pose incase all else fails I know I have that there to reset the rig.....
1. Select
all the joints in the skeleton
2. Open
the script editor and add..... rotate 0 0 0 ;
3. Save as a script
I then save this rigged file out and dont touch it
until my final presentation stage. The next stage is baking maps and I dont
need any rigging information on the mesh to do that, so I revert back to using
my unrigged low poly mesh
BAKING MAPS
The first thing I did before bakign any maps was
save a copy of my UVmapped low poly mesh as "BakeTemp.mb". This meant
I could chop the mesh up into sections and have a backup master of my low mesh
to revert to.
The first thing I baked was the head, I imported the
low and hi res sections. These still had their world coordinates assigned so
there was no need to change the positions. After a few tweaks on the low mesh I
open the Transfer Maps window...
I baked a normal map and ambient occlusion map for
every section of the mesh using the following
settings.(1= low poly mesh, 2=high poly mesh) I have never had to change
these settings for any objects (apart from the map size) so they should be good
for most things...
For the hard surface sections I could bake multiple
parts at once to save time. By splitting the object up before I baked the maps
I could avoid the errors that appear inthe normal maps from intersecting
geometry. Here you can see the hi and low meshes for the Giant's mask split-up
for baking....
Once I had all my little individually baked
sections, it is just a case of SHIFT+Dragging them together into one complete
map in Photoshop and cleaning them up slightly. Be careful...this next diagram
might blow your mind...
Cleaning normals maps isn't as daunting as it seems.
The Smudge brush at 75% Opacity and Spacing turned ON should wipe away most
small problems easily.
I check each section on my model individually and
cleaned up the maps as I went along. I find it much easier to find and fix
errors when I'm concentrating on a small section of the mesh rather than having
a 2048x2048 maps riddled with errors to pick through.
Once I had my Ambient occlusion and Normal maps baked and combined I baked an Occlusion pass
on the entire low poly mesh. This is then multiplied over the top of all the
other layers at around 20%.
It is also a good idea to colourise occlusion maps
to compliment the surface they are sitting on top of. For example the skin
sections on this character have red occlusion maps, the metal parts have navy
blue occlusion maps. Multiplying black occlusion maps over skin is very obvious
and doesnt help to sell the skin as an organic surface.
with the baking finished I had the base for my
textures.....
TEXTURING
Some people like to work in passes on their
textures, I prefer to work at each individual piece until its finished and then
move onto another piece. Again there are hundreds of texturing tutorials out
there but I will concentrate on how I made the Giants skin. The details may not
come out in these pictures but they should give a rough idea of what I'm doing.
For the skin sections.....
1. I start by gathering references, in this case I
was heavily inspired by the face-huggers skin tones in the Aliens movies, and
CG models like "The Orc" by Lacopo Di Luigi
2. I set the occlusion layer for the skin to
multiply at around 50% and lay down a base colour, in this case
RGB:166,160,144. A lot of texturers like to lay down a midtone first and then
add dark and light tones, I prefer to start with light tones and work by
darkening them down
3. Next I add colour passes. I saw a guy using this
technique at an Art
School show using an
airbrush and thought I would try it in Photoshop. I like the results and the
variations it gives. Basically I do three seperate colour passes on three
layers (blue, green, purple) using very low opacity brushes. I simply add those
tones where I feel they may appear on the skin and finally smudge them out a
little
4. Next I add a blurred layer of Blue speckles and a
layer of pink/red speckles on Multiply at around 40% to add some variation to
the skin surface. I also add a subtle overlay of a concrete surface to give
some grain to the skin
5. Next up I whack on some nipples, and 5 hand
painted dirt layers using various grunge and dirt brushes. I try to keep these
layers subtle at this stage so I can tone them up or down as needed later on
6. Then I add details, various layers of spots, pock
marks, cuts, scratches and stains
7. Finally I adjust the contrast, saturation and
levels until I like the look, and I have my final skin! oh the joy!
I never really have a set workflow for making skin
textures, I like to just piss around until it looks ok. I always keep
everything on seperate layers though. The final levels and saturation
adjustments really depend on the engine/renderer you are aiming for so testing along the way will
really help.
From here I flatten my skin layers and drag it into
my Specular map.
1. CTRL+U and shift the hue to get a deep blue
colour
2. Next I ran Noise and Paint Daub filters to add
some fine grain, specs and detail to the surface
3. Finaly I made some adjustments to the Saturation,
Levels and contrast. Again it helps to test this in the engine to see how its
looking and what needs changed
The last piece in the puzzle is the normal map
overlay. This can be any picture/texture with a fine grain. I just ran one
through Ryan Clark's ridiculously good CrazyBump Beta program to extract normal
information out of it. I reduced the global intensity and removed all but the
fine detail to keep it subtle.
This was then saved as a
.TGA and overlayed on top of the baked normals. Ben Mathis has an excellent
tutorial covering this technique at.......
http://www.poopinmymouth.com/tutorial/normal_workflow.htm
So thats about it for
the skin. I use this DIFFUSE - SPECULAR - NORMAL
workflow for all parts of the mesh until I am happy with the textures.
PRESENTATION
I used this model as
an opportunity to try out the Roboblitz editor and the unreal engine for
rendering. I was really impressed at how artist friendly it is and stunned at
the quality of the graphics in-game
I am totally new to
working with this editor and still have it all to learn. I am at no where near
the stage of helping other people to use the tools, so I will only go through
the rough steps and setup I used to produce my final image.
3DBuzz.com has 4
excellent free introduction videos for Using the Roboblitz Editor, made by Adam
Hettrick
1. Pose the mesh in
Maya and Export using Actor X or .ASE exporter plugin
2. Import the mesh
and textures into a new package in the Roboblitz Editor
3. Build the shader
in Unreal's Material Editor
4. Build a basic
subtractive geometry cube as a level and apply textures to each surface (for
the walls and ceiling I used the BLACK_NO_SPEC_mat material that can be
found in the PROP_hub package uncluded with Roboblitz. This effectivley
makes the walls and ceiling pure black
5. Import the Giant
mesh, add a PlayerStart and Setup some lights
6. Maximise the
perspective viewport, hit "G" to hide unseen actors and take some
screenshots !
So thats about it:) I
hope this helps some people in some way. Thanks for reading.
|