Thursday, 10 December 2015

High Resolution Model - Guild Wars 2 Greatsword



At first, when we were told we had to do a realistic representation of an object my initial thoughts went to either a character statue or some kind of Star Wars model. We were told it was a good idea to do something we would be passionate about as it would be easier to model something we liked in greater detail. A Hulk statuette and the Millennium Falcon both went as initial ideas until I realised they were far too detailed to do within the time frame.

I decided on a weapon to recreate from one of my most played games of all time: Guild Wars 2. It's not my absolute favourite weapon visually in game but it's near the top. The others above it were either far too detailed or have crazy particle effects which I wouldn't know how to create. This was the object I decided on:



I went about sourcing these pictures from in game, and first got a good side and top images to use as references. I then went about figuring out what real world materials these parts could be made from.




So it was time to start modelling. I set up my reference images in Maya and started blocking out the basic shapes. Right from the beginning I knew how important organisation would be so tried to name all the pieces as best as I could. Also I tried to fit the references as best as I could while keeping it really low poly.





Now, the original in game model had a few of the raised panels on the sword as normal maps. But Guild Wars is an MMO so objects will be much lower resolution than what I was looking to create, so I decided to model all the panels, diamonds and rivets out completely.



I figured that I would be able to use this base mesh I had created as the low poly in the end. All of it except the 'brass wing' part which would have to be sculpted better in zbrush first. So for that part I created a blocky low poly representation to take to sculpt later. Next was to make one of each of the final details, give it some colours for personal clarity of material before exporting.






I imported the wing mesh first into zbrush and set up a reference image so I could accurately sculpt the detail into the mesh.




When that was done I imported all my other bits into zbrush. I learned here that I should have imported them all together at the beginning then sculpted the wing in that instance, but more on the problems and what I learned at the end. Here though, I also learned about importing meshes that need to be subdivided a lot. When it first came to subdividing the big parts like the blade, they lost too much shape through smoothing. So originally, I tried subdividing without smoothing for the first couple of divisions, then have smoothing on for the rest but it still didn't give the right look. Some parts were too jagged, and so I had to go back into Maya and add edge loops everywhere where I wanted to keep those tight edges. Then I re-imported into zbrush to subdivide again.



Next was so start adding the high resolution detail to the meshes. In the references it's clear that there are a lot of scratches, dents and some tribal markings which were all made as normals in the original. I would do the same here but with more detail to make into normals on my model. I went about finding some free alphas for scratches as well as making a lot of my own. I learned how to create my own alphas and made a number of scratches and dents which fit the style I needed by using a big block of 'clay' in zbrush and using different brush techniques and finally saving as a depth grab. I did this because I wanted a bunch of chips and dents for the edges of the metal, and I couldn't find any around that I liked.






I added the scratches on layers so I could manage them better later on. I also then worked on the leather grip. I used the surface noise initially and added the hatch alpha to that, then increased the strength to give it a lot of depth to get the desired look. I had to subdivde this a lot of times before baking the detail. After that was baked I added more surface noise onto the straps to replicate the leather look, then baked that as well.



Next came the tribal alphas. I took the reference image into Photoshop and then sketched over each pattern in black on a new layer and tidied up the edges best I could. I then made them symmetrical where necessary. I then selected the black layer using the wand. I then increased the radius of the selection by a few pixels, made a new layer underneath and filled that slightly larger selection with a medium-dark grey. This was so when printing the alphas they would have a more beveled, smooth edge in zbrush.





After all that detailing was complete (and we were up to 32 million polys), I copied all the parts which needed to duplicated into their correct positions. For the 'wing' part, I had to go to a lower subdivision in zbrush and export that as the low poly. The original low poly I had originally made in Maya was far too blocky and inaccurate.



I learned during this positioning, that I should have done this first in Maya. I originally thought it would be easier to import just one of each piece, detail it and then duplicate that. It probably would have been easier the other way round. For two reasons: the first was that the zbrush moving is fairly inaccurate compared to Maya's so it took longer to position than it should. The second was that now I had to make sure the low poly Maya version had all the pieces in the exact same (slightly inaccurate) places. Which was a pain because it meant I had to decimate the zbrush model to put into Maya so I could have an accurate copy. I would not have needed to do this step if I had planned properly. Eventually, I did get it done though, then it was time for the fun that is UV's.



