Sunday 15 March 2020

Final Major Project - Weeks 6 to 8


Before I go into what I have been doing I want to touch on how I am approaching the format of this blog. As I am behind schedule when writing this, I am having to write multiple weeks worth of information. So to catch up I am going to talk more broadly on specific things that are note worthy rather than going on a week by week basis. 

Creating the Master Material 
(or what it is currently)

Following on from the last blog entry I wanted to touch on my Master Material that I have been working on for a while now, however I felt as though it would add even more content to the already long post. 

With this section I wanted to talk about what I've done so far and the reasons for why I have certain parameters in the graph. The purpose for this master material is to be used as a base for all or most of my models in the scene. And since there are still things I need to create in the future, I might add more features to this material to accommodate them. Basically this material will probably change quite frequently for future needs.


I've colour coded all the major parts of the material. Purple parts are nodes that affect the UV's. I've seperated them into three different sections as they have three different purposes. 

- One of them is to make the texture world aligned, meaning that the texture is projected onto all axi's of the model. Instead of using the unwraped uv's of the model, the textures are projected in world space.

- Another is to affect the tiling, offset and rotation for all of the textures. 

- And the last is to affect only the Colour texture and RGBA texture, as some assets will only require a unique normal texture map and can have tiling textures for the colour and roughness. 



The white center is filled with TextureParamaters for Colour, RGBA and Normals. I labeled this section "Standard Material" as this is where any textures I have created will be imput into the material. It's standard as there is barely any changes/manipulation to the texture, for most unique assets this is all thats needed. 


The orange part at the top of the graph is a sort of a smart material I've been working on for the house walls. I will go into more detail further down but very briefly this is an additional layer of detail to add more wood details. 


The red section of the graph is the vertex painting nodes. So far in the project I haven't needed to vertex paint two different textures yet, but I know that I will in the future so I have started to prepare for that. I will also eventually add additional nodes to paint in the blue and green channels, when they are needed. 


The last thing I want to mention in this section is that I am using Lerps as switches instead of Static Switch nodes. The reason being that Static Switch nodes creates extra instances of the material. When a static switch is used it references the material as two new materials, instead of referencing the whole material as one. This can negatively affect the load/run time as it creates more shaders unnecessarily. 

Lerps circumvents this issue, as it allows you to switch between two different states without creating extra unnecessary instances. The only difference is that you will need a static parameter that is named correctly since you will need to use values of 0 to 1 instead of ticking a box for false or true.



Creating the log walls



As can be seen in my previous blog post, you can notice that the walls in the environment have gone through multiple stages. From blockout to rough model to something more like the final version.

Russian izba walls have a peculiar design to them, as they are usually whole logs that are then carved and planed to become a flat wall. However there is still a cylinder shape towards the ends of the logs. Which can be seen below.



To re-create these walls I had to consider how I should texture these walls. Since they are a couple meters long, they are too large to be baked, however I still want to give each log a somewhat unique look. And I think I've come up with a good result. 



Firstly is the modeling, I created a few long cylinders and then removed faces and strip modeled where the cylinder is carved into a plane. Since the model is somewhat simple I decided to use vertex weighting the normals of the model to get the nice beveled edge. This allows me to not need a normal texture sheet just for the edges. 




Next is unwrapping the uv's. I used a texture with three horizontal gradients to define the center and edges of the log. With the center being white and the edges being black our grey. I have three gradients as this will help give three different variations of wood grain. In addition to unwrapping the wood logs to these gradients, I have given the logs three different material Id's. This will help to add more variation as I can apply different instance materials that will have varying attributes. 


The next step is the wood textures. I wanted to keep these textures quite simple as I will be combining multiple layers within Ue4 instead of Substance Designer. Recently with my work I've been trying to push more parts of production into Ue4 rather than Designer. Taking my knowledge of Designer nodes and using it in Ue4 to create more interesting materials that use factors such as world space to change or warp the texture. Such as this warped lined texture below. This will be added onto the wood material within Ue4. Also I should mention that since these are greyscale images they can be used in a RGBA texture to be efficient.




Taking the wood material and all these additional textures into Ue4 will get a result like so. 




Going into more depth with the creating the wood. Below you can see a section of the graph circled in blue. All these nodes basically means that I am distorting a gradient mask with a perlin noise texture that is world aligned. So that the distortion will be different depending on the location of the texture in the world. You might also notice that I re-created the 3 horizontal gradient bar texture (that I showed higher up in this post) within unreal. The reason as to why is because I can have more control over the mask in unreal if I have all the inputs as parameters in the material. Such as how large the gradient masks are, how strong or soft the transition is etc.



Below is how I created the ring formations on the wood, when I was creating this material I named it as TigerPattern for simplicity, and this will be how I refer to it from now. 

