Adam Rzatkowski discussed in great detail the production of his UE4 environment Operation Claymore and the mindset he re-approached the initially unsuccessful project with.
In case you missed it
You might find these articles interesting
Hi, my name is Adam Rzatkowski, and I am a self-taught environment and prop artist. Originally from Poland, I have moved to Cambridge, UK, about 9 years ago and spent most of this time working in the travel industry. I have no formal education or professional experience in art or CG, but I can quite distinctly remember when the adventure started.
My first contact with 3D goes back to primary school (which was pre-internet back where I lived), I got my hands on some sort of a computer magazine that came with a CD and had a demo of a 3D modeling software on it, and a tutorial on "how to make a house" with booleans. Once that expired I somehow managed to get my hands on Blender which was in early beta stages at the time, and off I went making wonky spheres for rocks and square castle towers. Everything was in English, which I did not speak well at the time, and the UI was worse than ZBrush, so in a truly childlike fashion, I lost interest after a few months. I've returned to it only around 2014 when games like Minecraft and various other world-building games no longer quite scratched the creative itch, and I have been slowly learning 3D since. I have really picked up the pace and invested more time into learning over the last year, as I slowly started considering a career in this field. Youtube, Polycount, and of course 80.lv were my main resources here.
Operation Claymore: How the Initial Project Was Developed
Operation Claymore was originally an art test. This was a huge step up for me, as it was the first art test I have ever been given after applying for multiple junior positions. I got a single image of a Scandinavian fishing hut and was asked to prepare an environment based on reference and historical research, within the time frame of 3 days.
I jumped right into Google Maps and Google Images search to find the actual place where the picture was taken. I have traced it to Reine, in the general area of Lofoten, Norway.
From there, I started researching the history of the place, as I did not want to simply do a 1:1 recreation of the area, and found that the history of the place provided some great material to work with. Operation Claymore would frame my work in WW2, winter, both pretty far away from the brief picture, but historical, and most importantly, related to secret commando missions - awesome. After reading up what the operation entailed, I wrote a short story that I wanted to tell: Town of Å in Norway, famous for its fish oil factories, has been occupied by Axis forces who were tasked to secure fish oil storages for production of nitroglycerin. Unluckily for them, the outpost was one of the most exposed ones, and a prime target for a small, quiet commando attack coming from water. The soldiers would hit them before dawn, secure the area, and vanish into the forest to proceed with their objectives.
I started gathering references for the kind of wood and weathering I would need to work with, as well as various types and of decking and wooden structures traditional for that area.
Spoiler alert: I did not get the job. Even worse, I got no feedback regarding the scene itself.
This was a harsh lesson. This moment was the biggest challenge of the whole process, and I kept going over it in my head - "what did I do wrong?". After some self-reflection and Artstation browsing I narrowed it down to one crucial error in my process - I focused too much on what "I" saw in the scene rather than what was actually there. The area only made sense as a layout, with no attention to any composition or actual storytelling. On the technical side of things, having so many individual tiling textures was not impressive in any way, likewise, modularity was an issue as only the decking and the fish drying racks were modular - hardly showstoppers.
Reworking the Scene
I went back to the drawing board. What is my story? Where did key beats take place, how can I place them all into the traditional rule of thirds composition? None of this was present, so I had to reevaluate the entire piece. I found it difficult to acknowledge I had no story or artistic value in the picture, and even harder to let go of all the hard work I've put into it, but it was the only way forward. Therefore I sat down and established the below parameters to work with:
Story: the soldiers land, shoot up and secure the area, regroup, march out. I wanted the image to read as follows: water > decking > signs of fight > indication of life in the area > road leading the eye out of the picture, classical thirds composition read left to right, no fancy tricks.
References: I went back and expanded the library a little with some additional winter shots, and decided on a predominantly white/red colour palette, with a vibrant winter sky (which is what I always loved about Bob Ross' winter paintings). Lot's of white would give eyes room to rest and communicate stillness and the winter quiet, the splash of purple and orange was to indicate the early time of day and contrast the brutality of a night raid with the serenity of the morning.
Technical side: I needed to practice modularity and reuse to be able to deliver this level of work in a shorter time frame. I decided that modularity would be based on a 1m scale, with texel density 2k per 2m of space to keep it simple and compatible with Megascans textures.
I scrapped pretty much all of my assets and most textures and materials and started with the landscape. I used the default UE4 landscape tool and a plane with planar reflection for water, nothing fancy.
I wanted a feeling of a remote, quiet area being intruded upon by people, which I chose to represent with a mix of fresh, glittery snow that would transition into trampled, damp snow. The latter would further dissolve into watery/icy mud in the areas that would be disturbed most. Since I was looking at quite large areas of ground being visible at all times, I wanted the blending to be seamless and natural. To achieve this, I used Quixel Mixer, and scans of trampled snow and mud. I mixed them to various degrees making sure I used the same debris, grass clumps, and height masks on both to create the illusion of one consistent ground cover. I have also tried to keep the dead grass clumps consistent with the texture on the roof, as I figured it would be the same kind of grass.
The 4th and last mix I made for this project was the material for the house itself. I could not quite find the exact photoscan I was looking for, so I used a texture of raw overlapping planks and mixed it with a texture of heavily peeling paint. I sampled the colour from a reference picture with overcast weather for a close colour match.
Armed with the basic landscape and some medium-sized shapes to blend out the larger shapes composition-wise, I moved on to asset recreation.
Plagued with the same affliction most gamedev artists are, I cannot enjoy games without trying to spin off the camera to a weird angle to get a zoomed view at a certain asset. What I found is that even in the most gorgeous productions I've played (think RDR2, anything from ND, AC Odyssey, etc.) the clutter and smaller assets are really not all that great, and sometimes have a downright last-decade level of detail with a flat colour/roughness texture. I find Dark Souls to be the worst offender in this category (curiously it's also one of my favourite series in terms of the overall environment and level design). Trying to draw inspiration from that, I kept my models simple and relied on the light, colour, and atmosphere to draw attention away from some of the less than round circles. Everything relied on good old poly modeling, I only sculpted up the snow piles to give them a bit more geo for tessellation and a more melted/organic look.
I used Blender's cloth sim for the tent and map placement.
I could not afford to keep using tiling/dedicated textures, and it was time to step up my game a little and start using trim sheets – something I was aware of conceptually but had no experience with. Having the benefit of a "proto scene" I knew what kinds of wood I wanted to use, so I sliced my old textures into strips that would roughly fit the dimensions I needed and formed the following trim sheet:
As you will notice, the only assets I downloaded from Megascans were 1 large cliff that I duplicated around, 1 formation of sandbags, and a small assembly of rocks you can see under the bridge. I modified them a bit and covered with snow.
With my trim ready and tiling texture pool reduced, I remade all the assets and expanded on my modulars. Not because I had to at this point, but because it would have been expected of me in another art test and I was not going to be caught off guard again.
The addon was made mostly for sci-fi eye candy, but I use it whenever I want my corners rounded off. As a rule of thumb, I'd chamfer edges that would take a relatively large portion of screen space (long edges of beams, planks, etc.), so that the added softness was worth the tris count. Blender automatically collapses your modifiers on export, so I could keep all of my assets in their non-destructive state and iterate super quickly between exports and imports.
Looking at how the house was built previously I decided to keep the tiling texture, but break the model down to just a basic wall, 2 windows, a door, a pillar, and roof assembly which allowed me to adjust the width/height of the building in 2m increments. At this stage, I also understood that I needed my trim and tiling textures to be in their final or near-final form, as I would be modeling the assets around them and changes later could mean I needed to redo UVs or entire models to have the tiling align. Additional geo on flat/straight planes was added mostly for vertex paint, but also to add a little wibble to long straight edges – nature hates straight lines after all. The roof could have been simplified into two pieces, but I treated this as an exercise to prepare myself for future tests and decided to add a little bit of flexibility.
As a finishing touch, I used a plane with my tiling texture to cut out a trim that would end the wall at the port side, again to avoid the razor-sharp lines. The technique I found worked best here was just cutting around the top of the existing texture to ensure proper tiling with the bottom of the wall, that's where having your textures near the final version helps!
There were some smaller bits like gutters or wires and a lamp which were just there to break up the repetition a bit and add those mundane details we usually notice only when they're missing; these were mostly not textured, just solid colours with higher roughness. The house was covered entirely with 1 tiling texture on the roof, one tiling texture for the red planks, and a trim sheet for the white wood.
The decking was possibly the one asset I remade the biggest number of times, as it needed to have enough character and organic feel to be pleasant to look at, but bland enough that it had no obvious repetition. I had a few of those modules lined up in UE4, and kept iterating and re-exporting from Blender to get the twists and bends in the wood just right. That about sums up the modularity in my scene.
Overall, there were only four uniquely textured assets in the scene.
I made the bottles relatively detailed to provide context and some writing. Both bottles were a repaint of models from my "Alchemist's Table" scene. The beer label was an actual label of a Norwegian Christmas beer I recreated in SP to set the period closer to December. When creating the nitroglycerin bottle, I was trying to think of ways that might mitigate any risk of breaking it, that's how the string wrap came about. I tried not to weather the bottle too much as I wouldn't expect high explosives to receive rough treatment! Some cavity dust did the job just fine. The map was just a historical map I've managed to get off local information sites. I've doodled some attack lines, splattered blood over it, and called it a day since it was a 2nd plan object. Cards were put together in PS and got the same "yellow parchment" treatment in SP as the bottle labels and the map just to keep paper aging consistent.
Bottles were designed with the crate in mind, which ended up being the centerpiece for the little tent area. The design was dictated by some research of what a crate from that period should look like. It also gave me the opportunity to clearly indicate which side of the conflict they belonged to. When designing the box, I kept thinking about securing the bottles in place, hence the "apothecary" style dividers, and some hay crammed around it to further dampen the impact. I'm not sure if that's how it would have been done in real life, but this was more about communicating fragility than being historically accurate.
Originally, I planned to make it a uniquely textured and baked asset, but after assembling it and preparing all my bake groups I thought "can I trim it?" and made a quick mock-up that passed the camera angle test. I decided to stick to this approach and used the existing trim sheet to texture the whole crate. You'll notice in the zoomed pictures, the edges are not chamfered. This is where the extended gutters and bevels in the trim texture come to play. By carefully aligning the planks with the texture, I've managed to soften up the corners without the need for baking or any extra geo. This approach left the crate with little individuality, so I also prepared a decal sheet to be able to spray on some typical military markings and warnings I pulled from the crate references on my refboard.
I did not want to waste too much time on it so I used the default "denim" setting and it worked quite well for what I needed. After that, I cleaned it up a little with a smoothing brush in Blender's sculpt mode to remove some of the pinching. Getting some practice with these simulations made draping the map over a bench super quick.
As I could not find the appropriate texture for my camo net, I created my own in SD. After reviewing some camo net designs (refboard) I used a car net from Substance Source as a starting point. I first broke down the net to a single overlapping shape, it's a sort of "knitted" pattern with circular holes. It's perhaps best described with a picture:
I've used Megascans extensively in the process, not only for their amazing quality but also because they adhere to the 2x2m format a lot and make texel density and scaling a breeze. I tried to keep the materials very simple as I tend to get distracted by nodes and noodles and get nothing done for ages! Perhaps, the most common node setup I would plug into my materials was this one:
It's a small function that creates a mask based on the world "UP" direction. I'd use it to blend in my fresh snow material onto most of my assets. This allowed me to turn and twist my Megascans rocks and always have a slightly different look as it reacted with the top cover mask (I stole that from an 80lv article which I sadly could not find again at the time; I could not get the tesselation to work nicely, and I wanted to steal that too!). This function is mesh-based so it works regardless of UVs or method of texturing – an unsung hero of this scene as it helped blend everything together, especially the (one) model of a tree that I duplicated around, and the grass that otherwise stood out.
My materials are standard Substance Painter and Megascans implements of the respective textures. The only trick I would point out here to anyone just starting with vertex painting is to use height lerp instead of standard lerp – the results tend to be much more organic and interesting, with easier control. This is my setup for basic vertex paint on my tiling material:
It looks like a noodle nightmare, but it really is just the 1st setup stacked twice on itself to have 2 materials to paint (I wanted to be able to paint snow and damages on my tiling textures).
Mapping node is just my own mapping preference of having control over panning scale rotation, etc. (I was sick of doing it every time) and it allows me to pan the decal around the texture since I was trying to cram as much as I could into one sheet. There is a bit of IF logic there that switches the channels based on the value being below 0.5, exactly 0.5, or higher than. This lets you pan between new decals in those channels. With RGB packed alphas and 4 square stains/signs per channel, you can get impressive 12 instanced decals out of 1 texture and root material. You could use a static switch, but it duplicates the node structure in the background, adding to calculations. Not an issue here, but also no reason to use switches if you have up to 3 values.
The above combination of vertex paint and decals really brought out the depth in the texture with shader complexity being in the juicy fresh green!
Scene assembly was relatively simple once I had the first shot established. Following my failure in the art test, I chose a new frame based on my new story, and with the image below I consulted polycount for feedback.
The feedback was super helpful and mostly pertained to light and how cheap the default sky and cutout mountains were (very fair). I took that as a nod of approval to my idea of composition for that particular shot and proceeded to flesh out the main areas of interest with items that I thought would indicate who was here and why. I stayed true to my original story and decided that barrels were pretty non-descriptive, thus the crates were added, and bottles followed.
The light got an overhaul and the sky now had a beautiful HDR that represented my target colours far better than stock UE4 sky. This is where my imagination took off as I finally saw the place I always imagined. I knew the scene was naked as I only had my large shapes in, so to judge how vegetation would tie it together and remain mindful of visual noise, I decided to test out trees. Boy did it make a difference, everything suddenly fell into place. I've also added my crates, bottles, map, and cards around the tent area, as I worked on new camera angles and assets – I would get tired of looking at the main shot for too long, it's important for me to keep the work interesting and varied.
At this point, I felt I was nearing the finish line, but I felt that the centre of the image was still very empty. Even after I blended out my medium and large shapes with some bushes and grass, it felt there was that massive gap in the centre staring at me.
After much deliberation, I resorted to the technique of thinking about what happened just now, recently, and long ago as layers of information. I had the "just now" in the indication of a fight, I had the "recently" in the improvised shelter and signs of prolonged deployment, but what was that place before? It was a fishing hut, it would have some boats, some rope, the tropes of a fish port. The last piece fell in place and my final render was born. It did not fill up the void in the middle but reduced it enough so that it formed a path that aligned with my original composition flow.
I think a lot of what I did with lighting is visible in the composition progress shots, but I'd like to credit a polycount user birb for their incredible lighting breakdown of my WIP and some truly amazing tips on lighting and storytelling. amazing tips on lighting and storytelling. Birb also prepared a re-lighting gif for me to explain different approaches and made me look at the lighting in a different way:
As I am not very experienced or very well educated regarding lighting, I try to follow some basic rules of complementary colours as well as keep the shadows out of the 0 value and highlights out of a blown-out 1 value.
From the 1st draft (with the default UE sky), I've enabled dynamic GI to brighten up the deep shadows and pushed them into teal while shifting my highlights into orange (the Hollywood trope). I gave the midtones a bump in saturation to make the red paint pop a bit, it was a focal point after all. The contrast was reduced with the addition of exponential height fog with volumetrics, the scattering colour was set to purple sampled from the HDR. This produced a relatively warm image, so I dialed the white point down to 6200K. This was about it for my post-processing. I am also an evangelist for the sharpen material I've learned from a tutorial by Dominique Buttiens, so that was added in for that extra crispy detail alongside a 200% rendering resolution for final shots. Here's a before and after post-process:
Since the HDR does not contribute to the light in the scene and just gives an atmospheric backdrop, the purple hues were added through mapping the same HDR to a reflection sphere and rotating it to match the background.
All of the lights are dynamic, so I had to place some ghost lights to fill in more shadowy areas. I also had my exposure locked at 0 compensation so I had better control and consistency over my values through different shots.
For the main lighting, I used a sun lamp with a fairly low value of 2lux and a pale orange colour. I aligned the angle roughly with the HDR but tried to focus more on an interesting shadow line running diagonally down the middle of the image to have some separation between the house and the tent. This was supported by a pale blue sun lamp angled the opposite way. It had no shadows and a tiny value (0.3 lux) to just brighten the scene up overall.
The house and tent lamps are just regular spot lights with volumetric scattering maxed out, to have nice clean light shafts, without the whole scene being fogged out of view. I opted for working with blackbody temperature rather than giving them a set colour, to ensure those lights were giving the scene a realistic tone. The house lamps were at a neutral yellow 4200K and had rectangle fill lights to reduce the contrast and simulate some scatter.
On the other side of the building, I had a wide spot light with a pink hue, it mainly added some specular highlights to the wall and some nice rim light to the snow piles. I've also dropped a small point light to give the bottles a bit of a rim highlight.
The entire tent area is just 1 spotlight, this is where screen space GI really shines adding some nice scatter under the bench and between the barrels. The tent lamp was set to a much warmer 2800K to create a more inviting feel, as the area is otherwise all wet and snowed in. I've experimented with various fill lights and ghost lights here, but it always looked artificial and staged. Sometimes the simplest solutions are best. I can't wait to get my hands on an RTX card so I can dive into actual ray traced GI and soft shadows for my future projects.
Closing Thoughts and Learnings
In closing, I am very happy with the scene, and looking back at my art test, I've come quite a long way.
The biggest challenge here was being critical of my own work and knowing when to call myself out on not doing my absolute best. Nothing that I've done asset or production-wise was outside of my comfort zone, but it was the first time I worked with strict deadlines and guidelines; it was an important lesson in overscoping and how professional work will differ from my personal projects. It was also interesting to work on a scene that I was given rather than chose something myself. I was forced to find a twist or a narrative that made it interesting to me in a way that would engage my creative side. It's definitely a skill I will be exploring further and challenging myself with styles and environments I never considered.
As much as I hated losing the job offer over my inexperience, I now see it as a part of a learning process. I learned the value of not giving up and not being afraid to start over, and came out of it a much better and more organised artist.
Thank you for reading.