Wednesday 27 April 2016

Thanos


For the project I knew immediately that I would want to do a character. Even though in the other group project I had also chosen to do a character, this was my opportunity to choose a character to model that I had an established interest in. I knew at this point I would want to do a character that I not only had some kind of interest in, but I specifically wanted a character which was wearing some kind of armour so I would get a mix of organic shapes and hard surface in one. I chose Thanos for this because he fit all the criteria, plus with the recent Guardians of the Galaxy and Avengers films, there were a lot of high resolution CGI examples for me to take inspiration and reference from.


I gathered pretty much every single picture of Thanos I could find, from the pure cartoon early comic pictures to the new film CGI ones. I noticed immediately that the design of him and his suit/armour are pretty much always different, so I would have to choose a certain composition that I liked. I chose the main one from a recent comic example as my favourite, but there weren't many different pictures for that suit. I go into this armour selection in greater detail in my previous blog post.


I wanted to primarily work in zBrush when creating the high poly version. My plan was to use a workflow I had not used yet which I thought would be the most efficient way of working. This work flow was start in zBrush to complete the mesh shape, design into full high poly. Then I would take a decimated version into Maya and use Quad Draw to create the low poly meshes by hand and UV mapping as well. Next would be to bake the maps using xNormal, and touch them up in Photoshop. Then moving to Quixel Suite to do the texturing using a PBR workflow before finally setting up a scene in Unity to display the final model.

So to start off, I went to zBrush to create the initial mesh. I wanted to create a Thanos version which was semi-realistic and semi-cartoon, so he would need to have more exaggerated hands, jaw and muscular groups as is common to Thanos in most comics. I used zSpheres initially to get the overall shape. I was mostly doing it by eye here because I didn't have a singular reference, more just a collection of different images. I finished placing all the zSpheres and created the adaptive skin to complete the first mesh.


I then subdivided a couple of times to start general reshaping and get some muscle groups detailed in. I used the Move, Clay Buildup and Smooth brushes only for this section. I spent a while getting the initial shape of the anatomy right, trying to get that semi-real body shape I was looking for. When I was happy with an initial shape, I masked off the front of the face, inverted it and then subdivided a few more times so I could get more detail into the face. I added details for initial muscle groups, and some overall facial features until I was happy that my initial mesh was good enough to continue with.



Looking at the reference I could tell that there appeared to be an 'under-armour' type suit which would need to be detailed as well as all of the armour on top. At this stage I was trying to figure out which would be the best method to use. I had seen a few tutorials about how to do hard surface armour on DigitalTutors, a few using panel loops to separate pieces and thought the seams on the under armour might benefit from that technique. That meant poly-grouping the entire model. This was a very long process but I decided that it would be worth it if it would look like the examples. I thought I would detail all armour parts at this juncture, just in case it did look good and I could use some of the panel looped pieces as main armour pieces as well down the line.


I then panel looped the whole thing and quickly realised that the mesh would have needed to be a much higher resolution when first poly-grouping to get the result I thought I was going to get. Stupidly I didn't do a tester area first so I had wasted a lot of time here. I used the smoothing function when panel looping however and it gave me enough to try to work with for a bit. I selected 'mask by poly-groups' from the mask menu and then started to pull out the panels using a large sized Move brush to see if I could salvage this attempt by fashioning the armour areas to the correct shapes later.




I decided that method was a bit crap and I wasn't sure I could get it to look the way I wanted so I got rid of that copy of the mesh and went back to the original to try something new. Another common technique I had seen used in tutorials was the mask then Extract feature. This was useful because it was non-destructive on the original and created a new subtool for each extracted armour piece. I went round the model quickly and painted each armour area roughly on the mesh and then extracted each bit. This appeared to work a little better so I continued and covered the whole mesh. I knew these sections would need a lot of work later on, but for now they seemed good enough.



After a break and some more reference studying I had decided that the anatomy was wrong, I needed to make it slightly more realistic. I wanted it to be more like a human body-builder rather than a cartoon body shape. I also decided that the head and face needed a bit of work. On top of this, I had once again decided that the armour looked crap and I would need to find another method for making the pieces the correct shape while still looking like hard surface. But before the armour again, I would need to reshape the anatomy. I made the head longer and thinner and made the jaw less pronounced. I lengthened the legs, to put them back into realistic proportions. I also lengthened the arms and made the hands smaller. This was more on the realistic side now but still unrealistic enough to remain a bit comic-like.



