Lighting for architectural visualization in UE4.18 for VR

There are several glow controls. For example, if you want to change the brightness of the light (Brightness), you can enter a new number instead of "1,000000 ". Or, hold your mouse between the two black arrows on the right. Click and drag your mouse up or down and you'll change the brightness dynamically.


Near the field LightColor(light color), you can click on the magnifying glass to open color palette, You can also expand this tabLightColorby opening the color setting inRGB. You can also click on the mouse cursor icon to get a color that you can select with your mouse somewhere on the map. Try both ways now.

Here is a list of the most important properties.Be sure to try each of them on your own.


Brightness(brightness) - everything is quite obvious.
FalloffExponent- harshness of light or decay within its radius. Move the light close to the wall and play around with this value and you'll see how it works.
LightColor- color of light.
Radius- area of ​​light.
Other properties are best left unchanged, but we'll discuss some of them later.
Let's make the light orange, with a high enough brightness and a large radius to fill the room. Be sure to “rebuild (rebuild)” (Build Light) lighting to finally shape the light.


4) SportLight

Accommodation Spotlight a little more complicated than placement point light– you can find it in Actor'Oh Generic’a. Open your browser ( Generic) and go to the tab Actor Classes. Open " Light", and select Sport Light. (You will see two subcategories, SpotLightMovable And SpotLightToggleable. These are mostly used in animation or connected to gameplay, so we won't touch them for now.)
Right-click in your scene, and select " Add SpotLight here"You will see a spotlight white pointing down. Move it so that it appears to throw a circle of light somewhere.

Sport Lighthave all the same properties (color, brightness, radius, falloff), however they have several additional properties. Make sure the spotlight is selected and open its properties. Find two new properties.


OuterConeAngle- external angle of the cone (the angles here are from the axis of the cone to the generatrix, from 0 to 90 degrees).
InnerConeAngle- Hotspot control in the middle of the cone. If 0, then there will be “soft” light. If this is the same radius, it is equal toOuterConeAngle, the spotlight will have a bright circle of light. (Fiddle with this value and you'll see how it works)


You can rotate the spotlight using the standard rotation tool in the editor. You can also control it in first-person mode (by clicking on the "Lock Selected Actors To The Camera " at the top of the perspective viewer.


Change the angle of the cone Spotlight to cover wider areas. Adjust the lighting to get the final look.

5) DirectionalLight

This light affects all areas of the level, both inside and outside, there will be a shadow from the walls of the room or anything else. This light is best used on open levels.

You can find this light in the same place as SportLight. It may not be a big bug; when moving around the level, the lights on the walls may “flicker”. After “rebuilding” the lighting or turning the light, the flickering usually goes away.

Turn the light so that it doesn't shine straight down. To turn DirectionalLight you can do it in the same way as described in the section SportLight. But instead of that cone of light indicating the direction, there will be a small blue arrow.
If you have several close objects, then with a certain rotation of the light a shadow will appear from the objects.

When “rebuilding” the light, the shadows may look like this:

This shadow doesn't look very good, but it can be seen from a great distance.


But if you check the box, you spoilbForceDynamicLightin light settings andbCastDynamicShadowsin settings the desired object, then after “rebuilding” the light, the shadow will be clear:

But this shadow will disappear as you move further away from objects (You may notice that the shadow from different objects disappears at different distances). But such shadows as on Epic’s maps are not achieved with these parameters. They made them by hand.
If you do not need shadows, then disable "CastShadows"on the object you need, from which there should not be a shadow, or on the desired light source, if you do not want shadows from this light at all.

6) Sky Light

This light illuminates everything, everywhere, without creating shadows (because of this, minimal fallFPS), so it is better to use it on open levels or to ensure that there are no dark places in the level.
Let's add it (you can find it inGeneric’e, in Light'Oh).

Immediately the level becomes much brighter (except for the ceiling, which is unchanged.) Surfaces are lit "from above", so the floor receives a lot of light, the walls an average amount of light, and the ceiling remains unlit.There are two settings here (it’s difficult to describe what they do).

LowerBrightness- brightness (mix of colors, something like that, what is Hz anyway) (default 0)LowerColor- color (secondary color for less illuminated areas, walls and especially the ceiling).

By adjusting the propertiesSkyLight, we get the color below is bright red, and the color above is bright blue (with a fairly brightLowerBrightness, I see.)Noticeable as red and Blue colour but they united and made a wall purple. This should be obvious if you removePointLight.

