Making of 'Red Hulk'
Since childhood, I've been a big fan of comic books and have always tried to include some of this style in my work. I recently had the opportunity to participate in an annual contest hosted by renowned GameArtisans.org site, the Comicon Challenge 2009. The challenge consisted of creating a representation of a favorite action character from a comic book, no matter if it was hero, heroine or villain. As this is a competition specifically related to character creation for games, there were some restrictions like not being able to use more than 10k triangles in the final model and having to create 2048x2048 texture maps.
One of the comic book and movie characters and that I have consistently followed is the Incredible Hulk. I've always wanted to make one that looked as real as the movies, but had the likeness of the comics. But because there are so many versions created by different artists already and an equal number of representations in 3D, I thought about doing an unusual one.
Thus was idea of making Red Hulk was born. He's a character not well known in movies or games, or even in comic books. The character is an evil version of Hulk, created by Jeph Loeb and Ed McGuiness (one of my favorite comic artists) and according to them, he is more aggressive and intelligent, besides having all the abilities of Hulk. The main difference with the original Hulk is that Red Hulk does not become stronger with anger, but rather radiates increasing levels of gamma radiation. In some editions, he is also called Rulk to distinguish him from the original Hulk character, but personally I prefer the original name.
Keeping all of this in mind, I began searching and collecting images that I could use as a references for creating my own version of this strong character. Then I began work on this new challenge.
High Poly Modeling and Sculpting
The first thing I do with this kind of character for games, is to create a high-poly model, which later on I can use to transfer all the geometry detail to the texture maps.
Starting from a box and by using the polygon editing tools, I began creating a base mesh in Max and exported it as an obj file. Once inside ZBrush, I imported this basic form and began to move vertices with the Move brush, looking for a more defined shape (Fig.01). When I was satisfied with the overall proportions, I retopologized it, always trying to keep a balanced number of quad polygons in the model's entire surface. From this model I created other parts such as the pants and hair, making a selection by using the CTRL key and drawing a mask selection with the Standard brush (Fig.02). Once I'd made the selection (shaded in the model) I used the Extract function to create the new object, which was added automatically to the SubTools panel (Fig.03).
When I had all the elements organized, I started working on the overall body anatomy. First I enabled the symmetry button in the X axis and began to move vertices, looking for a good balance in the proportions. Then I added a new subdivision level to the model and began to shape muscles by using the Standard brush (Fig.04). To achieve a better definition, I subdivided the mesh again and kept using the Standard brush in conjunction with the alpha 39 to accentuate the separations (Fig.05).
Once the overall anatomy was defined, I started working on each specific body part, starting with the head. From the beginning I was looking for an extremely angry expression and to get this I had to work hard on his face. By using brushes such as Standard and Inflate, I started to give volume to the eyebrows area, eyelids and cheeks and by using the Slash1 brush I added and defined the expressive lines of the forehead, nose and the contour of the mouth. To define the lips I used the Pinch brush (Fig.06a & 06b).
To sculpt the hair, I added three subdivision levels and used the SnakeHook brush to pull the vertices gently from the surface. Then a further subdivision was necessary to define the hair style (Fig.07). With the pants I followed a similar process; first I used the Move brush to give shape to the rips, then I added a new subdivision and once again used the SnakeHook brush to pull the mesh, and finally I added some folds, making use of the Standard brush with the alpha 39 (Fig.08).
There was still work to be done on final details of the body, so I subdivided once again and made use of the LazyMouse mode to create veins, arteries and to define the anatomy further. Finalizing this session, I added some details such as blemishes and wrinkles on the skin by using different alphas, some of these custom alphas (Fig.09a & 09b).
To create the pedestal, which was a section of damaged road, I used a similar procedure. I began by creating a basic form in Max and then I exported it to ZBrush to sculpt and add final details through alphas (Fig.10).
Low Poly Modeling and Normal Mapping
Now it was the turn of the low poly model. First, I placed the high poly model and went down to a medium subdivision level, trying to keep the overall detail. Then it was exported as an obj file to open it in Max and once there I overlapped it to the initial base model. From this model I made a mesh with a new topology by using Polyboost and Max's polygon editing tools (Fig.11).
Once this model was ready, I started with the UV mapping. Although I usually use the unwrapping tools of Max, especially the Pelt tool, I also sometimes use Unfold3D, a quick and effective tool when performing these tasks. What I did was mark cut lines on key places such as the neck, trunk, back and on the inside of the limbs, trying to make the fewest number of divisions, to keep these areas recognizable when painting and creating the textures (Fig.12).
When I'd finished this task, the model was exported back to ZBrush where I created the normal maps. The importance of these maps is that they transfer all the detail created in the high poly modeling stage to the low poly model, making it appear to have more detail in geometry than it really has. It's just a visual effect, which is effective from any point of view. This allows you to add a high level of detail to low poly models, which explains its continued use in the games industry today.
To start I placed the high poly model without mapping and went down to the first subdivision level (Fig.13). Then I used the ZMapper plugin included with ZBrush. There, I used the Mesh Current Capture function that is under the Projection tab. Normally this is done in order to capture all the high poly detail information through the polygon normal directions (Fig.14). Then I imported the low poly unwrapped model and turned on the ZMapper again to project the normal map on this mesh. To do this, first I checked the Tangent Space map type and used the Create Projected NormalMap function (Fig.15). This procedure was repeated with each of the model parts to get the final normal map. As you can see this map shows all the detail of the high poly model (Fig.16).
With the pedestal I followed a similar process, however in this case I used the same model to create the normal map (Fig.17). After creating this normal map, I exported the low resolution mesh again to Max and then I divided it into pieces by using the ProCutter tool included in 3ds Max2009. This tool helps the user to create several sections of an object from cutting lines by drawing Splines over the model. Finally, I moved the pieces and added the tubes I created in a previous process. (Fig.18)
Next, I went back to ZBrush and started to work on the pose of the model. I used the useful Transpose tool, which allows us to move, rotate and scale parts of the model only by making a selection through masks. Although there is a more advanced technique to create skeletons and rigs using ZSpheres, this is a quick way to try different positions and in this case was appropriate to pose the Red Hulk model (Fig.19).
The texturing process was straightforward. I just opened the model in Max and assigned a Multi/SubObject material. Then I assigned colors according to each part, to differentiate between them on the map. Next, I used the Render To Texture feature to create the base diffuse map (Fig.20).
The generated map was opened in Photoshop to paint the details and to mix with other textures. Initially, I opened the normal map and modified the levels, curves and saturation and then it was blended in Soft Light mode (Fig.21).
Taking a copy of this map and then tweaking it again helped me to apply details, highlights and shadows to the texture. Then I touched up it by using the Photoshop paint tools (Fig.22).
I added more detail to the map, making use of some brushes and mixing it with some other textures. I also worked with a color palette with similar tones to the initial colors to create a uniform graduation, especially for the skin tones (Fig.23).
To complete this process, I added some details of stains and imperfections on the skin and finished working with the AO (Ambient Oclussion) map. To get this map, I went to Max and used the Render to Texture dialog again, but this time I used the high poly model for the projection. Finally it was applied as a layer in Photoshop in Multiply mode (Fig.24).
Real-Time Rendering and Compositing
New toys always make me happy, and one of the things I enjoyed a lot about this project was the fact that I got to try, for the first time, Toolbag. Toolbag is a simple tool that uses the Marmoset game engine and includes a real time model viewer. In my professional career I've had the opportunity to work with some advanced game engines such as Unreal and Unity, and although these are very powerful tools for game development, they are not so intuitive or easy to use. With Toolbag I was able to quickly test different camera angles so that I could decide which was more suited for the final presentation.
I started placing the model on the pedestal in Max and making small adjustments, such as the position of the feet and the location of the pieces of the road. These were then exported as an obj file so that I could open it later in Toolbag (Fig.25).
Once inside of Toolbag I went to the Material Editor and imported the model. Then I applied a Phong material and added the textures created in the previous stage. With the shader set up and render options on default, all I did was take some screen shots (Fig.26).
From there, everything was very easy and quick. I just changed some things like the viewpoint of the model and direction of light and instantly, I got the real time render (Fig.27). That was how I was able to get the final images after adding some post effects and adjustments included in the application (Fig.28).
The final post work was done with Photoshop. In this image I wanted to capture a moment of the rage of Red Hulk, but with the look of comic books. To get this, first I created the background and touched it up a bit. Then I placed the rendered image on top (Fig.29) and tweaked the levels, saturation and color balance a little. At the end, I also added some shadows and glowing effects.
Well, this was whole process that I went through to meet the challenge of creating the Red Hulk (Fig.30). This involved approximately 70 hours of hard work, which were eventually well rewarded with the great reception it got. Thanks and I hope you have enjoyed this Making Of.