Next, I wanted to try and stick the anatomy and face more to the main reference image I was using. In the image, Thanos' jaw is uncharacteristically narrow compared to almost all other depictions of him. I decided to try and make the head and face shape much more like that version and began to sculpt the details so it would resemble that a bit better. I made most of the facial features much more narrow, narrowed the eyebrows and cheekbones, made the eyes less rounded and the jaw and chin much thinner.


When I came back to the model the next day, when I first looked at it I realised he now looked far too human. Even though the reference I was using made him look fairly human, I decided again to swing the other way slightly and change his head shape and facial features to be almost like an exaggerated human instead. I re-widened his head, jaw and chin, but kept his eyes and nose small. Finally I was happy with the way he looked facially. I had the balance between reality and 'comic-ness' as it was in my head. I put some little more little details in like some rough eyebrows and and eye folds etc.


I also wanted to reshape his body again to go with his new head. I modified it all a little to try to create the same semi-real look I was aiming for. None of the body anatomy would even be shown in the final model, but I wanted the underlying shape as accurate as possible so I could more easily replicate how armour might actually sit on top of the figure.


I decided to try the extraction technique again for the armour so went through the same process and blocked out the armour pieces roughly. I then positioned them in the correct places without spending too much time trying to complete any of the individual pieces.


I thought it all looked ok for a base, so I then repeated the panel looping technique this time only for the under-armour parts.


On the tutorial videos I had watched, they showed a lot of techniques for moulding hard surface shapes using Trim Curve combined with Dynamesh and then using the Flatten and hPolish brushes to get the desired final look. I just couldn't get this to work with these extracted pieces at all. The topology was so messed up on these parts that even the combination of Trim Curve and Dynamesh wouldn't make the edges sharp enough. I even tried using zRemesher on some parts when they were close to being the right shape in hope that it would give me a usable topology but instead just changed the shape of some of the pieces way too much. It was all becoming very unmanageable and I was very close to doing these armour pieces in Maya.

Determined to not go back to Maya so soon, I researched many more tutorials for other hard surface techniques until I found a very interesting brush combination I had not seen before. The first was the Topology brush. To use this, you draw lines across the surface of the mesh in a typical check pattern. When you tap the pen again, it creates low-poly geometry in quads of the size that you drew (the more lines you draw the more subdivisions you get). The advantage to this was that I could get the hard edges I needed and the correct topology of the armour pieces. The disadvantage was that the shapes were no longer accurate to the armour so would need work to get it the right shape. This is where the zModeler brush comes in. With that brush you can use all the standard geometry tools from other programs on your zBrush geometry such as, extrude, edge loops, moving vertices, creasing edges etc. So with those two brushes combined, I could draw on the shape of an armour piece, create a low poly part, modify it to be accurate with the reference, add edge loops where I needed and then crease the edges which I wanted to stay sharp before subdividing. I then went through and replaced all the extracted armour parts with the new low poly versions. It took a long time but I think it was worth it, it looks much better like this.




With all the armour pieces in the correct place, I could start adding details. I could now subdivide each part many times and lightly smooth the creased edges so they remained looking hard surface, but more natural. With the softer 'hard' edges this also helped to give it a more comic book looking feel as well. I added the four different parts to each finger, shaped them into the correct form overall and left them until after they were copied. I started also adding large details to the armour pieces, indents and such. The references weren't so detailed in many of the places I needed them to be so I had to be creative and add details I thought fit the theme. I did these mainly by masking and area, sharpening the mask, inverting it, then either pushing the area in or pulling it out. For some I used the transpose move tool to get a clean direction and for some I used Inflate/Deflate in the deformations menu instead.

I also used the slice curve tool and made subtle panel loops on some areas and pushed them in while masking by poly-groups to create finer details. I continued this over the whole model until all armour pieces were high poly and detailed.





For the mesh part I just used a very low poly box and added surface noise to it to create the look of mesh. I would subdivide it and bake that detail in just before decimation.





To be completely done with the high poly I needed to add all the extra details which would make the detail in the normal map. I subdivided the head up to about 7 million polys and cut in more wrinkles with the Dam_Standard brush. I also turned symmetry off at this point and started changing the expression a bit to make Thanos asymmetrical. I gave him a much larger grimace as well, as I think it fits his character better than to have a neutral expression. As this character's face won't be rigged and animated, it would be good to give him an expression now for the final presentation. I added lots of small wrinkles with some stock alphas and tried to replicate some of the creases of the lips and around the eyes. I also added some pores to the centre of the face, but I may have over-done the detail. It looks fine from a distance but looks a bit strange up close.