And the last thing is the icon for SkyLight is very small, and most likely you will lose it in a large level. In properties, in Display categories, change DrawScale on 10 .

7) Placed everything together


Let's see how differentLightobjects are used in the scene.
Let's open (Unreal Tournament 2007\UTGame\CookedPC\Private\Maps\DM-RisingSun.ut3), so you can see how Epic has used these types of lights in a practical setting.
Load the map and you'll see something like this:

Look around. Do you know what kind of light illuminates what? There are a bunchPointLight And SportLightnearby are lamps and glowing doors. But what lights up the activity of the rocks in the background? Let's find out.
Click on the ";Toggle Show Flags"button and turn on"Light Influences". Select the rocks and you will see two blue lines coming out of them.

The lines will lead to twoDirectionalLight on the stage.

You will see that bothDirectionalLightdirected in opposite directions. And if you look into the properties, you'll see what they're doing on stage. One brightness (Brightness) 2.5 and emits yellow- he acts like the sun. Different brightness 0.25 and emits a pale blue color - light like from the sky. If you have deleted everything (to do this, right-click on any light source and selectSelect All Lights), with the exception of these two light sources, the space will still look good, with the exception of a couple of dozen objects that were specifically illuminated by other light sources.

8) Search

You can select lights in 2D or 3D viewports to find out what they do, but let's take a look at the tool -" Search for actors". You can open it by clicking on the binoculars icon at the top of the window - do this now.

Search for Actors opens a window with a list of everything on the map. But we just want to look at the light. Press " Containing" and then in the section " Search For", enter " light". The number of found objects is displayed at the bottom of the display, for example " 11 objects found".

So what do we have? Some directional lights, directional lights, And spotlights. Notification skylight. If you double-click on a light in the list that is being used in the scene, the camera will jump to that light.
Take a few minutes and look at the properties of each source and figure out the role of each in the scene.



9) PostProcess volume


Affects appearance and lighting level. PostProcess Volume is located around the entire stage. If you zoom out in the 3D window, you will notice subtle color changes in the arena. PostProcess volume controls brightness, and a bunch of other effects as long as the camera is inside it.
Select PostProcess volume and open its properties. (It looks like a purple field in 2D projection, or you can find it through Search for Actors.)

We develop virtual showrooms for real estate. In this article I will tell you how we set up lighting in our projects.

Setting the stage

First we set up Light Map Resolution all objects in the scene. For games, the Light Map resolution is usually left blue or increased to green (if viewed in Lightmap Density mode). But we will have to make the largest possible Light Map, since we will only use static light. For example, for a room I set the Light Map resolution from 1024 to 2048, for a table - 512-1024. If the resolution is insufficient, “pixelated” shadows appear, but we don’t want that. The most important thing is to find a balance between a good result and a build that is not overloaded. It is better to avoid build data sizes larger than 512 MB, otherwise there may be problems with compiling the executable.

Mode Lightmap Density

We place Box Reflections, Lightmass Portals, Lightmass Importance Volume on the stage.

Box Reflections We place it in each room according to its size to get reflections on the floor and metal objects. We use Planar Reflection only on mirrors, which we bring into our own level and then load through Level Streaming Volume, as this greatly affects FPS. And in VR the most important thing is stable 90 FPS!

Lightmass Portals We put it on windows and doors. Portals increase build time, so they can only be placed in dark areas to increase the amount of light.

Lightmass Importance Volume make it as large as possible so that it does not intersect with outer shell, otherwise there may be highlights on Movable objects. The main thing here is to experiment with the size of the Importance Volume itself and the amount of Volumetric Lightmap Detail Cell size. We use the value Lightmap Detail Cell size in the range from 25-50 — large quantity can give rough transitions to black, less — gives a bruised effect.

Sometimes there are problems with bald spots (leaks) appearing when building Cells, then you can change the MinBrickError=0 parameter in the BaseLightmass.ini file.

Box Reflections, Lightmass Portals, Lightmass Importance Volume

Check your materials in fashion Shader Complexity. If there are materials that are light pink, correct them.

Mode Shader Complexity

Lighting

Place a sphere with the sky material. The size of the sphere is approximately R=15000m. We make the material Unlit.

Material for the sky