So I gradually unwrapped each piece and made sure to keep them on the same sheets as with other pieces of the same material. The leather handle was an exception, but I stuck it in with the brass wings and end pieces as there was space. Unwrapping the wings was pretty painful and time consuming to make sure there was minimal distortion and the cuts weren't in bad places. It was difficult due to the shape and the fact that the one I imported was probably one subdivision higher than I should have used.






I eventually got them all done. I then optimised the entire mesh. I got rid of as many unnecessary edge loops as I could, cleaned it up and managed to get the low poly down to around 18k polys. I could've gone lower I think if I had managed the wings poly count a little better earlier on.



Next was exporting to bake maps. I had the high poly to the lowest I could get it – around 22 million. I used all the settings as shown in class in xNormal to create the maps. I had my three high poly meshes and my 3 low poly all ready to go. I had to do a few (and very lengthy) bakes of cavity maps to get it all looking ok. For some reason the ambient occlusion maps came out flat grey and white rather than had any detail. Luckily the cavity maps worked fine and looked good.




I then did some manual editing to the maps before taking into Quixel. I did the high pass trick on each of the normal maps. I also had to do some editing bits on some of the channels of the normal maps to get rid of some weird bits.



I first imported the brass wings mesh into Quixel and started working on it. I had it looking really good as you see below. Unfortunately Quixel crashed at this point and I lost most of the good stuff I had done here. I usually save very often but you cannot save in Quixel while editing the alphas. So very annoyed I had a break.



On that break however I learned on a video somewhere about how you can import multiple meshes into Quixel at the same time. So I went back into Maya, grouped the OBJ's and exported as one single OBJ to take into Quixel. This made it much easier. I decided to make one metal part of the handle have some detail too which previously didn't have any. I did this because thought it looked quite boring when it was plain. I added a hatch pattern in NDO first and turned that into a normal. I added some wear to it with a soft brush and continued back into DDO.



I went about making the brass and leather (again), honestly this time I didn't do it as well for some reason. I found it hard to replicate what I had done previously as you see below.



Next was the 'titanium' parts. First I tried making them steel and painting some darker oily spots to try and replicate the reference. But it ended up not looking very good at all. Here is where I made the decision to make it a painted steel material instead. That meant I could colour the paint that duller, greyish blue like in the reference. Also it meant I could chip the paint away in the mask revealing the shiny steel underneath which would show some good weathering.



I then went about manually painting out the mask on the model. Making sure the chipped and weathered parts were exactly where I wanted them. I also filled in some of the areas which were too weathered and made them painted once more.




Next was for the blade and shiner steel parts. For this I added the same material as the 'titanium' parts but I made the paint slightly shinier. I then masked out all the paint on the sharp blade parts as well as all the other steel areas like the diamonds and rivets to make it purer steel to match the reference. I masked out a lot of the other scuffed metal layer too, but kept some on many areas to keep the steel from looking too clean, as it's clearly a very used sword.




After some cleaning up of some parts I think it turned out really well:



Next was to take it into Unreal. But first, I went back to Maya to my original low poly and then hardened edges where I wanted them for export as an FBX for Unreal. Now, as a disappointment to me, I didn't really have enough time to learn Unreal properly and felt it's a shame that I couldn't get it looking anywhere near as good in Unreal as I could in Quixel (as you'll see). I set up as much as I could learn within the time limit; some lights, some objects as a very basic scene. I am looking forward to learning more of this in the future because it's obvious that it's possible to get some very good renders with more time available.

Here is the final piece:







Things I learned/Reflections on project

