Making a Merlin’s Cave in UE4

Lea Kronenberger did a breakdown of her UE4 environment that won the 1st place in the recent ArtStation challenge. She talked about scene production, materials, VFX, lighting, and more. Other software used: Substance Designer, 3ds Max, ZBrush.

Introduction

Hi there! My name is Lea Kronenberger, I’m 27 and I’m a passionate 3D artist with a background as an architectural draftswoman. I love creating environments and always strive to improve! 4 years ago, when I was working as a CAD-draftswoman I discovered my love for 3D art through playing with features in AutoCAD. I decided to develop myself further into the world of 3D and began to study at SAE Institute Bochum from which I graduated last year with a First Class Bachelor in Game Art Animation. I early began to pick up small freelance work while studying and then started to work part-time at a local games company (Z-Software), where I stayed until recently and worked on several small games. Apart from my studies at SAE Institute, I have always self-studied at home, watching a ton of tutorials and working on personal projects.

I’m very happy to have the opportunity of doing this breakdown here at 80 Level!

The Legend of King Arthur Artstation Challenge

My journey began when I was following the Environment Design phase and discovering a lot of amazing concepts. At the start of the Production phase, I made a collection of all my favorite concepts and picked the one I thought was being the right kind of challenging and eye-catching – which was the beautiful Merlin’s Cave concept by Jeremy Paillotin.

I was looking for an environment I could improve my skills with trim sheet creation, Substance Designer in general and lighting with. And of course, the whole point of the challenge was to create a nice portfolio piece!

Another important thing to me was building a closed game environment where I could take screenshots from every angle and treat it like it was an actual game.

Aside from the concept itself and the sheet Jeremy provided us with, I was greatly inspired by the world of Harry Potter, specifically from photographs I took at the studio tour in London last year. Some prop ideas I added to the concept originated from there like the hanging magnifying glasses for example.

Before getting started with the production I gathered a lot more refs, planned an asset list, rough workflow and time schedule. I think this step is one of the most important because you always need to know where you at and be able to react as soon as possible if you are behind schedule! This happened to me a few times in the challenge (as I will tell you below), but luckily almost every time I already had a backup plan in mind.

Building Up the Scene

I started by blocking out the scene with Unreal prototyping geometry and setting up the camera angle for the main shot. I challenged myself to do the lighting setup as a second step, which took quite some time and might be a bit unusual at this early stage, but it was totally worth it. Focusing on the atmosphere of the scene this early was the best decision I made for this project, I think. First it allowed me to focus on lighting without getting distracted by anything else, secondly iterating very quickly, because of the size of the scene and third I was just working with a better feeling the whole time, because it already took the pressure of “will I be able to capture the mood?” away. Oh and also, I had a lot of lighting errors in previous projects, which I only noticed at the very end most of the time, so working from this stage of a simple scene in neutral grey were everything works just fine, it will be immediately obvious if there is a problem with an asset. I will talk in-depth about the lighting setup further below!

The key pieces I would consider to be the basalt columns, the chair, the armillary sphere, and the long carpet. While the basalt columns were unique sculpts with their own texture, I decided very early that I wanted the other main assets, including the key pieces to be created with trim sheets.

I started to approach them by doing a very basic proxy model, which I turned into the final model with standard modeling techniques each after testing in the scene and then textured with the trims.

At the very beginning, I set up a PBR Master Shader which included a bent normal, specular cavity and the ability to overlay a custom baked normal and edge damage map onto the trim textures. The bent normal and specular cavity I just wanted to try out to push the quality, the custom maps I planned in to break up the tiling further / make all assets more unique. For baking the custom normal, edge damage (=modified curvature) and bent normal I made a baking preset in Substance Designer and let all assets run through it when finished with modeling.

Before finalizing the models, I spent a lot of time creating the base materials and then the 3 trims – fabric, stone, and wood. After all, this was one of the main challenges I wanted to tackle during this project! For the fabric trim, I created the patterns in Substance Designer (except for one I used a photo for). For the stone and wood trim, on the other hand, I tried out another technique – creating a high poly model and baking it down to a plane with material IDs. I used premade patterns for this because I was way behind my time schedule, caused by a few unexpected things happening in my life. These trims were then also textured in Substance Designer.

After finishing the main models, I created as many props from my nice-to-have list as I could before running out of time.