We put it on stage SkyLight, make it Static. Disable the Lower Hemisphere checkbox in it. Don't forget to adjust the Sky Distance Treshhold, if its value is too large and the outer sphere is too small, the light from the SkyLight will not be calculated correctly and the entire scene will be black. Intensity is left at one.

We put Post Process Volume. Disable Ambient Occlusion - it affects FPS, since SSAO is built on top of the image. We will create subtle shadows using the Lightmass settings. Setting up the exposure. I change everything else as desired after the light build, mainly white balance and contrast.

SkyLight and Post Process Settings

We arrange local light sources. All lamps are static! For greater realism, you can use temperature values ​​similar to those of real light bulbs. 2700 Kelvin — warm white, 4000 Kelvin — cool white.

DirectionalLight— In this apartment we decided not to place the sun in order to get lighting that is more natural for our climate :) SkyLight produces even diffused light, which corresponds to the winter view from the window. But I'll leave the sun settings below that I usually use.

DirectionalLight

Lightmass Settings

  1. Static Lighting Level Scale. This option makes beautiful shadows of its own, but artifacts may appear because of it. We use a value of 0.2-0.3. It is important to remember that the closer the value is to 0, the longer the build takes. If you want everything super beautiful, use a value of 0.1, but then the build will take longer, you also need to increase the Indirect Lighting Quality value.
  2. Indirect and Sky Lighting Bounces— we bet on 10 bounces. I think this is optimal minimum value. You can make Indirect Bounces = 100 and Sky Bounces = 15, but I don't see a significant difference between 100 and 10. Only the first 3 bounces count for a long time.
  3. Indirect Lighting Quality— We use the value 10, it always gives a good result. In general, it is believed that the multiplied values Static Lighting Level Scale And Indirect Lighting Quality should be equal to 1, I advise at least not to use values ​​less than that.
  4. Indirect Lighting Smoothness. You don’t have to change this parameter; a value of 0.75 makes the picture clearer.
  5. Disable Use Ambient Occlusion. Disable the checkbox Compress Lightmass— this greatly increases the build time, but there will be no sand on the walls.

Lightmass Settings

Bottom line

All doors on kitchen cabinets are Movable. The light was considered quite even, there is a slight gradient on the white doors, but this always happens with white, if possible it is better to use darker tones.

By the way, pay attention to the table and the shadows from the plates. The shadows are blurry, the plates seem to be levitating. This happened due to the fact that this table has an incorrect UV mapping and, moreover, an insufficiently large Light Map Resolution - 64. For the first time, you can simply increase the Light Map Resolution to 512, but this still will not work good result. The scan is pinched somewhere, stretched somewhere, and the density will not be uniform, which can lead to artifacts. I will write about how to properly prepare 3D content in the next article.

Additional Information

About lighting:

I recommend watching it on YouTube Unreal Lighting Academy. The channel is hosted by Senior Lighting Artist Dice Tilmann Milde, who is responsible for lighting in Battlefront. Very useful videos, but in English and more than an hour long.

Shadows give objects a sense of contact with a surface, thereby providing a sense of depth and space. Static shadows appear as far back as the rendering progresses, but dynamic shadows can have a greater impact on performance. This document will show basic types shadows that are in Unreal Engine 4.

Static Lights

Static lighting casts completely static shadows and lights, meaning that this type of lighting has no direct effect on dynamic objects (static lighting is baked into the indirect lighting cache, so it has some effect), as in the example below.

The character in the picture above, the one on the left, is standing under a static light, the light and shadows do not interact with him in any way; and the one on the right stands under a stationary light source.

Direct lighting with cascading shadow maps (shading the entire scene)

Directional Stationary Lights- special light sources, because they support shading of the entire scene through Cascaded Shadow Maps, at the time of using static shading. This is very convenient on levels with a lot of animated vegetation; you want moving shadows around the player, but don't want to pay for too many cascades to cover large viewing distances. As the distance increases, dynamic shadows dissolve among static shadows so much that the transition is almost imperceptible. To apply this opportunity, just change the value Dynamic Shadow Distance StationaryLight V DirectionalLightStationary to change the dissolution distance.

Shadows of stationary light sources