The reason why I have separated this section of the material as its own thing instead of having it as a simple tiling texture on the Substance Designer material, is because I ran into problems of the texture being noticeably tiling. I could get different colour variations of wood using instances, but the TigerPatterns will still be the same. So this is how I solved that issue, by separating it out.



There are two things that I want to point out. 
First is how I was able to modify the texture to have a wood grain. I plugged the green channel from the normal texture of the tiling wood grain into the UV's of the TigerPattern Texture, which then gives the distorted wood look shown below.





Second is the colour, to have more control on how the wood looks. I used a three vector parameter for the controlling the colour, since this is throwing more noise onto a wood texture having one colour for the pattern is sufficient. As later down the line I will be throwing decals and vertex painting different versions of the material as well. 



Next I combine the two parts of the world gradient mask and tiger pattern.



Here I add more colour to the wood by using a similar gradient to the one I created. This allows me to give a strip of different colour in the center. 



Below is what it looks like when adding the colour onto the material.


Using the same masks that I created I used them to control and affect the roughness. I know that I can use a scalar parameter instead of a three vector parameter to control the roughness, but I only used the three vector to visualize what the roughness may look like in the instance.



 With everything that I've shown you, here is how it looks in action. I may go back through this material again and simplify a lot of the nodes. But it works for now. 



Applying Critique
Recently our university had the opportunity to have people from both Dambuster Studios and Ubisoft Leamington visit us. I was able to get some critique from the wonderful Environment artists, that I have been slowly adding to this project. One of the larger things pointed out to me was that the walls looked quite stylized. 
The reason for this was the silhouette/shape of the wood logs were thick, and the walls had large gaps between the logs. Which can be seen below



Going back to my model I realized that I needed to flatten both the tops and bottoms of the logs so that it sits more flush. After some more research into log cabins/houses, most logs will be flattened on the top and bottom to get rid of holes. After all the walls are made, there would be an extra material such as dried grass or hay stuffed into the gap to fill in any holes.
I also made more size variation between the logs, as it would be nearly impossible to find logs of the same circumference for all the walls. To add an extra step of realism I should add some warping to the logs as most logs will not be perfectly straight.


There was some additional critiques but these are details that will be added later down in the line of production such as decals.

Production

Since I've been working on the walls and floor, I feel as though its time to start paying attention to everything that is inside of the building. Below are two images of a coat hanger. Something that I tend to think a lot about is how dense should an object be? 
-What needs to be thought about is how close will the camera get to this object? 

-Does it appear once or is it going to be duplicated? Does the object have curves or cylindrical? 

-Will the object be uniquely textured or use tiling textures? 

All these can determine how dense a mesh might be. With the coat hanger being created from many curvy shapes, it has to have a decent amount of edge loops to not have a jarring transition. However this means that I should reduce as many edges or faces wherever possible to slightly cut its budget down. 


 

However I seem to have a problem with parts of the model, the vertex normals of the model appear to have a strange shading. on the some what flat part of the model. This could be fixed with either beveling the edge and using weighted vertex normals or baking a normal map. Since the model is already dense, I opted for using a normal map. 



Here is what it looks like in the engine.



With the table I wanted to get a very simple table cloth, so I took the table model into Marvelous Designer and simulated a rectangle of cloth on top of the table. It gave a nice result, but the problem I had was creating the low poly.



 I tried using both ZRemesher in Zbrush and ProOptimise in 3dsMax to get a simple low poly. But the result I got with both of these were terrible. With both of these tools, their goal is to reduce the amount of all the polys. Which ends up with the edges of the cloth becoming distorted. With the low poly I wanted the edges to maintain its shape and then reduce the polys in the flat center of the cloth. I'm sure that there is some tool or knowledge that could help me, but since I didn't know them I thought I might as well quickly re-top manually. Simulating the fabric was quick but re topping is where I spent most of the time.


Additionally I worked onto some of the assets already in the scene such as bowls, shelves, and this window below. Since the geometry is fairly simple I used weighted vertex normals to get a nice edge. I also modeled the window with the ability to be opened. I just need to come back and set up a parent child rig to the window and add some extra details such as a lock on the window. 


Ubisoft Art Test

I have been applying to a bunch of companies whilst working on this FMP, and on week 7 I had the privileged to work on an art test for Ubisoft. I can't go into the details of what I created or what the art test entails, but I want to mention this as it shifted my priority of the FMP to this art test. I started from Tuesday the 18th and finished Tuesday the 25th. I worked as hard as I could during this time, and after submitting the art test I decided to take two days off as a way to celebrate and relax. 
After working on the art test I have been able to self reflect on my skills, and see how I could push myself to improve. It feels similar to the frog in the well proverb. I feel excited to see how I might improve in the coming months. 

I resumed working on my FMP on week 9.

No comments:

Post a Comment