Sunday, 27 October 2019

Behind The Door- Week 1

Week 1



Hello! This is a new project that I'm excited to start working on. I technically have a longer time period to work on this compared to the previous project. I have 3 academic weeks plus an enhancement week, which isn't really accounted for. So all together I have roughly 4 weeks for this project. I have the same restrictions that I had last time, 2x2048 texture sheets and a 50k tri budget and a texel density of 1024 per meter squared. 

This project I'm going to do things a bit differently, first of all I'm going to be more free with the materials and textures, since I had so many more textures to spare by the end of the last project. I'm also going to be a lot more consistent with the composition and the story in the scene from the beginning. 

The project that I chose to do is the Behind the Door brief, my reasoning is that the brief is quite open ended with the theme, all I need to follow is that the door is circular and that the environment fits with the style of the door. The project aims are: 
-Work to an authentic, realistic style.
-Collected,collated,analysed and annotated photographic reference for usage.
-Created and use tile-able textures.
-Demonstrated efficient modeling.
-Demonstrated efficient texture usage.
-Create convincing surface properties using PBR materials.
-Stretch goal: Create dynamic elements.


This is very rough sketch of my idea, but I was able to get down on paper what I want to achieve. I wanted a snow environment, and a oppressive mood. The scene should feel hostile and bleak. To do this I wanted a somewhat dark environment where there is a warm light source that contrasts with the cold surrounding. 

The composition is solely around the door, I want the surrounding building to bring the eye towards the door. With values I want to have dark concrete walls to contrast with a lighter colour metal door. There should also be a contrast of roughness between the door and walls.

The story that I want to portray, is that someone was being pursued by a beast or monster. This person hurriedly tried to enter the secure building, however they were too slow. All that remains are bloody hand prints on the doors monitor/keypad, and the trail of a bloody body being dragged away. This story would add an extra layer to the hostile and bleak feelings I want to portray.

References


I was originally started looking into arctic environments and scientific bases. The first place I could think of was the Svalbard Seed Vault. Something that I really liked about this building is that it was an entrance into a mountain, I like the idea of only being able to see a small part of the whole structure. And if the entrance is large then it gives the idea of scale. I also looked into Martian bases as well, since it would also be technically a hostile environment. But the idea of snow just overpowered the martian idea, so i put it aside.


I looked into the work of Simon StÃ¥lenhag for inspiration on colours and values. I knew that he has done multiple paintings of cold/snow environments. You can see that in each painting he has pulled in focus to subjects with using a saturated bright warm colour to contrast with the surrounding cold colours. Also in the middle painting you can see how he controls the eye by using the lines of the trail made by the car; to pull the eye in from the bottom left corner. I could also use this in my own environment with the blood trail. 


For my environment I'm wanting to combine near sci-fi with Brutalism. I feel like the contrast of metal and concrete can work really well together and give a domineering effect. Especially Brutalism can work really well, having a contrast of large simple geometric shapes with the complex and detailed metal work. One movie that I can think of that combines this well is Blade Runner.

Production



The first thing I immediately did was create a block-out and put it into Unreal. The sooner I can get into Unreal, the better. My reason is that I can define shapes and mood early on with simple geometry and lighting. I can also start to set up camera's and draw over the screenshot to brainstorm.


I came to this idea that I needed to lead the player to multiple points of interest that would house the story. The major point of interest would be the door, then the secondary would be a generator or some field equipment that's been destroyed, and lastly the dragged body trail that links the first two points of interest and creates a third that goes way off into the distance. How I would point the player to these locations is by using lights, some of which would be fallen over and pointing to where ever I want the player to go. 

My idea of the environment would be shrouded in thick fog of a snow storm, that heightens the mood, but also means light can be used direct the player. My inspiration from this comes from The Last of Us, where a section of the game you are lead through a snow storm and follow a bunch of burning barrels as your guidance.