Dynamic objects (such as StaticMeshComponents And SkeletalMeshComponents with mobility set to Movable) must be integrated into the world static shading at the distance of the shading map fields. This is achieved using shadows for each object. Each moving object creates 2 dynamic shadows from a stationary light source: one to control the static shadow projected onto the object and the second to control the shadow projected onto the rest of the world. With this setup, shading for stationary lights comes from the dynamic objects it affects. This means that the cost can range from very little to huge, depending on how many dynamic objects are present. If there is enough number of dynamic objects, it will be more effective to use Movable lighting. In the scene below, the spheres are moving objects, and they all receive shadows from the static world and project their own shadows, which connect with other shadows in the distance. Frustrum Per Object shadows for each moving object are also shown.

Per Object shadows are used for moving components using a shadow map of the object's boundaries, so the boundaries must be precise. For skeleton meshes this means that they must have physics asset. For particles, any fixed bounding box must be large enough to contain all the particles.

Dynamic shadows

Moving light sources project fully dynamic shadows (and lighting) on ​​everything. Lighting information will not be baked into lightmaps. Static meshes, Skeletal meshes, effects, etc. will receive and project dynamic shadows from moving light sources.

Dynamic shadows are the most resource-intensive.

Shadow preview

When editing stationary or static lighting, shadows can become "unbaked" Preview Shadowing shows you what your shadows will look like after baking.

Such (meaning unbaked) shadows are shown in the editor with the text “ Preview“, to recognize them among other shadows.

If you test your game in the editor before re-baking the lighting, the shadow previews will disappear, since they only exist in edit mode, and not in game mode in the editor.

In order to get shadows from the shadow preview, you need to select the option Build Lighting from the menu Build.

You can disable shadow previews by unchecking Preview Shadows Indicator in the viewport Show/Visualize menu.

If you want to change the text material of the lighting function that projects this text, then you can find it in: Engine/EditorMaterials/PreviewShadowIndicator.

Together

When all the shadows are brought together, each one brings its own strengths and compensates weak sides others - they impress with their appearance.

Simulates sky lighting by capturing a panoramic image (also called Cubemap) distant parts of the scene (which are further than the parameter SkyDistanceThreshold), and using it as lighting. This means that the lighting from will be similar to the surroundings of the scene. This will also capture side objects, such as superimposed clouds on the skybox or mountains around the scene. You can also manually install a Cubemap, which will illuminate the space.

The image will only change when you recalculate the lighting or update the scene using the command Build -> Update Reflection Captures. You can also update SkyLight using the button Recapture Scene in parameters. Please note that if you change the sky texture or environment beyond the SkyDistanceThreshold parameter, the lighting will not change automatically.

Can be used instead Ambient Cubemap, because Sky Light supports local shading, which prevents skylight from illuminating interior spaces.

There are two types depending on mobility:

Environmental reflections work by capturing a static scene at many points and reprojecting them into simple shapes, as in reflection spheres. The user selects the capture point by placing an ector ReflectionCapture Reflections are updated in real time to help adjust their position, but are static when rendered. Projecting captured scenes into simple shapes gives an approximate parallax for reflections. Each pixel is mixed between multiple cubemaps to produce the final result. Smaller ReflectionCapture ectors override large ones, so you can refine the reflections in areas as needed. For example, you can place a gripper in the center of the room, and then refine its reflections by placing smaller grippers in the corners of the room.

Materials with different glossiness are supported by creating blurry mipmaps from captured cubemaps.

However, using cubemap reflections alone on very rough surfaces results in overly bright reflections that have significant leakage due to the lack of local occlusion. This is solved by using lightmap data created by Lightmass.The cubemap reflections are mixed together with an indirect specularity lightmap based on the roughness of the material. Very rough material (fully diffuse) will converge with the lightmap result. This mixing is, in fact, a combination of parts of the lighting data - high-detail (cubemaps) and low-frequency (lightmaps). In order for this to work correctly, the lightmap can only have indirect lighting. This means that only diffuse lighting from stationary light sources can improve the quality of reflections on a rough surface. The static type of lighting cannot be used in conjunction with environmental reflections, since it will give direct lighting to the lightmap. Please note that in order to see the result of this blending, the lightmap must be built at least once, and the map must have significant indirect diffuse lighting.

Reflection Capture Forms

There are currently 2 shapes of reflection capture: sphere and box. The capture shape is very important as it controls what part of the scene will be captured in the cubemap, how the shape of the scene will be reprojected in the reflections, and what part of the scene will be able to receive reflections from the cubemap (zone influence).

Sphere shape

