positional constraints over time as a space-time optimization problem in the tangent space of the curves driving the animation controls. Their method has the key properties that it allows for the manipulation of positions and orientations over time. https://www.lost-identification.com
Ronald Houtermans did a breakdown of the Watermill scene made with UE4, Megascans, SpeedTree, and other tools.
Recently, I’ve been working a lot with Quixel Megascans library in combination with sculpted and generated assets (I’ll get into the details in the article).
I also uploaded a small asset pack to the Unreal Engine Marketplace which pushed me to make assets for Unreal Engine, figuring out LODs, Collision, proper lightmap UVs, etc. which was interesting! So far, I’ve used Unreal Engine mostly as a showcase for my own art projects, never really for actual game production (at Nixxes Software we use an in-house engine and my previous experience mostly came from working with Unity). Making these assets optimized for the actual game production is something I’ve started doing for the Watermill scene as well, just to get into the habit and see what I can get out of Unreal Engine while still having a steady 60+ fps in a scene.
Plenty of references and some concept art is what I preferably want to collect before even blocking out a scene. Recently, I really started to admire the old masters’ landscape paintings and I already had a folder full of reference. I just picked one I really liked and wouldn’t mind working on for a while because these projects require some time investment and I didn’t want to give up halfway through.
I think most of us know what it’s like to have a drive full of unfinished project folders, and I was really done with that. My new mindset is to actually finish what I start and I hope it will stick!
The painting ‘Mill at Charenton’ by François Boucher had all the elements I was looking for and looked beautiful, it had the house as a centerpiece and plenty of foliage the creation of which I wanted to learn more about.
I created a reference board with PureRef which had sections with all the elements I needed for the scene. I spent hours on Google researching different parts of the environment. This step is probably the most important and should not be rushed.
Blockout of the Scene
The blockout phase is really simple, the entire scene is just one mesh with one material created in Maya. I exported it out so that I had something really quickly, within an hour usually, in Unreal Engine.
Then I create a camera to reflect the reference/painting’s perspective.
I then replace the blockout mesh part by part with temporary art pieces as a first pass. This only takes a couple of hours. In the result, you’ll see the scene come together and have a better insight into what assets you will need.
These first pass assets come from free packs, mainly found on the Unreal Engine Marketplace (A Boy & His Kite demo amongst others for the trees) and whatever I still had lying around from previous projects. With every piece added I could remove the blockout more and more until I ended up with an entire first pass scene. After that, it’s just a matter of replacing them one by one.
The final building and the first pass version in the background:
I started building the watermill in a separate scene to avoid clutter and later pasted it back into the environment. I loved the combination of stone, wood, and plaster.
I knew the house was the most important piece in the scene, so I spent the most time on it. I knew I wanted to use Megascans surfaces for the walls, roof, and wooden elements, but I also wanted to sculpt in custom details. I set up a master material which added the normal map from the sculpt with the Megascans surface normal map.
To create some visual interest for the walls I then used the 2-way blend material setup to blend between different surfaces. It’s described in UE docs here.
Instead of alpha, I ended up using RGB, so I could blend between three surfaces. I used this blend material setup for everything on this building except for the roof.
I used the same method to create a couple of planks for the house. The first pass is sculpting for the custom details, then using tiling Megascans surfaces to finish it up.
Along the way, I received some really useful feedback on Polycount (especially for the house). Thanks to everyone for it! I was able to push this project further and keep at it because of it!
Combining Mixer & Megascans
Mixer is something I want to research and use a lot more in my future projects. It’s really quick to blend between multiple surfaces, and the Megascans Library is already hooked up to the program.
I basically used Mixer for the ground materials like mud, grass, etc. I found a couple of materials that I really liked on the Megascans Library and within minutes I had exactly what I was looking for by combining a couple of them in the Mixer.
The roof was really fun to make. I’ll be honest here and say it is pretty performance-heavy because of all the alpha, but the result is worth it. If I had to make this for an actual game I would have assigned two materials for the straw roof: a regular opaque for the center of the placement and one material for the edges where I’d need stuff like alpha and translucency.
The graph in Designer is actually quite small. There’s one atlas with a couple of straws which are masked out one by one using the Bitmap Node (it’s really great for manually drawing masks quickly) and then generated on top of each other using a Tile Sample Color node.
The trees in François Boucher’s painting looked very unique and I wanted to accurately re-create at least a couple of them that stood out. I mainly used Quixel Megascans foliage atlases in combination with SpeedTree for these trees. Using SpeedTree allowed me to create the trees, shrubs, grass, and plants I needed incredibly quickly.
To create the tree trunks and even branches in the shape I wanted, I mainly used the hand-drawn option in SpeedTree (press and hold space while drawing). Using forces to ‘bend’ a tree in a certain direction is also really useful!
As you can see the setup of this tree is very basic. What I learned along the way was to create a number of leaf placement meshes that were basically branches with a couple of leaves attached. First, I tried using a couple of planes which looked very flat because the light had no chance of hitting the leaves correctly. Individual leaf placements is always an option, but a very expensive one. I took a look at how the Kite demo trees were set up and tried mimicking it with a couple of branch placements. Still, there’s a lot left to learn, but it turned out quite well.
The props were something that I knew I’d have to put some good old-fashioned modeling and texturing into. It was really basic: sculpting in ZBrush and texturing in Substance Painter. I created a Smart Material by combining and tweaking a couple of the presets materials for the wood props.
After baking the textures needed for the smart material I needed only to apply the smart material to the new assets and paint/tweak some of the final detail layers like dirt, chip damage, and scratches.
So far in Unreal Engine, I’ve only worked with indoor environments and baked lighting. Since this scene was outdoors anyway and I wanted to try something new, the most logical choice for me was to go with real-time lighting.
Lighting-wise, I aimed at getting all the albedo values right. Mid-tone values are a great starting point. When values are too bright or too dark they tend to stand out too much or get lost in the background when you start working on the lighting.
Post-processing helped me getting the final look right. Working with lookup tables is a really fast and simple way to tweak the final result of a scene.
Thanks for taking a look at this project and if you have any questions or feedback, feel free to reach out here in the comments or on Artstation!
Ronald Houtermans, Environment Artist at Nixxes Software
Interview conducted by Kirill Tokarev
Cartoon Water Shader by Adam Homoki is a fascinating highly stylized water material and a river tool with many features including buoyancy, caustic effect, refraction, water depth and more.
Any future updates are included and will be available for download in case they are released.