After thinking for a while I decided not to spread by points of interest all over the map, and instead hone in onto one key area, which is the door. The advice I got from my last project was to keep it small, and by moving the lights and generator closer to the door, I can keep the environment contained. This may change later on however.

Also instead of working on my models and textures I thought it would be best to focus on the snow storm beforehand. Even if I had the best models and textures, if its in a crap fog then it will all look crap.

Since I had no idea how to create a snowstorm, I looked into the Learn section of the Unreal Engine Launcher (Epic Games Launcher), I remembered that I saw a demo at GDC that showed off particle effects. And that it had some really convincing snow. I downloaded the level and started looking at how they created their particle systems.

One of the major parts of the blizzard particle effect was this animated fog, I looked into how they did this and saw that it was a cloud texture that is in a grid of 8x8 clouds. And that the texture was used in tandem with a ParticleSubUV module within the particle system. This creates an animated particle effect.

Since I knew what I had to create, I then needed to figure out how I could create this texture. After some researching I found that Houdini could do what I wanted. However I felt quite overwhelmed, because I had never used Houdini before. I knew that I would use Houdini at somepoint, but I guess the earlier the better. 


My first attempt at creating the texture is what you could see above, but there were multiple problems with it. First of all the edges of the fog were too crisp, you can clearly see where one particle ends and the next begins. Second of all the animation started off with the fog being small and then getting bigger. The problem is with this, is that you can clearly see where the particle effect spawns and then dies.

What caused these issues, is that the simulation I did within Houdini was an Explosion and not a Billowy Smoke. With an Explosion the is an expansion of gas from an epicenter. What I wanted was a fairly consistent sized shape that would slightly change. And to get that I had to simulate a Billowy Smoke instead.


Here the simulation is attached to a sphere, and the smokes girth inherits the girth of the sphere. This means the shape size stays fairly consistent.

Seeing the actual textures will probably be more understandable.
As you can see there is improvements I have made from the first test to the second. The shapes are a lot less defined, like fog would be, and there is a consistent size.



To create this I first made a sphere and whilst it was selected, I pressed onto the Billowy Smoke in the Pyro FX.


Afterwards I changed some of the parameters within the pyrosolver (this controls the simulation) to get the results I wanted. Cooling rate affects how large the smoke will be. The viscosity affects how tight the smoke stays together and how slow the smoke travels. And buoyancy lift controls how fast the smoke moves upwards.  


After getting the simulation that I want I created my own file cache to store the simulation, and limited it to 64 frames as 8x8 images adds up to 64 frames. This then saves and bakes the simulation, so that you can scrim through the animation without making the computer simulate again.



I then set up an orthographic camera and positioned it above the smoke looking down. This allows me to get a view of the smoke where it's size stays fairly consistent, and for the animated particle I wanted a somewhat circular mass where the edges dissipates randomly. 

After rendering the simulation I could then go within compositing the image.


You'll also want to change from the Scene View to the Composite View so that you can actually see what you're compositing.


To get the grid image I used a mosaic node, this orders the frames of the simulation into a grid of whatever you set it to. However since we're going to use this UE4 it has to be in line with the power of two. This mosaic node also puts all of the frames onto the first frame, so make sure you view that single frame. 

I then used a pre-multiply node which essentially softens the edges of the smoke.  

And then its plugged into an output node, which then takes us to the output section of Houdini.

Using a mantra node allows you to render and export out images. However you only want to render out the current frame you are viewing, so change the Valid Frame Range, to Render Current Frame. 

Lastly all you need to do is when you're rendering out the image to a location make sure that you end the name of the file with .tga. You need to manually write what file it will be exported as.


After all this, I then had to set up the Material in Unreal Engine.
A lot of this is me reverse engineering what I could find, and I slowly understood what the nodes functions were.


There are two extra textures that supports and adds to the 8x8 SubUV I created. I'll go over how I made those later. I'll first explain what I'm doing in this material. 

Firstly I'm tiling the support textures to match the SubUV, so that they effect the individual clouds of smoke rather than all of them at once. 

Next I'm using a Depth Fade to affect the opacity of the edges so that the clouds fade between each other, effectively giving a softer edge where the clouds intersect with each other or other objects.

SphereMask makes it so that you can see through the material at a certain distance, I'm coupling it with the PixelDepth node which outputs the distance the distance from the camera to the pixel being rendered. So it basically allows you to see clearly in a certain distance, and makes anything far away from the player opaque. 

I also plugged scalar parameters into each part of the graph that allows for multiple instances of this material to be used in different scenarios. 

I also want to make it clear that I'm learning this through reverse engineering the Particle Effects Demo, in the Unreal Learning tab. I didn't know how to do any of this, but by looking at what they did, I can figure out how to make something similar, and change it for my own purposes. This is pretty much the same as following a tutorial, but with this I'm figuring out the steps on my own. 

Next is the supporting textures. The original particle system I'm referring to uses a bunch of textures within UE4's starter content, however I have to make everything myself. So I used those textures as reference and made my own in Substance Designer.


This is a cloud like texture that has multiple layers of detail. My approach was creating the background, midground and foreground. The background is framed "micro" on the graph. Its essentially a darker and more noisy cloud. The midground is the mid value between dark and light, and is not as noisy and larger. And finally the foreground are the largest and brightest shapes. 

When creating textures I try to think within layers, and then combining those layers to get the full image. This allows to me create a depth to the texture.

  
This is a general noise texture, its structured by using cells01 as a sort of mask to define the limits of the rough shapes. Then I use the clouds texture to add variation and noise within those shapes. Its a similar sort of method to the previous, having a higher frequency of noise in darker areas, and having the lighter area's having a lower frequency and larger shapes in general.

This last texture is going to be used in the snow material, its made up of simple spheres and packed into an RGBA texture.




This is the material set up for the snow flakes that fall from the sky. A lot of the set up is similar to the previous material. Although one important part is the SphereMask hooked up to a PixelDepth node to make the material brighter, the further away the camera is. 

Here is two pictures showing this effect.




Now I'll finally show the result of all this set up. There are two particle systems working together. First is the fog which has a horizontal movement towards the base, it's layered up with snow flakes moving in the same direction and with speed. This is to simulate a snow storm, in that the snow flakes would be pushed and accelerated by the wind.

The second particle system basically emits snow flakes dropping vertically with a slight horizontal push. Having the effects layer up together works well to get a whole feeling.




There are a few critiques I have for myself. Firstly there could be a third layer to this effect. Volumetric Fog. This would add much more ambiance to the scene as there would be some pseudo fog rays being created by the light on top of the door. Secondly the snow particles are moving in a predictable pattern, to give another layer of realism I could create my own vector fields to add randomness to their movement.

Although I understand how I could improve these particle effects, I've been working on them for almost a week, and I'm wanting to work on other areas of the environment. I'm pretty happy with what I have been able to accomplish so far, so I'll leave these improvements to be worked on later. 



The next thing I worked on was tile-able materials. There is a lot of snow in this environment, so it only makes logical sense to move on to this next. I created a few variations of snow all at 1024 resolution, so that I could vertex blend between them. 

I also set up the material to project itself base on world space coordinates. This is similar to the World Aligned node, however the benefit to this math is that you don't need to make all the textures as texture objects. So you can keep this within the master material and swap out textures in the instances.

I've also made any part of the material that can be adjusted into scalar parameters. This is so I can create as many different variations as instances. I have also yet to set up the vertex blending, I wanted to set up this material just to see how it would look within the scene. 


This is the math that projects the texture onto worldspace using the absolute co-ordinates from the material. I learnt this from watching Pure Polygons - Forest Snow Ground Tutorial. 


Here are some close ups of the material applied onto a sphere.




And lastly I want to show some draw overs that I am using to visualize the scene.