The sphere shape is the most used. It never matches the shape of the reflected geometry, but it has no breaks or corners, hence the distortion is uniform.

The sphere shape has an orange radius of influence which controls which pixels can be affected and captured in the cubemap and reprojected into the sphere.

Capture points with a smaller radius overwrite data from larger capture points.

Box shape

The box shape is quite limited in application, and is mainly used for corridors and rectangular rooms. The reason is that only the pixels inside the box can capture reflections, and at the same time, all the geometry inside the box is projected according to the shape of this very box, creating significant artifacts in many cases.

When a box is selected, it has an orange outline around the projection shape. The box shape only captures what is inside the box, and the capture fades away from the center.

Editing

It is important to note that capturing reflections does not happen automatically. Reflections are only recaptured when loading the map, direct editing, or re-baking the lighting. If you change the brightness of the light or move the geometry in the scene, then you need to select the capture point and click Update Captures to update the data capture.

A Reflection Override display mode has been added to make it easier to see how reflections are set up. This mode overrides all normals by smoothing out the normal vertices, and makes all surfaces completely specular and completely smooth (like a mirror). This mode clearly shows limitations and artifacts, so it is worth Sometimes switch to this mode to see how reflections behave under normal conditions.

Several new useful flags have been added to isolate some lighting components:

Adjusting the level to use ambient reflections


Performance issues

The cost of environmental reflection depends only on how many captures affect a pixel on the screen. This is very similar to deferred lighting. Reflection captures are limited by their radii of influence. Specularity is implemented through a mipmap cubemap, so the performance difference between sharp and rough reflections is small.

Restrictions

  • Reflections using this method are approximate. In particular, the reflection of an object rarely matches the actual shape of the object in the scene due to the projection of it onto simple shapes. This results in multiple views of that object being created in reflections since many cubemaps are mixed together. Flat , smooth surfaces that give specular reflections, will show errors more noticeably. Use detailed normal and reflection maps to break up reflections.
  • Capturing a scene into cubemaps is a slow process that must be done outside of the game. This means that dynamic objects cannot be shown in reflections, but they can still receive reflections from a static scene.
  • To reduce error, only the diffuse of the scene is captured. Purely specular surfaces (metals) will have their specular application as if it were their diffuse during capture.
  • Shading

    Moving lights are configured to cast dynamic shadows, which greatly impact performance. It is worth noting that the consumed resources increase mainly from the number of objects illuminated by moving light sources, as well as from the complexity of the geometry on them. It turns out that a light source with a small radius will affect performance much less than one with a large radius, since, usually, much fewer objects fall into the small radius.

    In the category " Transform"In the settings of any light source you can find the parameter " Mobility"("Mobility"). Change it to " Movable"("Movable"). This property also affects light sources added to the blueprint.

Introduction

My name is Lasse Rohde and I am a representative of xoio studio. We are a small agency specializing in rendering and illustrating architectural and marketing work. We typically work in a sort of "traditional" 3d environment using applications such as 3ds Max and the like. We are constantly testing new rendering engines and currently favor Corona Renderer, V-Ray and Octane. Each “engine” has its own strengths and we always try to use each for our own purposes. In my opinion, there are several main trends in our industry: the desire for photo realism and quick results - if we are not talking about real time. Not waiting for the result to be ready on the render farm has always been a dream for us - especially when creating animation! The main disadvantage of “real time” for a long time there was insufficient quality compared to "pre-rendered" images and animations. So while it looked very interesting, its application in a visualization context seemed hard to imagine - and, frankly, looking "gamey" was a hard sell to discerning clients in the architectural and enterprise fields. But things changed dramatically. The results created in “real-time engines” today are very beautiful and convincing!

Why Unreal Engine?