I also added a bunch of asymmetrical scratches and armour damage. Nothing too detailed, more like the larger chunks cut out of the corners that you see a lot in Pixar films and other more cartoon-like films and games. After that was finished, the high poly was done!


Next came Quad-Draw in Maya. I had recently finished the very, very long Quad-Draw process for the Golem I did in the other project, and I thought that this model may be slightly easier, as most of the details should be normal map rather than geometry. I was wrong! It took ages again, so many nooks and armour edges that needed to be fully modelled out as geometry. The hands and legs especially took a long time. The finished 'low poly' mesh was 39k polys, so that means I had Quad-Drawn out almost 20k by hand. Even the face was asymmetrical so I had to re-organise and relax both sides of that. It took a lot of hours to complete, but was worth it in the end I think.










The next stage was to UV map the whole thing. I wanted the most resolution reserved for the face and eyes. I also wanted more for the chest than the legs. I was planning to only need two 4k maps for the whole thing so the head, torso and shoulders on one and arms, legs and skirt on another.




After positioning the maps all very carefully, to maximise space, I realised that I left the shoulder UV's off the screen and so needed to give them their own sheet annoyingly. It wasn't too bad in this case because I could easily use a 1024 map for them.


Next step was to do colour IDs and do some trial maps. I had purposefully separated the legs, arms, skirt, torso, head and shoulders into different parts to get a much better bake. I had previously completed the Golem for the group project and had done many trial bakes to get the best results and noticed where the bleeding was, so tried to minimise that for Thanos.


While making the colour IDs in zBrush, I realised the skirt chain mesh part wouldn't dye the full colour I set it to. I did a quick export and trial bake in xNormal to see if it effected it, and it did. I needed to change the approach without modifying the geometry shape. I remembered that I had watched something about MicroMesh a while ago, so I hunted down the tutorial to see if I could apply it here instead. I took the subtool down to its lowest subdivision and used the zModeler to manually even out the topology so the MicroMesh could work evenly. I wanted to make a mesh-like chain part which repeated so I created a small hatch pattern with low poly geometry. I then merged and Dynameshed them to create the smoothed out corners.




After I Dynameshed them, I lowered the polycount to as low as I could while still retaining the shape using zRemesher, then saved the zTool. I then selected the subtool that I wanted to use the Micromesh on and applied it to the skirt area. The Micromesh came out quite well, even though that piece was quite high resolution now, it was good for exporting as the high poly. Plus, the colour ID remained the same throughout the mesh it which is what I wanted.



Next I baked all the maps in xNormal, I only had to do each part of the model once, as they are all in sensible small pieces. After the bakes were complete, I took the low poly OBJs into Unity to test to make sure all the normals, colours and AO were all looking correct. I was surprised how good it looked even with a simple light source and no textures. I then went over the model and opened up the maps in Photoshop simultaneously and when I found a spot which looked funny or was incorrect, I modified it by hand to fix the problems. I could've spent all day doing this as there were so many little overlaps when you zoom in close. But I stuck to prioritising the biggest culprits and fixing them only. 








It was at this stage where I realised I had made a huge error. When making the low poly I had intended to match up the vertices so when the maps were baked, I could do back and attached most the pieces to the same mesh. That's when I realised that I had overlooked that I couldn't attach the arms to the torso because the maps were on different sheets. I wanted to rig and pose the character for the final screenshots but with all these gaps in the mesh it would not be possible. I decided to make some 'underskin' to fill in the holes so it wouldn't be possible see through the mesh when the limbs moved. I took the original mesh I had made in zBrush and cut out the necessary bits, merged them and exported into Maya. In Maya I optimised them a bit a stuck them on the UV sheet with the shoulder pieces. I planned on making them the same colour as the rest of the 'under armour' so they wouldn't really be visible.


The next stage was to take it into Quixel to texture. This part was difficult, because I had to find the balance between realistic and cartoon textures. So the skin I had to make slightly less shiny than usual. I had a few examples of the type of texture 'realness' I wanted to replicate and I noticed that a lot of the textures were quite similar. Most looked quite like they were some form of rubber, even the metals. So I wanted to be careful not to pick realistic textures, or if I did, then dial back the gloss so they appeared more rubbery. The skin and the rubbery looking purple armour pieces were ok, but the gold metal was very difficult. Too much in one direction and it looked like plastic or rubber, and too far in the other at it looked too realistic. I spent a long time tweaking the settings in the 3Do renderer trying to get it to look good in all different light settings. I was happy with the result I got and so it was time to export to fully view what it looked like in-engine.





