Creating a Realistic Windy Wheat Field in UE4 – Yuchun Huang
Hello, everyone. My name is Yuchun Huang. I’m a 3D Environment Artist and Technical Artist with a focus on real-time rendering. I currently work as an Environment Artist on Halo Infinite at 343 Industries.
My first inspiration point is these two videos: The Third and The Seventh by Alex Roman and UE4 – Field by koooolalala. Since I really want to make the same mood and practice my skill of WorldPositionOffest material, I decide to create this project. Here is the brief breakdown of my artwork No. 39 Wheat Field through Unreal Engine 4.
With the vague concept, I start looking for references. I want to separate the references into two parts. The first part is from the real-world and the second part shows the atmosphere. The real-world reference is quite straight forward.
What I want for the scene is the sunset time, so the wheat can show a beautiful golden color. For the other part, personally, I enjoy Simon Stålenhag’s and Jakub Rozalski’s concept.
The contrast between nature and an oversized sci-fi structure and the disturbing mood make me intoxicated. I also searched many other game references including Ghost of Tsushima, The Last of Us Part 2, and other artists’ scenes or concepts to determine what kinds of objects I need for this project.
After collecting all the references, I have an idea of what assets I need and how the scene looks like.
Foliage Models, Textures, and Materials
The first thing I consider is foliage models. For natural assets, I recommend Megascans that can provide high-quality and photogrammetry foliage assets with Textures, UV, and correct vertex normal so you do not need to worry about it. Once the assets have been exported to the engine, it will create the master material and material instances like this image below.
It is a convenient way to start since it contains many useful nodes. For the base color channel, it has the color overlay and SpeedTree color variation which brings each asset a different color overlay which is really useful on foliage. The other channel also contains multiple multiply parameters or the flat normal node can be adjusted.
Speedtree is another great foliage source so I export two trees and one bush from the library to the project. Because all of them will be used at a far distance, I did not change a lot except I add the wind effect by the WindDirectionalSource actor to fit the windy environment.
Wind WPO Effect
The goal of this project is to mimic the real wheat field wind via the world position offset shader, so I separate this part and describe it in detail.
Watching reference videos is the first and most important thing. By researching the movement of the wheat, I determine to use three layers of movement to simulate the wind blowing through the field.
The first layer is the big rippling mask and it is also the mask for the other layers. The second layer is the foliage swing mask. The third layer is the individual swing noise.
Here is a structure of how I create a wind effect. I delete the wind section from Megascans represent and the first step is to rewrite the foliage height mask that defines the position and the intensity of the plant swing.
I get the Z value of each foliage and divide it by its height which is exposed that can be easily controlled, clamp, and then square two to get the height mask.
The next step is to determine the angle of the wind and the range of the foliage swing.
From the above image, the lerp node’s alpha channel comes from the swing mask that makes the foliage’s bending angle change continuously.
Move forward, the wave mask controls the rippling shape and the amount of foliage bending down. I used a noise tiling texture which is a blur grunge noise I created from Substance Designer to simulate the rippling shape.
What’s more, panning the mask with the angle from above and multiplying it with the bending amount on the Z-axis can create the rippling effects.
Using the same method, I create the swing effect. It just needs to swap the mask to a Perlin mask and panning in the same direction with a different speed.
All the things from nature are different in appearance, so to prevent the completely unified movement between the close foliage, I want to create an individual swing noise layer that adds slightly horizontal and vertical movement. For individual and random signals for each foliage, I use object position values.
Adding or subtracting the X and Y-axis values and taking the fractional portion of those values outputs 0-1 random number.
With a cosine node, the random number add time can provide a wave shape which adds to Z-axis to make an individual vertical movement or add to bending down direction angle to make an individual horizontal movement.
Now the foliage movement is finished, but I still want to add another feature which is the trenches on the wheat field. It is possible to paint them via the foliage tool but I want to solve
it in the material efficiently and easily.
With an input angle and multiplying height mask, a lerp can be created and the trench mask can connect to the alpha channel.
Here is the overview of the whole material and the base pass shader is 164 instructions. For the roughness, opacity, and AO map I pack them into one image’s RGB channel to save the memory.
Silo Models, Textures, and Materials
For the huge sci-fi silo, I used the Mega Pack Sci-Fi Hard Surface Kitbash packages by Oleg Ushenok. It has tons of parts that can be used to build any shape. Since this is a wheat scene, I decide to make a sci-fi farm structure which is a silo with mechanical feet. From the concepts, the huge machine is hidden in the mist, but for this project, I want to make it clear with more detail.
The tip for the sci-fi asset is adding decals and tiny assets like pipes or signal lights can create realistic and vivid detail. I reuse my pipe model and spline from my tunnel project and the several dirt decals and metal materials also come from Megascans. I also use the time and sine node to make a twinkling emissive material like the image below for the signal light model.
Adding dot lights to the structure can improve the magnificent sense. Additionally, I place and adjust the smoke particle from start content is another useful sense element, especially for a sci-fi atmosphere.
For the flying wheat piece, I placed multiple cascade particles in the scene. I download Sea Oats atlases from Megascans that includes all texture channels. I cut and modeled simple meshes in Maya based on the texture UV.
As for the particle system, the key module of the wheat particle is the orbit and mesh rotation that simulate the flying light wheat parts.
Post Process Pass and Level Sequence
Another tip before the post process is checking the scene with different channels. Base Color, Roughness, Metallic, Lighting, Subsurface Color, etc. need to be checked and make sure all of them are in balance.
Here is my setting of Post Process Volume. The trick for post-process is to use the color grading lookup table. Taking a screenshot and modifying it in Photoshop is easy to achieve the color I need.
Likewise, I add the custom kernel shape for the bloom to make more sense of sci-fi. There is also the real kernel called Bloom Convolution in the post-process volume, however, in this project, I try a more controllable way to do that so I use the material billboard blueprint.
The material is just like the emissive signal light material but needs a kernel texture and has to check the ‘Disable Depth Test’ box to avoid clipping through the mesh.
For level sequence, one thing I add to the recording is the camera shaking that generates an unstable emotion. There is a camera shaking blueprint class present in the engine which is really convenient. Here is the setting I use.
The last step is rendering the video. After rendering png image sequence from the level sequencer, I compose and edit it in Adobe Premiere. It is easy to add subtitles and sounds like wind or wheat swing.
Creating advanced material is interesting and try to understand the principle behind the tutorials is always the key to get advancement. Hope you like my project, and I wish this article can inspire you. Special thanks to all the friends and artists who give me suggestions and help me to finish this project. Ask for feedback from others will never be wrong.
For more Unreal material tutorials, I also recommend Ben Cloward’s videos:
Thank GamesArtist for providing me this opportunity to share this breakdown.
Here is my portfolio website if you want to check more my works: