Sound of Life Blog #6

Hello again, and welcome to my last blog post for this project 😦

Today I want to talk about a texture material that I created in Substance Designer 6, mainly because I ran out things to talk about 🙂 . It is a simple painted concrete texture, that is going to be used for indoor walls. If you want more information about Substance Designer 6, please feel free to read my first blog post about substance designer, where I briefly describe the software and the work process that involves doing procedural texture.

Like every other material created in Substance Designer, I usually start with either a patterns map or a noise map. And for this material, I am going to use a noise map called fractal sum base, you can find this map under Generators-Noises.

1

But I also want my material to be damage, so added a grunge map (grunge map 001 to be precise). With these nodes, I want to blend them together in order to connect it with a normal node.

2

Once that is done, I added a gradient map for the main color of the material. This gradient map will use the fractal sum base as an alpha mask for our base color. Inside the gradient map, you can find an awesome gradient eyedropper tool that allows you to sample gradients by dragging the eyedropper over an image. In my case, I used a photo of a desaturated orange wall in order to draw the sample colors. I did the same thing for the grunge part of the material, by adding a gradient map, but this time using the grunge map as an alpha mask. All I had to do now, was to blend between these two gradient maps in order to connect the blended output to a base color node.

3

I also added a levels node for my grunge map in order to control the amount of grunge, which I exposed for use as a custom parameter in Unreal Engine. For roughness and metallic, I used a simple uninformed grayscale node that works as a constant value. And here is the final result:

4

 

Sound of Life Blog #5

Hello again!

Today I want to talk about Color Grading and how we utilized color correction in order add a tone/mood to our scene. What you do is that you are taking the final rendered image and manipulate the color spectrum that the scene is rendered through, in a way that fits the mood of the scene.

In order to do this process, you need something called a color look-up table(LUT). You can find this LUT in Unreal documentation site under Post Process Effect – Color Grading.  Think of LUTs as the spectrum of color that the rendered scene is running through, now if we can manipulate this, we can change the final output.

RGBTable16x1

Color LUT

Now all you have to do is to take a screenshot of your scene, paste it in Photoshop and make a new layer for the LUT. In Photoshop, I going to use manipulation layers like levels, curves and hue saturation in order to change the scene to the final output. Since they work globally within the document, they will also affect the LUT layer.

3

As you guys can see by the screenshot, the image has a blue/gray tone to it. This has mainly to do with the distance fog, skybox, and the concrete texture. The color grading that we are going for, is a desaturated orange tone throughout the scene. The first thing I did, was to add a levels manipulator, inside this manipulator, I increased the amount of red in the red channel, magenta in the green channel and yellow through the blue channel. This gave me a very strong orange tone to my image.

4

Here’s where the hue saturation layer comes in, as I simply lowered the amount of saturation, in order to get a subtle orange tone.

5

And last but not least, we have the curves layer, which I used in order to add a bit of contrast by adding a little bit of blue.

6

Here’s the result in Photoshop, and what you do is select the LUT layer, collapse all manipulator layers, isolate it, then crop it and save it as PNG.

RGBTable16x1

Before

Color_level_LUT_5

After

And now you have new color LUT that contains the changes we did in Photoshop. Now all you have to do is import the LUT image to the engine and change the image texture group to ColorLookupTable. Create a Post Process Volume (under volumes tab) that covers the scene. Inside the Post Process Volume, you go to Color Grading – Global -LUT and drag in your image. And there you go, the entire scene is now color graded according to the changes we did in Photoshop.

 

Sound of Life Blog #4

Hello again and welcome back ! 🙂

Today I want to talk about a method we used to apply textures to our modular buildings and the stuff that you need to avoid, so that you guys won’t make the same mistake as we did 🙂 . As I’ve said earlier in my previous blog post, we are using Substance Designer 6 in order to create seamless and procedural textures that are applied to our modular walls. These textures are applied to specific polygons for every modular wall and these polygons are assigned to something called material id. Assigning these polygons to material ids are done through 3DS Max.

1.png

2

What you do is that you select the polygons that you wants to assign the material id. For this example, I want to assign one of my brick textures to material id 1, concrete texture as material id 2 and so on. But in order to get this working in Unreal Engine 4, you have to assign materials for these polygons (material ids) in 3DS Max and you do that through the material editor. Inside the editor, you select the Multi/Sub-object material, which you’re going to assign standard materials for each material id as inputs for the Multi/Sub-object material.

3

4

Once that is done, you can export the mesh to Unreal and inside the mesh, you can find all your material ids as elements and you can assign these elements with different material.

7

But one of the mistake we did with our modular walls, was that we didn’t really plan our UVs correctly, which gave us some issues. Here’s is an example of one of our previous UV for our modular wall.

9

As you guys can see, the important part of our wall (the front side of the wall that is supposed to be tileable) is not covering the entire UV space (1:1). This means that the front side is not utilizing the entire texture, which will give us nasty seams along our modular walls.

10

We realized that we didn’t have time to go through some of the UVs, as some of these walls had window frames and trims that had to be scaled down tremendously.

One of the solutions that our Lead Programmer came up with, was to utilize a function called WorldAligned, which allows you to align the texture to the world, rather than locally to the object. It also allows for scaling in world units, rather than as a percentage of the texture size. The drawback with this method is that it is more performance demanding in comparison to aligning the texture locally.

So the moral of the story, plan your UVs and textures early. Maybe start with a texture atlas and use it as blueprints while you’re building your modular walls.

 

Sound of Life Blog #3

Hello again!

Today I want to talk about vertex coloring and how I used this method in order to blend between different textures.

6

But what is vertex coloring?

Vertex coloring is a way of utilizing the vertices on your mesh in order to paint in an already done texture. For this blog, I am going to show how I blended between two concrete textures with vertex coloring.

I started off by making a new material and inside the material editor, I imported the diffuse color and the normal map samples, each from a different texture. In my case, I am using a light red concrete wall texture and the second texture is a damaged version of it.

1

With these textures, I added two Linear Interpolation node (LERP), which allows you to blend between two inputs with the help of an alpha input. In my case, I used the LERP nodes to blend between my diffuse colors and normal maps.

2

After that, I used the alpha output from the vertex color node in order to connect it with the alpha inputs for the LERPs.

3

The LERP outputs are then connected to a regular multiplier (each of their own), and they are multiplied with the RGB output from the vertex color node.

4

And here we have a simple material setup for us to vertex paint, but in order to start painting, you need to go into paint mode (next to place mode) disable the RGB channels and enable the alpha channel.

5

All you have to do now is select a mesh (with this material), and then start painting from the vertex points.

6

And here we have a simple example of vertex coloring. As I mentioned earlier, you are painting on vertices, which means that you will have better control if you have more vertices. I used this method mainly to blend dirt/ware&tare to our textures. It is a fast and easy way to make variations while using the same material.

 

Sound of Life Blog #2

Hello, and welcome back to my second blog!

Today I will be talking about Material Instancing, and how I utilized this method in order to make variations of our textures.

12.PNG

 

But what is Material instancing?

Material instancing is when you take a single parent material, and you make copies of it (instance/child) that have variations to it. Let’s say that we have a simple/basic wood material as a parent material, then with that, we can create specific variation to it, such as oak or maple. So what you are doing is that you are starting off with the same exact properties from your parent material and you are making changes to them, and these properties are called parameters that contain a value that can only be changed once you instance off material. For this example, I am going to make an instance of a basic brick material.

But, in order to do so, you need to define the parent material for this basic brick texture. So I started off by making a new material.

1

After that, I imported my base color and normal map for my basic brick to the material editor as a texture sample parameter. These are the values that you can use in order make variations.

2

With the base color, I added a vector parameter, which is going to give me the option to add color tint. This vector parameter is plugged into a multiplier with my base color map.

3

I also added scalar parameters for my metallic and roughness, and with it, I can tweak my roughness and metallic for my variations.

4

And here we have a simple setup for our parent material

Now, all we have to do is create an instance for this brick material, and you do that by selecting ”create material instance”. Once you select the child, you will enter the material instance editor.

 

5

Material instance editor

And here we can find the parameters that I created.

8

With this editor, you can change the color tint, roughness, metallic, or you can change your texture completely by changing the normal or base color map. But for this material instance,  I only tweaked the color tint and here is the result of that.

 

10

Left: Parent material  Right:  Instance material

 

11.PNG

Another example, but with a different base color map

So why use material instancing? The important thing about instancing is that you will only compile the parent material, which means that children materials are free, in other words, they do not cost anything when it comes to compiling. It is a quick, cheap and an easy way to make variations of a material.

 

 

 

Sound of Life Blog #1

Hello and welcome to one of my first blog post for the project called Sound of Life. My name is Kadar Ali and I am a second-year student studying Game Design in Graphics in Uppsala University (Campus Gotland). I will be posting six blogs (possibly more) throughout the project and I hope that you guys will enjoy, or at least find something interesting.

So what is Sound of Life?
Sound of life is a first-person game, where you play as a rescue worker in a city that has been bombed. Your goal is to find and rescue people who are trapped in wreckages with the help of a device that can listen through the wreckage. You have to listen carefully, explore and try to find any clue you can to save the missing people.

For today’s blog, I am going to be talking about a texture that I created in Substance Designer 6. It is a simple brick wall texture which is going to be used throughout the game, but it is also one of my first texture created in Substance Designer. So what is Substance Designer? Substance Designer is a software that allows you to create procedural textures, in other words, a texture created using an algorithm to create a surface or volumetric representation of elements such as metal, granite, stone and much more. Not only that, but the software is also node-based, which means that you do not have to paint anything, all you have to do is just connect these nodes (that could either contain different functionalities, maps etc) to each other.

 

3

The texture itself

Untitled-3

An example of the nodes that I was talking about

For this texture, I started off by picking a pattern, in this case, a basic brick pattern. I added a grunge map and with that I did some adjustments (adding directional warp and other noise maps), which I then blended (with a blend node) with the brick pattern in order to convey dirt/ware&tare look to it.

 

4

Brick pattern

5

Grunge Map

7

The output of this blend is then hooked up to a normal node.

6

Normal Map

 

For the diffuse color, I used a gradient map, which I then blended with a uniform color (Orange/brown).

8

Gradient Map

9

This is the alpha input for the gradient map 

 

12

The result of the blend between the gradient map and the uniform Color

 

I applied the same method for the crevices.

10.jpg

Gradient Map for the crevices

But, in order to blend this Gradient Map with the crevices, you need to invert the grayscale of the brick pattern (this will make the crevices of the brick pattern white, which are the color that the blend node is looking for in order to blend).

11

To the right you have the inverted brick pattern

12

Without crevices

13

With crevices

And here is the result in Unreal Engine.

14

15

Oh, I almost forgot, there is an awesome Substance Plugin for Unreal (and Unity, I think…) that allows you to tweak your material, like resolution, random seed, but most importantly, you can add custom parameters. You can create your own custom parameter by exposing one of your nodes in Substance Designer, and in my case, I exposed one of my level nodes that controlled the amount of grunge (which I renamed Dirt).

16

No dirt

17

With dirt

Blog #6 Final

Tjena!

Äntligen har vi nått den sista veckan och detta kommer nog säkert att vara den sista blogginlägget för denna kurs. Under veckan har jag återigen jobbat med feedback-animationer för våra rovfåglar i spelet Trowl, och jag kommer framförallt att diskutera om örnens feedback-animation när den blir träffad av åskmolnet. Denna animation är ett sätt att demonstrera faran med att bli träffad av åskan, men den kommer även visa spelaren att man kan använda blixten till sin fördel. Själva animationen är indelad i tre olika delar. Den första är när örnen rycker till chockerande under en kort period, för att sedan bli bränd (2) och falla sönder i smulor (3). För denna artefakt använde jag även Photoshops Frame Animation.

eagle_elec_animation

Denna GIF är en förlängd version med samma bildrutor 

Jag började med chockanimationen (är osäker vad man ska kalla det), och här satsade jag på att gör en snabb animation, så att den inte stannar för länge på skärmen när den blir träffad av blixten. Jag började med att återanvända örnens sprite som underlag, för att sedan lägga till utsträckta vingar. Med hjälp av underlaget kunde jag göra den första bildrutan, där jag ritade ut gul elektricitet på och runt om fågeln. För den andra bildrutan öppnade jag upp vingarna och tog bort elektriciteten för att framhäva ”rycket”. För den tredje och sista bildrutan för denna chockanimation så återanvände jag den första bildrutan och ritade om elektriciteten för att ge lite variation.

eagle_elec_sprite_sheet_1

När chockanimationen var färdig, så var det dags att övergå till den andra delen av animationen som består av en bränd, men samtidigt en häpen örn. För denna del återanvände jag bildruta två från chockanimationen och målade om örnen med svartgråa färger som första bildruta. Jag passade även på att göra ögonen lite större, för att förmedla häpnaden på ett ”Cartoonish” sätt. För den andra bildrutan ändrade jag ögonen så att den såg ut som en stängd öga, och allt man behöver göra nu är att hoppa mellan dessa två bildrutor för att framhäva att den blinkar.

eagle_elec_sprite_sheet_2

Slutligen har vi kommit till den sista delen av animationen, där örnen faller sönder i smulor. För denna animation återanvände jag den brända örnen som underlag och för varje bildruta suddade jag bort en bit i taget från örnen och ritade ut smulor. Detta gjorde tills det inte fanns något kvar av örnen.

eagle_elec_sprite_sheet_3

Med det gjort så är hela animationen färdig och det tog 13 bildrutor med fördröjning på 0,06s.

eagle_elec_sprite_sheet_4

Varför är denna artefakt så viktig? Jo, anledningen till jag valde just denna feedback-animation är för vi behövde förmedla fara med att bli träffad av åskmolnet, och som jag sa tidigare så ville vi även förmedla fördelen med att använda åskmolnet för besegra dessa rovfåglar.

Kadar Ali, Grupp 16

Blog #5

Tjena!

Beta veckan har äntligen avslutat. Vi har jobbat stenhårt under helgen efter den hårda fast ärliga feedbacken från Marcus under pre-beta:n, och det hårda arbetet har gett resultat. Det kändes bra att få positiv feedback efter presentationen. Men nu närmar vi oss Final versionen och jag har under veckan fokuserat på feedback-animationer för varje fiendetyp i spelet Trowl, och jag kommer framförallt att diskutera om örnens feedback-animation. Denna animation kommer att ge spelaren en tydlig feedback när man har besegrat örnen med sina projektiler och den kommer även att återanvändes när örnen kolliderar med de ondskefulla grenarna som är ett hinder i vårt spel. Själva animationen är indelad i två olika delar, den ena är när örnen flaxar chockerande med sina vingar (under en väldigt kort tid) i ca 45 graders vinkel och den andra delen är en ”partikeleffekt” av fjädrar.

feathers

Jag började med flax-/chockanimationen, och här använde jag Photoshops Frame Animation för att göra animationen. För denna moment satsade jag på att gör en enkel men samtidigt kort animation, så att den inte stannar för länge på skärmen när man besegrar örnen. Men innan jag började animera, så använde jag örnens sprite (med utsträckta vingar) som jag gjorde tidigare som underlag. Med hjälp av underlaget kunde jag vrida sprite:n ca 45 grader, för att sedan rita den första bildrutan genom att rita om sprite:n. Anledningen till jag ritade om sprite:n var för att man förlorar pixlar när man vrider sprite:n på det sättet, och med tanke på att vi använder pixel-art så märktes det tydligt. När den första bildrutan var färdig så återanvände jag den som underlag (med lägre opacitet) för att göra den andra bildrutan. För denna bildruta behövde jag bara öppna upp vingarna samt näbben för att uttrycka chock. Med det gjort, så är flax-/chockanimationen färdigt och allt man behöver göra är att hoppa mellan dessa två bildrutor under en kort period (ca 5-7 bildrutor, eftersom att det ännu inte är implementerad).

eagle_hit_sprite_sheet

Nästa steg i animationen är ”partikeleffekten” som består av fjädrar. För denna del ritade jag ut fjädrar åt olika riktningar, för att sedan dra samman dessa fjädrar för den första bildrutan. Sedan drog jag isär dessa fjädrar och ändrade riktning för varje fjäder (samt att minska opaciteten för varje bildruta) för de resterande bildrutorna.

Feathers_PE

Varför är denna artefakt så viktig? Jo, anledningen till jag prioriterar detta är för vi behöver förmedla feedback till spelaren när man framförallt har besegrar örnen, men det är även ett sätt att förmedla faran i att kollidera med de ondskefulla grenarna.

 

Kadar Ali, Grupp 16

Blog #4

Tjena!

Beta presentationen närmar sig och våran grupp har jobbat intensivt under veckan för att få till alla features i spelet. Eftersom att jag har arbetat med rovfåglar under de senaste veckorna, så kommer jag att fortsätta trenden med att berätta lite om veckans arbete med örnens animation. För de som inte vet, så kommer örnen att vara den sista fiendetypen i spelet Trowl. Den här örnen kommer att vara lömsk och håller sig i toppen av skärmen, för att sedan dyka när avataren är precis under den. Själva animationen kommer att indelas i två olika moment, den ena momentet är när örnen flaxar med sina vingar (när den håller sig i toppen av skärmen) och den andra är själva dykmomentet.

eagle_dive_animation                                                       Eagle_animation

 

Jag började med vingarna, och här använde jag Photoshops Frame Animation för att göra animationen, vilket ger mig möjligheten att rita bildruta för bildruta utan att vara beroende av en Timeline. Innan jag började rita mina bildrutor, så använde jag förra veckans vinganimation av höken som referens där jag delar in vinganimationen i två olika flaxmoment. Ett flaxmoment är (enligt mig) när vingarna går från den högsta flaxpunkten till den lägsta flaxpunkten (eller tvärtom). I mitt fall kommer den första flaxmomentet att vara när vingarna går från den högsta flaxpunkten till den lägsta, och för den andra momentet kommer jag att återanvända den första delen fast i omvänd ordning (se sprite sheet 1).

 

Med hjälp av referensen började jag rita ut mina bildrutor för den första flaxmomentet, och här försökte jag använda squash and stretch från 12 principles of animation för att få en jämn och mjuk animation. Detta kan man framförallt se i bildruta 5 och 6 i sprite sheet:n, där vingspetsarna böjer sig mot kroppen. När den första flaxmomentet var färdig så behövde jag bara återanvända den första halvan, fast i omvänd ordning (se sprite sheet 1). Med det gjort så var vinganimationen färdigt. Det tog 14 bildrutor med fördröjning på 0,06 s för varje bildruta. Med hjälp av dessa 14 bildrutor kunde jag göra en sprite sheet i Photoshop.

Eagle_flap_sprite_sheet_ver3

Sprite Sheet 1

När vinganimationen var färdig så var det dags för dykanimationen, och denna animation tog inte så lång tid att göra. Allt som behövdes göra var bara att återanvända den sjätte bildrutan, vrida bildrutan 90 grader för att sedan tillföra luftströmmar som ska eftersträva fart. Med andra ord, så animerade jag bara luftströmmarna.

eagle_dive_sprite_sheet_BG

Sprite Sheet 2

Varför är örnens animation så viktig? Jo, anledningen till jag prioriterar detta är för att vi behövde förmedla örnens rörelsemönster på sätt som ser passande och som är lättförståeligt för spelaren.

Kadar Ali, Grupp 16