I decorated the scene at days where I felt too tired to do something else, just because I can really relax while doing this.

Callout Sheet:

The Basalt Columns

A huge part of the scene consists of basalt rocks, so they were also the first models I finished. All of them consist of only 4 base models and are handcrafted: three of which are single basalt columns and the last one is a really big clump of random rock formation. I put some effort in creating these base models in a way that each side (including top and bottom silhouette) would look distinctively different, so I can reuse them A LOT without it being too noticeable. All of them are combined into a single texture atlas and textured with Substance Designer.

One of the basalt columns I sculpted in ZBrush from different angles:

For the sculpting process, I used mostly the brushes ClayBuildup, MalletFast2, and TrimArc. After the sculpts were done, I used the built-in decimation in ZBrush and further reduced the meshes a little bit in 3ds Max at some places I thought would not harm the silhouette.

Of course, gathering a lot of reference images is essential for being able to produce natural shapes.

All 3 columns from different angles in the engine:

I then made 3 group clusters out of the columns for faster placement later and removed inside faces to reduce the overall polycount. Again, I also tried to make the groups’ silhouettes look different from each side. These groups were used for the general placement of the fore- and middle ground rocks, while I could still add some individual columns to break it up a little.

When working on the columns I decided it would be a lot easier if I had an additional big mesh to fill out the background fast. This fourth model was really just made very fast and rough and it doesn’t look as good up close as the columns.

I basically just randomly placed some cylinders and a sphere in 3ds Max and then merged and distorted it in ZBrush.

Early testing in Unreal:

Another thing worth mentioning is that I made a master shader with random color variation and a detail texture overlay early on, which made it possible to have even more variation of all assets. It’s not only used for the basalt columns, but for nearly everything in the scene.

The random color variation is driven through a subtle texture (32×32 px) that is blended with the base color in world space.

The Books and Scrolls

For the books, I started with creating a few models in 3ds Max with a different detail level, because I wanted to use more detailed books only where the player would look the most, like on top of the piles or at the player’s height in the shelves.

This left me with 4 different books and 4 different covers for the UV layout. I then also modeled open books and different scrolls and unwrapped them all into a single atlas.

I then pre-made different book groups, piles and scatter with physics simulation in 3ds Max. This way they are a lot easier to place in Unreal. The other benefit from combining groups this way is that it has a lower impact on performance to call one bigger mesh than many very small ones.

I managed to get a high variety of books with a few different techniques. First of all, after the groups, piles and scatters were done, I opened the UVs all at once and moved the book cover UVs randomly into one of the 4 different stacks. Then I worked on the shader in Unreal, implementing the random color variation setup I already made for the basalt columns, but with different settings and variation texture with only 4×4 px size. The way the color variation works here is that simply by placing a book in the scene it will receive 1 of the 16 different colors I set with the 4×4 map (each pixel has its own color). I also decided to try out a flipbook texture for this shader. With this, I was able to put 4 different detail layouts into a single texture and then blend it back together in the shader. There are material instances for each detail layout, so I could simply assign the material instances to the books in the scene. To round it up I decided to do 2 texture sets for the base color instead of one, assigned also by different material instances.

So, this turned out to be quite many variations: 8 different main cover styles + each possible 4 different detail styles + 16 colors. A problem I saw then was that the premade groups were seen as one object (naturally) by Unreal so all books in the group would receive the same color. Unfortunately, I didn’t have enough time to tackle this issue, so I worked around it by leaving a bit of base color in the base textures itself and then just adding a little bit of the random color variation on top of it. This way the whole group would be a slightly different color than the groups near it but still have visible variation in every single book. Later on, I implemented world blended automatic dust into the shader and also added a few dirt decals here and there!

For the textures of the books, I took photographs of my own and a friend’s old books, created the base materials with Substance Designer and then combined everything in Substance Painter with the projection tool. For the content of the scroll, I also took photos, but then modified them into a square mask texture in Affinity Photo, before importing into Unreal and using them with the decal projector on open books and scrolls.

To round it up I implemented a paper edge wear effect that could be painted with vertex color. It’s created with an opacity mask texture.

The Cobwebs

These are made entirely in Substance Designer! I started with creating a basic spiderweb with mostly the splatter circular and shape mapper nodes and then distorted it to have different variations.

The dusty/loose parts are created with scratches running through cartesian to polar and warp nodes.