The release of UE4 received a lot of attention in our industry and the possibilities seemed endless. The PBR (Physical Rendering) material system and simple workflow for creating a model in Unreal Engine was the most compelling reason for us to give it a try - it's an opportunity to get extra quality! If you've seen Koola's work (also available for download on the Unreal Engine Marketplace), which went viral a few weeks ago, you'll probably be as convinced as we are that Unreal Engine 4 is capable of impressive quality. In this article, I want to give you a quick rundown of the workflow for creating a Berlin Apartment scene, which you can download from the Marketplace (Unreal's branded store) and see some of the techniques and techniques I came across while working on the scene. Some of them I found on my own, while others are derived from information I found on the Internet. In Unreal Engine, the forums and documentation are extensive and extensive resources, as is the core content that comes with the "engine" and scene packs that you can get from the Marketplace.

Berlin apartment

I have been creating a series of images of this apartment in a historic building in Berlin since 2013 using 3ds Max with Corona Renderer. It's a flexible way to handle color mapping that really helped bring out the light mood of this scene. This was also the reason for choosing UE4 for testing. I noticed that UE4 was used quite successfully in scenes with moody lighting and noisy textures. I suspected that it wouldn't be that easy to get accurate shadow and GI (Global Illumination) in an ultra white interior. And to be honest: It's not an easy task!

Fig 1.

Above is the original render made in 3ds Max and Corona Renderer. To see other images, click .

Below is a video of the finished scene

I'll start from the beginning:

Original SceneThe modeling was done in 3dsmax in a hurry. So I'll really only go into detail on the parts that are reflected in the final images. This approach is of course not possible in real-time environments. To change the target's purpose when used in Unreal Engine, I had to scale back a bit because furnishing and detailing the entire space would have taken too much time to test.


Fig 2

I decided to export only two rooms: you can see them at the bottom of the screenshot above.

Export geometry forUnreal Engine-this is a very difficult task IF you have several ideas! It makes sense to divide these ideas into parts. Because Lightmass is calculated in a separate map for each object, it is good to be a little careful with high values ​​especially on large flat objects such as walls and ceilings. Because of this, I only exported the interior surfaces of the walls that we actually see. I also added a bit to the top and bottom of the walls to intersect them with the ceiling later. I think that it is good way to prevent “light leaks” - light artifacts that appear when the geometry is not covered or does not intersect. It's not a problem when it's a dark scene involving large quantity textures - but since we want super-white space, it's important to create as accurate GI (global illumination) as possible, especially in the corners.


Fig.3

Second most important thing— create a scan coordinated for the GI channel, which will be saved for lightmass calculation in the UE. In 3ds Max this would be UV channel 2. Channel 1 is for using all other textures such as diffusion, roughness, normals, etc. Unreal Engine calculates channels starting at 0, which can be a little confusing at first - but once you get the hang of it, it's simple. Note: Unwrapping is only important for the light-map channel! For a texture channel, any kind of mapping can work, such as cubic or cylindrical. In most cases, the flatten mapping operation in 3ds Max with the Unwrap modifier (obtaining a sweep where the threshold and degree of unfolding can be set) is sufficient to obtain UV coordinates.


Fig 4

If you want to get all the objects in the scene in UE4 as it was in your max-scene, then you need to modify the models to insert them in the places where they were during export. For single objects, such as chairs, it is convenient to export to Unreal Engine once and copy it inside. To do this, you need to move the objects closer to the center in your 3ds Max scene, because the center of the object (pivot) in UE will be there.

Fig 5


Fig 6

You see I'm using high poly geometry without LOD (level of detail) simplification. This is, of course, only recommended in small scenes like this, but since I have experience smoothing out geometry and I don't want any jagged edges on my furniture, it makes sense to me. Although I have no doubt that the room requires optimization ;). Make sure that your geometry will be combined into one object and the elements have different each their own material ID for processing different materials later in UE4! Well, save the geometry in .fbx resolution and move on to the Unreal Engine editor! Import toUnreal Engine 4 Importing FBX files into Unreal Engine 4 works quite smoothly! I did this in several stages. I prepared various files, in this order: - Room geometry in a separate FBX file. - Different files for the models, each with multiple objects in them. Make sure to uncheck the Combine Meshes checkbox to get your objects separate and not combined into one object!

Fig 7

Materials

I'm quite outspoken and a big fan. simple installations! So the example shaders are very simple, consisting of a diffuse map, desaturated and mixed with black. The same map is color corrected and inverted in the roughness channel. Ready.


Fig 8

A Normal map would be overkill here, but don't limit yourself to exploring the materials in the scene.


Fig 9

Here you see the wood material used for the chairs and table - the dark wood with a matte reflection reveals the structure and texture of the wood. In the next image you see twice as many materials that may be of interest, curtains, backlit sunlight– made of double-sided material.


Fig 10

You must set the Shading Model to "Subsurface" and add a constant node with a value less than 1 and link to your material's opacity property to get this effect. The glass in the foreground has a very simple glass material applied to it:


