Evermotion Pass 10% Off - Get Instant Access to Thousands of 3D Assets

Check Plans

Information Clause

In accordance with the art. 13 section 1 and 2 of the European Parliament and Council Regulation 2016/679 of the 27th April, 2016 on the protection of natural persons, with regard to the processing of personal data and on the free movement of such data, and repealing Directive 95/46/EC (General Data Protection Regulation), hereafter RODO, I hereby inform that:

1. EVERMOTION S.C., 8 Przędzalniana Str., 15-688 Białystok, Poland is the Administrator of your Personal Data (APD)

2. Data Protection Inspector can be reached through e-mail: iod@evermotion.org

3. Your personal data are to be processed on the basis of art. 6 section 1 letter a, b and f of RODO in order to:
a) prepare, conclude and execute the agreement and for other purposes approved by you,
b) to execute the legitimate interest like marketing of products and the agreement, claim assertion or defence against claims resulting from the law regulations.

4. Entities entitled to the reception of your personal data may be the authorised public bodies; mail providers; providers of the services covered by the agreement; responsible for debt recovery, keeping the archives, document utilization, legal consulting, technical services, IT services and accountancy.

5. Your personal data shall not be transferred to the third country, nor to the international bodies.

6. Your personal data shall be processed within the period of the agreement and upon your additional consent until you withdraw it. APD shall keep the data for the period of any civil law claim execution connected with the agreement.

7. You have the right to demand an access to your personal data, to correct or to delete the data if there is no other basis for the processing or any other purpose of such processing or to limit the processing of the data, to transfer the data to another administrator and to raise objections to the further data processing if there is no legal basis for further processing and to withdraw any previous consent.

8. You provide the personal data voluntarily, however they are necessary to conclude the agreement. The refusal of providing such data may result in the refusal of the agreement conclusion.

9. You have the right to lodge a complaint to the Personal Data Protection Office when in your opinion the data processing violates the regulations of General Data Protection Regulation of the 27 April, 2016 (RODO).

10. Your data will be automatically processed, including the form of profiling.
11. You are obligated to forward above mentioned information to your representative, especially if you appointed this person in the agreement as the contact person or as the representative for the agreement execution.

OK

Paint puddles in Unreal Engine - Tip of the Week

Michał Franczak 2017-05-11 15:27 tutorial  > Unreal Engine  > texturing

Create water puddles, paint strokes and mix different textures and material parameters with vertex painting.

Hi!

This week we will learn how to use Vertex Painting to make some water puddles on a pavement.

Click on image to enlarge

slice1_3.jpg

Fo the purpose of this tip, I created just a simple rectangular box. I tesselated it quite a bit and imported to Substance Painter 2. I wanted some bumpty pavement material so I downloaded Stone with Sidewalk material from Substance Source Library. I exported textures in 2K with two sets: Unreal Engine packed and "Document channels + AO". I needed this second preset, because I wanted to have additional height map, it will be useful later.

 

Click on image to enlarge

slice2_3.jpg

I imported my box to Unreal as FBX. As you can see, the mesh is pretty dense, it will be great for painting, because the strokes will be more precise. It will cost a lot of processing power though, so I recommend to tesselate with moderation - it's a bit of overkill here.

 

Click on image to enlarge

slice3_3.jpg

I plugged textures exported from Substance Painter (Unreal Engine packed set) to new material. I also made small function for controlling tiling of the texture. I used scalar parameter muliplied with TextureCoordinates and put it in each texture UV slot. This way I will be able to change tiling whenever I will want to.

 

Click on image to enlarge

slice4_3.jpg

The water has a different color than bricks, so we need to use color space that varies between pavement texture and a water color. We use LERP for this (just imagine it as a gradient between parameters). We control the mix with our Vertex Color. We just need one channel for that. In this case we use red. To add LERP node, press "L" and left click anywhere on the free space of Material Panel. To add "Vertex color", right click and type "Vertex Color" in a search box.

 