I also hand-placed a few single strings with transform nodes. The webs were then placed on a texture atlas in Designer and I set up 4 meshes in 3ds Max to use these spaces with lowest possible overdraw.

In Unreal it is a very simple shader, using only one texture – the mask I created in Designer. To get them to look like actual cobwebs however, I added controls for color, opacity strength and a subsurface color. The shader is translucent and two-sided. For the movement, I just added a the SimpleGrassWind node with low input values!

Special Effects

Most of the VFX (flame, smoke, dust, water drops / rain) originated from the Unreal Engine Particle Effects template scene since this wasn’t my focus for this challenge. However, I did adjust them a lot to fit my needs. The candle flame, for example, was a big torch flame before I adjusted its behavior and the small water drops were a waterfall. Then there are also a few things I created myself. For example, I set up a simple candle glow with a billboard sprite to support the flame effect (btw I didn’t use the bloom effect for this because it was getting too strong in the sky areas), added automatic dust as mentioned above and one effect I particularly like is the hourglass sand. I got the idea from VFX artist Jordan Hey over Discord. It is a combination of a mesh inside the glass and a slim cross-plane with a panning noise texture.

For the post effects, I created a scene depth and sharpen effect. Those two really pushed the quality of the final image!

Water

I have added 2 different kinds of puddles because I just wanted to try both methods. One can be painted with vertex color and is controlled in the floor shader and the other is a decal. For the decal, I used free cloud and splatter brushes in Affinity Photo and a simple PBR shader setup.

For the vertex painted puddles I also used pretty standard values, only this time blended them through the vertex color from the red channel and multiplied them with the floor texture, which will result in nice translucent puddles when using a brighter value! I also blended them with a height map using Parallax Occlusion Mapping, after learning the technique from the setups from Lincoln Hughes.

As you can see, I didn’t raise the vertex count (which you probably should when painting with vertex color to get more details), but it still blends nicely and works for this kind of big puddles.

The cave sea I just faked very quickly with re-using the fabric detail normal map at a high tiling setting up PBR values so it would look almost exactly like water.

Lighting

I started from a neutral grey material as a base and compared the values and hues to the concept a lot through the whole process. For this, I used the desktop color picker tool ultimate color picker and adjusted the light settings until I was satisfied.

I used a mixed lighting setup. The sun, sky and candle lights are set to movable to be able to use volumetrics and subsurface scattering. All other lights are fully baked. The natural lighting is mainly produced by the skylight and some baked helper spot and point lights (those are mostly without shadows). To get extra quality with the skylight I rendered its cubemap from my scene with the Scene Capture Cube asset.

The bright middle and background are actually “faked” by sprite fog sheets (just a texture with a slight panning and also originally from the Unreal Engine Particle Effects template), which has the nice side effect that it will still look thick when moving through!

The candle lights are probably the most expensive things in my scene, considering they are movable, shadow casting and overlapping in many places.

After setting up the base lighting I played a lot with Unreal’s built-in post effects. I did not modify too much, but I think the most impact towards the mood of the concept I recreated with setting the Highlights Gain to a high and quite blue value.

I also increased the Screen Space Reflections Quality to 100 in the post settings to push the overall quality.

A key element for good lighting is also good preparation. The PBR values must fit if the scene is using PBR – there are several good charts for it online! I found out the mistakes I often did on previous projects were too dark and too saturated base colors and overall bad roughness values.

Conclusion

I would say one of the biggest challenges was to add a personal touch while still staying true to the concept. Also, it was quite a pain at the beginning to get the composition right, making the dimensions look as close as possible as in the concept. From the production side, it was very challenging, but also fun for me to produce the fabric patterns, trim sheets in general and the cobwebs, as this was new to me.

After this challenge, I feel a lot more comfortable in Substance Designer. Furthermore, I learned a lot about composition while analyzing the concept and other people’s choices. Something else I feel develops myself further is giving more feedback to other artists. I really enjoyed the community spirit of the challenge and tried to give feedback to someone every day.

All in all, I managed to create a super nice portfolio piece and meet a couple of really awesome people! I hope this breakdown is helpful to some of you!

P.S. Thanks to you all for giving me feedback and telling me how to improve! It was a really cool challenge and I’m already looking forward to the next!

Lea Kronenberger, 3D Artist

Interview conducted by Kirill Tokarev

 

 

 

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more