First though I exported the maps to normal PBR so I could display them in Maya with the Stingray PBS shader. Looks ok even with the standard viewport 2.0.


My plan was always to rig and pose the model to display in engine, This is the main reason I had done so many pose studies in my sketchbook. Due to a crazy few weeks personally for me, I didn't have time to fully complete this section so I had to leave it out and just import the model as it was into Unity.

Due to these same time constraints I didn't really have time to learn and set up a whole Unity project with good lighting and environmental effects, so for this I used Unity's own The Courtyard demo project which is free to download at: https://www.assetstore.unity3d.com/en/#!/content/49377 

I modified it a bit, deleted some parts from the scene where I wanted to display Thanos, as well as removing all the unnecessary objects from the scene, and also some functionality. I then moved some more lights into place quickly to show Thanos a bit better. The scene is particularly useful because it has a day/night cycle worked into the build. I included a controls.txt in the build folder for how to change lighting, remove HUD and pause/modify the day/night cycle.


I then captured some final images in scene. Annoyingly, they still don't look as good as the Quixel Renderer! 







I learned loads of different skills during this project, primarily to do with hard surface. I was a bit annoyed that I spent so long re-doing the entire armour set 4 times over. This wasted time early would have really been useful later on, because it would have given me more time to rig and pose the character. Having said that, I learned so much about hard surface modelling in zBrush now, I even know the strengths and weaknesses of each method having pain-stakingly experienced them first hand.

I also learned a bit about high-poly facial modelling as I watched a tutorial from artstation.com  about a guy who did a high resolution sculpt of Judge Dredd. He took his face up to 12 million polys to do the high resolution creases and details. He showed a few techniques and brushes he used which I tried to replicate. Brushes like Dam_standard, and Standard with some of the alphas to get creases and pores. My face ended up at about 7 million, so not as high res, but good enough to show the details which came out really well in the 4k normal map.

I made a lot of mistakes during the project, many with the anatomy shape and armour which I resurrected along the way. I was really annoyed with myself on two of the later mistakes however. First was missing out the shoulders from the UV sheet. I could've changed it, but it would have taken a fair amount more time and I was happy with the resolution of all the pieces I currently had. The second and probably biggest mistake and regret was not originally putting him in a T-Pose. This caused the gaps in the areas where the meshes connected of the armpits etc which I then had to make a work-around for. If I had originally put him in a T-Pose when doing the very first steps of the zSpheres, then I could have avoided that problem. I still would've been able to cut the meshes to bake them as separate parts, but then they would have perfectly connected together again and I could've rigged it easily. The other thing the T-pose would have helped with is the Quad-Draw of the hands. It was a bit fiddly in the current position and just would have saved some time.

If I were to do this project again, I would start in a T-Pose, sculpt a low resolution rough out-line mesh of the body to use as a base. I would then create a very high resolution head and neck, also to use as a base. I would also add ears too, so I had the option of displaying him without a helmet. I would then make the armour in 2 ways, first, for some bits I would use the Topology brush, like I did with the 4th and final attempt. The other bits I would use simple cubes which I would subdivide then Dynamesh, position them in the correct places and use the Trim Curve and Polishes to get the right shape, similar to how I did the finger parts at the end. I would make sure the armour and base mesh stays as separate meshes and try to keep them in separate chunks for exporting to Maya. The positives to this would be that I would animate it all separately, so the armour would move properly like hard surfaces should. Also it would take less time to Quad-Draw as it wouldn't have so many fiddly areas. The downside to this is that there would be slightly more poly's but I think the fact that it would look more professional in terms of less bake bleeding, and the fact that it could be properly rigged and animated would outweigh this negative. In terms of baking and texturing, I think my process was fairly good and didn't have too many problems. My high resolution mesh baked well on to the low res mesh. The only slightly downside from the final stages was the fact that maybe the gold metal I used was slightly too shiny still. I could easily edit that now, but no time to re-capture all the pictures and things. The gold armour looked less shiny in Quixel compared to Unity, so I should have gone back and edited it slightly. Overall though, I was really happy with it. It's still not portfolio quality work, but it's closer!

No comments:

Post a Comment

Note: only a member of this blog may post a comment.