Fig 11

He has quite dark color diffusion, zero roughness and high specularity. I also applied a Fresnel node with a value of 1.5 to control the opacity and refraction as in real life. There are many more complicated ways getting a more realistic glass - but I honestly had some trouble getting control over the parameters, so this simple glass seems to work out quite well. Note: I selected Two Sided and set the lighting's translucency mode to "TLM" Surface" on the Details tab in the left panel.


Fig 12

The material that I want to show is the material that was applied to the floor, I want to show it because it is the only material that has a normal map applied to it


Fig 13

Here you see a material with diffuse color, rough texture and a normal map. The color is light gray, with the value 4. The roughness looks a little more complex: On the left you see the same map, three times larger, with a TexCoord node. The red channel is multiplied by the others and then connected as alpha in the Linear (Lerp) node interpolation to mix their values. 0.3 and 0.2 in this example, we get a subtle noisy reflection on the floor of the boards. Then we modify it with the “Power” node to get required quantity roughness, and this material also came out well. Normal is again exposed to TexCoord, and then unrolled through the “FlattenNormal” node to get only a thin relief on the material. Model preparation Before adding objects to your scene, it's always best to scatter your materials geometrically. You only have to do this once and can apply different materials. It's a quick process: Here you can see how important it is to apply different material IDs to your objects in order to place the different materials where they belong!


Fig 14

Building the scene In short, import everything together. First, you must drag geometry into the room. The best way, assemble a scene – drag & drop into an empty scene.


Fig 15

The polygons of the outer part of the walls are not visible here - as I explained above: they are only one-sided for better Lightmass calculation. In such cases, it would be good to set the Lightmap (obtained by scanning) resolution for your large objects with high value, for walls, for example, I set the value to 2048.

Fig 16

As mentioned above, "light leakage" can be a problem. To prevent this, I placed black boxes around the entire stage. It looks a little messy on the outside, but it's clean on the inside ;)


Fig 17

Lighting and its parameters

The lighting setup is also quite simple: I used the "Koola method" - a combination of the sun and spots of light in the front of the window to simulate the flow of light. It is very effective and easy to manage! Now only a few settings are important for calculating global illumination

Fig 18

I have significantly increased the reflected rays and lighting quality. I also lowered the smoothing to 0.6. Details are better defined and shadows don't wash out as much. I also adjusted the direct lighting in the dynamic shadow to get better shadows. This is also important for light movement later in the animation!

Fig 19

The last step before clicking “Create” is to set the Lighting Quality to “Production”.

Fig 20

This should result in smoother lighting throughout! Actually, when I got to this point the first time, I was delighted! That's actually the strong part of this engine: getting you excited! Being able to move inside my "render" in real time was a truly joyful moment! Post-processing One of the biggest features is the ability to apply color correction and camera effects right in the editor. This can be done with PostProcessVolume in global settings. I made some adjustments to saturation, fringing and vignetting, chroma and turned off auto exposure by setting the min and max values ​​to 1 and increased the overall brightness by setting the exposure compensation to around 1.42. I also added a highlight, which I find amazing because everything happens in real time!


Fig 21

Animation settings The ability to move freely within the scene makes animation a very easy and enjoyable task due to the instant feedback real-time environments. How frequent user software For compositing, it didn't take me long to adapt to the integrated tools and set up the animation. The first thing to do was create a Matinee Actor (a toolkit for creating video sequences)

Fig 22

When you open Matinee, you will see a window with a tracking section and a curve editor.


Fig 23

Setting up the camera and animation is simple. Movement is controlled by keyframes and curves just like in other animation programs. Editing work is carried out only in Matinee editor.


Fig 24

You can see the camera path just in the editor and control the editing on the fly! After the rough animation is done in Matinee, I export the animation as .AVI and finish it in Premiere and fit it to the music.

Conclusion

The whole process, from exporting from 3ds Max and importing into Unreal Engine 4, working with shadows and lighting, creating animation, and then posting it on YouTube took me about a day. This speed is unheard of in ArchVIZ and reflects the key potential that lies at the heart of using Unreal Engine 4 to render work. The lack of rendering during the “production” stage of images truly makes the creation process very flexible and free. The quick result of our actions is a real revolution! We are constantly testing and thinking about the possibilities of using this type of creation and technological process in our daily work. There are many possible applications and we would love to explore them! Lasse, xoio