This is the first pass of conceptualizing on top of screenshots from the scene. Drawing on top of my scene is a good way to figure out the smaller details, and the composition of the environment. I can quickly see how I can break up the image and enforce the composition that I had from the start.

It's also a quick way to test out idea's and see if they make sense. One thing that I took from these drawings was that you could get on top of the entrance as the railings is meant to stop you from falling off. 

I then tried to figure out how exactly would the player be able to get up there. Since I was wanting to add a bit of asymmetry to the design I thought maybe there could be stairs on one side.

 With a bit more tweaking I eventually found that no matter where or how the stairs would be positioned, it would have to break up the composition that I had from the beginning. I'd either have to extend the entrance walls to make space, or obscure parts of the entrance. 



The solution is much more delicate. Having ladders that go up makes logical sense, and it adds enough asymmetry to the design that it doesn't feel repetitive, but also stays within the confines of the composition. All that was needed was to adjust the placement of the lights on the support beams.

With this composition I wanted the focus to be the door, how I would be able to achieve this is by having the most detail and noise at the door. Also by having a bunch of geometric lines guiding the eye to the door. Since the door is circular, the eye tends to follow the edge, which the eye to two interactive elements. The monitor/computer that opens the door, and the ladder that lets you climb up.



Thank you for reading this blogpost, I might try to have more frequent posts so that its not a huge drop of work all at once. I've practically spent all weekend writing this. I'll probably go more in-depth with the snow material at a later date once I've finished it.



Saturday, 19 October 2019

Pirate Ship Project - Week 3


Week 3

This is the final production week on this project. Although I may work on polishing it soon after. The reason as to why I'm not immediately working to fix the issues, is because I need to move on to a new 3 Week project and start thinking about my Final Major Project. 

Before I get into the production of creating the environment I want to put down a bunch of critique that I have for myself, and what I was graciously given at EGX when getting feedback from some lovely people from Creative Assembly. 


Straight off the bat, the Narrative I'm trying to portray is not obvious. The hints that I have given (the Bag and the Map) are too obscure to understand the story, I need stronger evidence of the story. This could be due to the fact that the narrative is a bit too complex to convey with just objects, and that I need to simmer it down to a core essential idea. Maybe a mutiny would be better, it can be conveyed by blood and weapons on the ground as if there was a battle recently, there could be bullet holes or large slashes in the walls and pillar. This would be much more obvious. This is also something that I need to remember, I need to keep it simple and easy to understand.

Second, I haven't created a strong composition, I have multiple distractions and dead ends in the scene. I wanted to lead the eye to the window, and although having the window being the brightest area of the scene making the eye naturally go there, there isn't much after. I have two ropes that are somewhat close to each other. One which is tied to the cannon to make an escape route, that seems more normal because its a common element in the scene. And the other which leads you to the narrative props. 


A problem with the lanterns is that the light naturally guides your eye, but it doesn't lead to anywhere. And leaves the viewer/player confused. I think something that could help this is by moving the rope which is tied to the cannon barrel should be moved over to the pillar next to the barrel. Then the rope which anchors the cannon to the ship should be untied and loose, so that the person would be able to push the cannon out of the way of the window. 


The map looks too clean and should be way more dirty if its on the floor, also these narrative props could be moved to the on top of the barrel (next to the pillar) instead. This means that the rope from the window (the brightest source) would then lead you to the narrative items. Also there could be much more story added to this map. Maybe the person who stole it has to hide it, so its slightly tucked away, or maybe they had to fight for it and there's some bloody hand marks. Looking to the future, the problem with this narrative is as I mentioned above, and I should either change it or make it more obvious.




Although these shots look nice cinematic, there is a disconnection between these area's and the focus area. They are a nice plus, but it would be better if I could get similar shots from the focus area, and that makes sure that there is a clear. 

There are also lots of bugs within the UE4 level, there's lighting bugs, there's really strange black area's on the ladders where there shouldn't be, and you can see seams on the ropes. 

