Daniil Osipov dived into the production process of his Lighthouse scene made with Megascans assets, shared the details of his UE4 Master Material workflow, and explained the composition process of the 3D environment.
Hello! My name is Daniil Osipov. I’m a self-taught 3D Environment Artist living in Dzerzhinsk, Russia. Currently, I’m in my final year at Nizhny Novgorod State Technical University studying Information Technology in Design.
Since childhood, I’ve been interested in computer technologies and games. And when I was 13, I started learning After Effects to do short game clips and motion graphics. A couple of years later, I got interested in 3D under the impression of Mike “Beeple” Winkelman’s works. In 2018, I was lucky enough to get my first freelance job visualizing concept designs at Art. Lebedev Studio. However, for the last 3 years, I have been exploring real-time graphics and game environment creation.
The idea for this project came almost a year ago when the Megascans Ecosystem became free to all Unreal Engine users. Back then, Quixel’s Rebirth video really inspired me, so I decided to make an organic environment. This is when I discovered the wonderful work of Jakub Cervenka and immediately realized what type of location I wanted to do.
After that, I set for myself goals and tasks to be solved:
- Using Megascans Ecosystem in production;
- Developing complex master materials;
- Using ray-tracing features and dynamic lighting;
- Creating animation for the final presentation.
In addition to technical skills, I also wanted to improve my compositional and storytelling skills.
Before starting the blockout, it’s crucial to pick up a pack of references to make a solid base of inspiration and set a certain quality bar. To determine the size of the lighthouse, I made simple overpaint with measurements. Taking the average height of a person to 1.8 meters, you can easily guess the size of almost any object in the scene through the proportions.
To recreate the illustration with the correct size of the object in the engine, I added to project scene UE4 Mannequin and cylinder primitive, that indicated future lighthouse. As a next step, I placed a camera with the same frame proportions of original art. Landscape tools with a standard round brush were used to sculpt the coastline. Since the blockout stage consists of basically working with primitives, there is no difficulty to do different variations of the landscape and object placement. After a few iterations, I came to the size of the scene that suited me, it kept division into the foreground, middle ground, and background. This division is necessary to add a sense of depth to the scene.
I reduced the size of the lighthouse because in 3D it seemed to me that too large a lighthouse would require too much space to polish around it. Moreover, that would result in unnecessary time spent on the next stages.
I continued further development in Blender, where I exported the engine objects as .fbx. At this stage, I optimized the ground topology, UV’ed, and imported it back to the engine as a static mesh. This way, I was able to start working with the Megascans library sooner. Because of the simplicity of working with the Quixel Bridge, I immediately began to add assets to the scene, marking main areas for further refinement. At this stage, I also added several light sources to get closer to the illustration’s lighting scenario. I ended up with a pretty detailed version of the blockout in about 3 hours of work.
Working on Assets
After I exported the primitive cylinder to Blender from the engine, I made a more refined model of the lighthouse, added windows, modeled the viewing platform, and roof. I constantly checked the overall look of the model in the engine. This helped me to determine the size of details that would not seem too small in the final image.
Then I used Substance Painter to make simple materials, where each material included 2-5 fill layers just to create enough variation in color and roughness.
Almost before the end of the project, I changed the lighthouse model and added window frames, a Fresnel lens, and replaced the stone base with metal structures Since I did not plan to take close-up shots of the lighthouse, I worked with large details on textures that would be read well enough from distance.
As a base for my master material, I chose an early version of the blend material that automatically generated with the Megascans plugin in Unreal Engine. It has recently been updated and became even more user-friendly, be sure to look at it in action.
I developed materials with the possibility to use vertex painting with sequential mixing of textures, based on the height information in the texture maps.
For every color channel in the Vertex Color node, I associated sets of 3 textures: Albedo, texture with channel packed Roughness, Metallic, Displacement, and finally Normal Map. Alpha channel in vertex color was used for Liquid Layer from Megascans blend material. The concept of blending masks is pretty simple – with every HeightLerp, I created some sort of a texture layer, that blended into the next layer by its height info. I wish I knew more about material functions back then to simplify that node graph. All of this is the only major change I made to the original Megascans blend material.
With that setup, I could blend up to 5 texture sets. It worked well in hiding textures tiling and adding variations to the ground material. To make tiling even less noticeable I placed decals of rippled sand, using standard decal material from Quixel.
For the lighthouse and rock material, I removed tessellation and displacement nodes from the blend material. In addition to vertex paint, I also used decals to add wall damage and rust stains on the lighthouse.
The possibility of color tint textures was used to maintain color consistency between different assets; this option also comes with Megascans master material. The Megascans integration in Unreal Engine allowed me to significantly reduce my time on content creation. Thanks to that, I could focus more on the overall mood of the scene, its composition, lighting setup, and much less on technical aspects.
For crashing waves, I created a texture atlas of wave photos in Photoshop. In the next step, the alpha channel was generated using a Black and White filter and Curves on top of those photos. From that setup, I also made less contrast Height texture for the Bump Offset node inside the engine. That textures then mapped on curved planes in Blender.
The material itself is quite simple, I added only brightness and color adjustment to the emissive channel and a small shift of texture coordinates through the BumpOffset node. BumpOffest added a motion blur effect, which is best seen on small splashes.
The composition of the original illustration didn’t work for me in 3D as there was a lack of an original sense of depth. The visual division between the foreground and the middle ground was unnatural and too boring to read. The central composition of the original Jakub's piece reflects the stability and greatness of the lighthouse against the storm, but It didn’t work that well in 3D. Therefore, I decided to add more dynamics to the scene and tell a story that the lighthouse is functioning, and the keeper periodically goes to it, perhaps from the house that is behind the camera. For those reasons, I rotated the camera and added a footpath to the lighthouse as a main guiding line. Adding such paths into the composition is a simple way to attract a viewer’s attention.
I really like how fences in the foreground set an interesting rhythm because of their unique silhouette and allow keeping the viewer's eye on the picture. Wooden steps and handrails at the lighthouse entrance suggest where to go further in composition, also it’s one more detail to support an idea of human presence in the scene. Along the footpath, I placed several groups of grass to add more details to explore and keep the viewer’s attention. In the middle ground, I placed a destroyed boat in order to fill an empty space and to connect the foreground. The intersection of the boat nose and the stone creates a point of tension and allows you to go from reading one form to another.
I tried to make the background with sky calmer and not as rich in detail as the rest of the shot. On the left side, I placed a mountain that acts as a counterbalance to a turn of the footpath and balances the whole composition. In addition, mountains in the background support the movement to the lighthouse with their silhouettes and add more depth to the scene.
For this project, I set myself a task to learn how to use different methods in achieving strong composition. Because of that, I constantly analyzed shots for the presence of rhythmic repetitions, a grouping of details, the contrast between details, and rest areas. I also tried to avoid the same distance between objects in their groups. Though it is a natural instinct to place objects that way, it eliminates the feel of natural chaos and dynamic in such organic composition.
I changed the lighting in the scene about 3 times, until I came to a more natural lighting scenario, where light beams pass through the cloudy sky. In this way, I could explain quite a bright illumination of some areas and deep shadows in others. To some degree, I was inspired by the works of Hudson River School artists, particularly, Albert Bierstadt.
Everything in this scene is lit dynamically primarily with soft spotlights. I placed HDRI Backdrop as a base for cold shadows and background sky fill. After that, the Directional light and Sky Atmosphere were placed to establish the main sunlight direction and shadows silhouettes. I lowered the sun closer to the horizon to add long shadows to the scene and make the lighting warmer - this created a good contrast between cold sky and warm ground. The effect of the HDRI here was minimal. As a next step, I added two soft spotlights to highlight the lighthouse and support the light beam that comes from the bottom left part of the image. After that, I added spots to the lighthouse roof and too far left rocks to blend them more naturally. Finally, I added more lights to the middle ground in order to break the uniform look of it. In that lighting scenario, I tried to emphasize the materials of the lighthouse and the complex shapes of rocks. The lighthouse here is a dominant figure in the entire scene, and I really wanted to transfer that feeling of dominance through the light.
To bring into volumetric clouds a cold tint, I adjusted colors settings in the Rayleigh, Absorption, and Art director sections of Sky Atmosphere. To boost colors even further, I played with anisotropy, ambient, and brightness boost parameters in clouds material.
In addition to lighting, I was constantly checking tonal contrast by turning on the grayscale filter in Windows or looking at a more simplified version of shapes using Polarize filter in Photoshop. The lighthouse is the most bright part and important compositional center of an image. Because of its brightness, it naturally attracts more attention than middle ground and foreground. To create this contrast, I decided to stick with a ratio of 70% of medium and dark tones and 30% of highlights.
At this step, I first locked the exposure in Lens settings by adjusting the Maximum and Minimum Brightness to 1. It is also an important step to keep consistent lighting without an auto-exposure effect. For color correction, I lowered the overall contrast in the Film section, to fix extreme clipping in shadows. Then I tweaked Color Grading sliders to compensate for the green shade coming from the sky atmosphere and enabled ray traced Global Illumination with Brute force method, it gave natural light distribution in such open natural scenes.
Final adjustments were made in Photoshop using Camera Raw Filter. I tweaked color saturation, highlights, and shadows brightness. A footpath was accentuated with levels.
This project was super fun and challenging at the same time. The most difficult part was building an effective composition in which all elements from the arrangement of objects and lighting to the final colors would work together in harmony. Due to time constraints, I learned to iterate more effectively and change only those things that have the biggest impact on the final look of the image.
In addition, I re-discovered the importance of rest. Because of the continuous work on the one-shot, eyes get tired and can no longer effectively judge image quality, resulting in reduced productivity. When I noticed such drops, I took a break in the project for a couple of days or even weeks. During those breaks, I sometimes looked for references just to get a fresh portion of inspiration and motivation. After even a short rest, you begin to notice things that were out of your vision before. Maybe it varies from person to person, but this is what helped me a lot during this project.
I would like to thank Ilya Ivanov for providing feedback. It was very useful to see my work from a different point of view and hear valuable advice. Of course, huge thanks to my friends, who always support my geek interests!
Special thanks to the 80.lv team for this amazing opportunity and thank you for reading!