I learned a lot during this project, from major organisational and decisions to small tips and tricks. The first major thing I learned was to copy all the parts first in Maya, like I mentioned before. I should have positioned all the low poly pieces in the exact right place first, grouped it all up then imported into zbrush together. Then I could have detailed all the bits individually so; they would have been more unique and they would also already be in the exact right positions so I wouldn't need to do any extra work to the low poly – it would already be there available to me when I need it later.

The next thing I learned was to export full meshes (no holes) into zbrush. I thought I was being clever by optimizing early, but instead it set off a whole chain of problems. It meant that in zbrush I had gone up a bunch of subdivisions and detailed, (and would have been too difficult to go backwards) so I had to dynamesh to fill the holes. At the time I thought this was ok, but it meant deleting the lower subdivisions on the meshes which later on I needed. So in the future: no holes in meshes, so I don't need to use dynamesh and can keep the lower subdivisions in tact for when I may need them to export again.

As mentioned before, I should have been more organised and made a copy of the low poly then added edge loops of that copy and taken that into zbrush so when I subdivided it would have kept the shape exactly how I wanted. This way I keep my low poly completely optimized and in tact for the end, and I still manage to keep the shape I want in zbrush.

Next was to make sure the model in Maya is completely unified, centred with history deleted and transformations frozen. I had a problem when trying to decimate in zbrush at one point, because when I decimated the blade, it would shrink and move it away from the wings part. This is because I had imported the wings separately at the beginning to sculpt them. This meant that they both had different origins and it created problems. Next time I'll make sure I import everything I need together and in the correct locations. It's amazing how many small problems can cause knock on effects down the line.

Next thing was for UV's. I should have unwrapped then copied each thing in Maya right at the beginning when the low poly was first done. Not only that, but as some of the pictures show, I have some same shells all layered on top of each other. I figured at the time that because they were all identical that it wouldn't be a problem, but that turned out not to be true when baking maps. It was a problem. It meant I had to bake some of the maps a few times as well as re-arranging some of the UV sets to fit in the 0-1 space properly with no overlap at all. Also, with the UV's I could have possibly tried to use less sheets, as I've seen people get good results with larger models with many parts all fit into the 0-1 space using a 4k map. In the future I may try that regardless of how many parts I have.

Regarding zBrush, I learned a couple of things. For instance it is very good for all the larger parts and custom damage/wear like the chips and scratches on the blade, but some of the smaller surface details can be left until NDO/DDO. I think they are easier at applying them and is definitely quicker to do so there rather than in zBrush. I also learned a few other little tricks like how to create depth grabs for alphas, some ways to export and also to merge subtools for exporting.

I learned a fair amount about xNormal and how it reads UV's. I think in the future I will be able to set up UV's in a much more sensible way to get the best bakes from xNormal and minimise the considerable time it takes to bake some of those maps. I also learned that 8k maps is completely unnecessary after experimenting with one. I realised that 4k is sufficient for almost all 'normal' sized objects.

I learned that if the low poly object is good enough and accurate enough, decimation is completely unnecessary as well. Saves time to be well organised earlier on.

Other things I learned: Quixel Suite 2 is amazing! So much more stable, I only had a couple of crashes ever and it's so easy to make very high quality textures with not much effort. I also got a pretty good feel for the PBR workflow using it and editing masks etc. Also learned that Unreal only imports RGB files so you have to save the greyscale files as RGB anyway in Photoshop before trying to import into Unreal.


So in conclusion, I'm fairly happy with the model overall. I think it looks really good in Quixel. I'm really disappointed about how it looks in Unreal though. I just didn't have the time to properly learn it very well to get the most out of the PBR textures in the renderer I think. I was also disappointed that the second brass I made looks a bit too much plastic in the final version. It's annoying that the first one looked so much better. Also adding to the Unreal render, there is something weird with the roughness going on in Unreal. In Quixel, some of the parts are completely matte almost, (and still are in the maps as you can see in some of the above pictures taken from Quixel) but in Unreal however, these parts are really shiny. Most of it worked fine, there were just certain parts which haven't seemed to render properly in UE4, the dark chunky bolts on the side of the blade are one of them, and some of the blade noise is really rough looking when it should be more transparent.

No comments:

Post a Comment

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