But the lessons I can take away from this are: 
- Focus on a small area and have high detail.
-Start with a strong composition from the beginning.
-Spend more time lighting and set dressing. 
-Have an easy to read narrative.
-Create the Master Material immediately.

There are positives from this project as well, this was a great learning experience as I had to use Materials and Textures efficiently to get the most use out of so little. The Lighting and Materials turned out nicely, there's quite a warm atmosphere given by the lanterns and cold from the white skylight. Also I had a fear of metal materials being too dark to see, and this was fixed by referencing PBR materials and keeping the values of the albedo above a certain threshold. This was also the first time of utilizing Parallax Occlusion Mapping properly for edge damage decals, which I learned a few things from trial and error. 

Now onto what I was doing for the week.

As I mentioned before I learned about Parallax Occlusion Mapping or POM's for short, this can be utilized for various situations. Such as placing sticks or leaves above the ground to give a sense of depth, or using a height map for some bath tiles so each one seems slightly offset. 

The reason as to why I wanted to use this in my scene is because I have a lot of tiling textures everywhere. And when everything shares a similar texture, things can look to be samey. Also, since I can't give all of my objects unique UV's, it becomes difficult to add character and age to the environment. Things such as scratches, dents, or scuffed edges have to be added in by using deferred decals.

When researching the workflow for deferred decals, I came across this video. Even though the tutorial starts in Blender, the same principles apply in 3dsMax. That video also helped me in setting up my decal in UE4.


This is the edge damage trim sheet I created, I wanted quite a varied array of edge damage, cracked edges, erosion, scratches etc. It was difficult trying to find any reference of edge damage online so parts of it was just experimenting with what looked interesting.


As an example of the Deferred Decal's affect here is my ladder before adding the Decal, which is above. 

Below is what it looks like within Unreal Engine with the Decal applied, as you can see it adds an extra layer of depth to the model, also my reasoning behind the ladder being damaged is because it would be constantly used. Although looking back its probably more likely to be warped and sanded down by the friction of the feet. 


A little tip for making assets with deferred decals that I found from trial and error. When making the planes that float on top of the model, make sure that it hugs the mesh tightly and has no gap. When you set up the Material you can adjust the offset of the POM, if your planes aren't hugging the mesh then there can be some lighting bugs such as being lit from behind which makes the Decal black. The offset can also be changed by a scalar parameter, so you can change the offset in an instance material.

Another example is this lamp. 



Although a small critique I would give for this would to make the Decal planes larger, at this moment the edge damage is pretty much a micro-detail which can't be seen from afar. Making it larger should make it more obvious.

Something that I left to the last minute was collisions and light maps. The reason as to why I left this so long, is because a model can go through multiple iterations. If I want to change the model partway through production it would mean that I would have to make the light maps again and adjust the collision. Although its probably better to create light maps sooner so that I can start building static lighting sooner. There is a large difference between dynamic and static lights.

I know that a game ready environment and asset should have proper and well thought collision, as it is what the player interacts with. I know from playing so many games that sloppy collision can ruin the player's experience. However I did not have the time to create the best collision boxes. This is something that I can rectify later in the polishing. 


I have learned a lot from this project, and I hope to learn more in the next.









Tuesday, 15 October 2019

Pirate Ship Project - Week 2


Week 2


This week was a focus on creating the Narrative Assets and creating Tiling Textures.Since I was able to finish all of my mid-poly modular assets last week, I thought it would be a good time to focus on creating the HighPoly's of two objects. These are the Hammock, Ditty Bag and Treasure Map.