Click on image to enlarge

slice5_3.jpg

We place our LERP function between base color texture and base color sample slot. Now, if we will paint with red color, we will get white color over our pavement. We could use even different texture if we would like to.

 

Click on image to enlarge

slice6_3.jpg

I saved and closed the material and created material instance. The instance is now assigned to a box. And it became completely white. The reason of that is simple - by default, new object has 1 in each vertex color value (which means it's already "full covered with water". We need to erase this color -> let's fill it with 0 value in red channel. What will happen?

 

Click on image to enlarge

slice7_3.jpg

By painting with "0" (black) value in red channel we reveal original color of pavement material.

 

Click on image to enlarge

slice8_3.jpg

We painted all mesh with black in red channel, so now we have our "original state" of the material back.

 

Click on image to enlarge

slice9_3.jpg

The liquid should also have a different roughness than the stone, so we insert another LERP function that will vary between stone roughness and liquid roughness basing on red channel vertex paint. We use 0 as a default value of new parameter.

 

Click on image to enlarge

slice10_3.jpg

As you can see, our white liquid became more glossy / less rough.

 

Click on image to enlarge

slice11_3.jpg

Another LERP goes into Normal slot. We vary between original Normal map that we exported from Substance Painter and a solid 100% blue color from Unreal Engine 3 Vector node. To add this node you need to press "3" and left click anywhere in material panel.

 

Click on image to enlarge

slice12_3.jpg

After saving our material, we get rid of stone bump over liquid.

 

Click on image to enlarge

slice13_3.jpg

Let's change liquid color in material instance.

 

Click on image to enlarge

slice14_3.jpg

Liquid is more blue, but still 100% opaque, we need to fix this.

 

Click on image to enlarge

slice15_3.jpg

First, let's add another LERP in AO slot, so we don't get AO artifacts over our liquid.

 

Click on image to enlarge

slice16_3.jpg

Now, we can import our height map to Unreal, but first we need to tweak it a bit. I used levels to increase contrast of the map. It will be usefull to simulate liquid in the space between stones.

 

Click on image to enlarge

slice17_3.jpg

If we substract our map from Vertex Color we get more liquid in the black areas and less in the white areas. Which means - more liquid in lower areas, pockets and scratches. 

 

Click on image to enlarge

slice18_3.jpg

The result is wet pavement.

 

Click on image to enlarge

slice19_2.jpg

Just for fun, let's crank up the levels and reimport the map.

 

Click on image to enlarge

slice20_2.jpg

The result is much more prominent, but still - we don't have a puddle, only some wet stones.

 

Click on image to enlarge

slice21_2.jpg

First, let's use our UV texture coordinates on this map...

 

Click on image to enlarge

slice22_2.jpg

Now by dividing our "substract" node by scalar parameter and clamping the result between 0 and 1 we can get our liquid offset (LiquidLevel node on the image).

 

Click on image to enlarge

slice23_2.jpg

The result of increased LiquidLevel - much more liquid! And we can bring even more by increasing LiquidLevel value in material instance.

 

Click on image to enlarge

slice24_2.jpg

The final touch: if we multiply our liquid level by scalar parameter, we can change the opacity of the water. We don't want to change roughness, normal or AO values, just the color. So we place Multiply slot between our vertex Painting node group (which ends with Clamp node) and LERP node that controls base color.

 

Click on image to enlarge

slice25_2.jpg

The result is transparent water. We can go further from here with painting  displacement, but it's just a simple tip, so we are ok for now. Have fun!

 

 

Author: Michał Franczak Editor: Michał Franczak
Tags: textures water puddle unreal liquid vertexpainting
You may also like...
Tip of the Week. Puddle shader

Tip of the Week. Puddle shader

Andy from Evermotion shows how to create a puddle shader with painted mask.
×

LEAVE A COMMENT

You need to be logged in to leave a comment. Don't have account? Register now.