I started with the Hammock as I thought it would be fairly simple. I tried using Marvelous Designer to simulate cloth, the set up was fairly simple, I made some hoops in 3dsMax that would interlock with the holes in the fabric. However I found that every time I simulated the fabric, it would just tear through the hoops and fall flat on the floor. At one point I was able to succeed in getting the fabric to hang from the hoops, but when I put another object (a pillow) ontop, the hammock would fall out of the hoops. I understand that I don't know Marvelous Designer that well, and that if I spent more time or asked for help I could fix the problem. But I couldn't spend more time, since I could spend that time elsewhere. 


Instead I created the Hammock in ZBrush. The setup that you see above, with the rings is the same as how it looked in Marvelous. Within ZBrush there is this tool called ZModeler, it allows you to manipulate an object similar to how you do in Max. You can extrude, inset, add loops etc. I use this tool on a very simple and low poly model, as it allows me to vastly change the silhouette and control how the model Subdivides. I can add more loops (swift loops) to an edge to get a crisp look. 





I got a plane into the rough shape of what I wanted the silhouette to look like, and then duplicated it and Dynameshed the model. This is so I can push and pull the forms to get the folds that is similar to the reference I was using.



After some feedback I got from tutors I refined the sculpt more, and smoothed out some of the folds. Since this object will be repeated within the scene, I don't want to add any marks that obviously tell that its the same object everywhere. 


I created the holes whilst the model was Dynameshed, masking a circle shape on the two sides of the cloth and used CurveBridge. I'm not happy with the result of these holes as the shapes can largely change depending on how you mask it. Its difficult to mask a perfect circle on both sides, 18 times. In my opinion it looks shoddy.

I created the rest of the items within the Hammock in the same method. My goal with the Hammock is to look as if there is someone sleeping inside, but on closer inspected there's no one. This is to be evidence of the narrative within the scene. 

I repeated the same process with the Ditty Bag (a sailors bag to hold small tools and provisions) however I created the holds by creating cylinders that would then Boolean the holes in the bag. This was a better method as it allowed me to accurately create the same hole multiple times. And it has a cleaner result.







A part of me wants to only just make bags. 

The references that I mainly used are below. They were sourced from Google Images.





After creating the highpoly sculpts I retopped the lowpoly within 3dsMax and have yet to texture in Substance Painter. 

Something that desperately needed my attention was unwrapping all of the objects within the scene. I wasn't sure what exactly Texel Density meant, but after watching some videos and attempting somethings my self, I think I understand. Create a plane whatever the size is stated, so if its 1024 per Meter². Create a 1 Meter plane apply a 1024 UV Checker texture to the plane. When Unwrapping objects the UV size should match with the plane, having the checkers the same size.



I also worked on the materials within the scene. I started with the Wood Floor as it takes up the most amount of space in the scene. From that I just worked on the rest one after another. 

There are two versions of the same Material, which is the 2nd and 3rd Material. The reason as to why is because I wanted to have a noisy texture and not so noisy, so that I can have a variation. The set up is the exact same and so are the normals. Just that the base colour has less tiger stripes and branch spots.  




For the wood boards I used a Pixel Processor to make sure the pattern doesn't spill over to the next plank, and offsets the x and y of the pattern to give the illusion that its a unique plank. 


The rope is a very simple Linear Gradient that is rotated with a safe transform grayscale node. The Linear Gradient is tiled within its own node to make more strands of the rope. I plan to make the rope in the scene with BluePrint Splines within UE4. This would be applied as a tessellating texture to give a rope look.



 One thing that I do to be more resourceful is use the RGBA packed texture as much as I can. If I know that a material doesn't have any metal parts or is all metal, then there is no need to export a simple white/black texture. All I need to do is plug in a Material Expression Constant within the Material in UE4, and set it to 0 if its not metal, and 1 if it is. This allows me to have a second roughness map in the blue channel. I can then use a Switch Parameter, plug in the two different roughness maps and have a tickbox in the instanced material to switch between roughness maps. This will be something I will use in future projects as well.



I am aiming to finish the project next week, so that I can bring pictures to EGX and get some feedback. 

On a side note I was able to finish Last Of Us this week, and its a masterpiece.