Asset Zoo set up - Brushify Overcast

Tutorial / 27 October 2020

Basic set up for an Asset Zoo in Unreal Engine.

  1. Create a new level. File>New Level>Default
  2. Save Current  name and save in my maps folder. 
  3. Delete default Sky Sphere, Player Start, SphereReflectionCapture
  4. Rename Directional Light to Sun
  5. Change scale of Floor to say 10 x 10 x 10. Also change Z location to 0.
  6. Build Lighting, the disable static lighting. In World Settings check Force No Precomputed Lighting .   Save All and reload map
  7. Adjust Sun angle
  8. Add Sky Dome: Content > Brushify > Materials > Sky Drag S_Skydome into scene. Reset Location to 0,0,0. Set Scale to 10000,10000,10000. Set Collision Presets to No Collision. Disable Dynamic Shadow.
  9. Change Sky Dome material: Duplicate MI_SkyHDR_Inst , rename  MI_SkyHDR_Overcast_Inst. Drag into Details.
  10. Double click on MI_SkyHDR_Overcast_Inst to open itChange Sky Texture to T_Skydome_Cloudy_D   
  11. Add a Post Process Volume. Check Infinite Extent (Unbound). Set Bloom > Intensity to 0. Set Exposure > Metering Mode to Auto Exposure Basic

Then add and check static mesh assets.

Blender - Creating a Heightmap for Unreal Engine Landscape in Blender

Tutorial / 02 October 2020

About these tips and tricks

I find it slow when I have to go find a YouTube tutorial to remind myself how to do some thing in Unreal Engine or Blender. These blog posts will summarise the steps and refer to the original video, to help me in the future and, I hope, may help you.

Creating a Heightmap for Unreal Engine Landscape in Blender

Mirage YouTube

I find sculpting from a blank canvas in Unreal Engine tricky. You have to zoom into an area to be able to sculpt so getting the big picture is difficult. To make it easier like to create a heightmap to apply to the Unreal landscape as a starting point.

There are a number of ways to obtain a heightmap from real world data, but these are often more trouble than they are worth. Most rely on SRTM data, which is fine for the USA and territories, for the rest of the world the data is only accurate to around 90 metres, which does not result in a realistic landscape in Unreal. Aster data is available from TerrainParty, but often has clouds in the image which need to be touched up in image editing. Also the minimum size is 8Km square and the heightmap image size is too small. There are tools to create landscapes procedurally like Worldmachine, but they are expensive. The best solution I've found is to use a paid addon, Mirage, in Blender.

These are my steps for creating a heightmap in Blender with Mirage, and getting that into Unreal Engine:

But first there seems to be a bug in Mirage with Blender 2.90.1. Mirage does not load  the presets automatically. The presets are in 

C:\Users\Username\AppData\Roaming\Blender Foundation\Blender\2.90\scripts\addons\mirage\presets
  1. Create terrain in Mirage. I'd suggest Detail: 3. High, though if you PC can handle it, custom 2041 x 2041 will give a similar number of vertices as a 2041 x 2041 resolution in Unreal (for example 256 x 26 components, 64 components, 1 x 1 subsections = 2041 x 2041 resolutions (verts)). I'm not sure how much this changes the heightmap, and need to experiment more.
  2. Play around and get a nice landscape. The Mirage videos on YouTube are helpful, and the documentation is good (find it in the Blender Addons panel for Mirage).
  3. When done, select the Terrain in the Blender viewport
  4. Click on Mirage>Tools>Generate Vertex Groups  and select Generate Height Group. 
  5. Below in Export, click Export Vertex Group to Image.
  6. In the Blender image editor find the image (Height - Vertex Group)
  7. Change the image size to 2041 x 2041 (or whatever the Unreal Engine landscape resolution is. Image>Resize
  8. Save the image. Image>Save As . Set the image to png, BW, 16 Color Depth and no compression.
  9. If you load this into an Unreal Landscape it will be very blocky. First open the image in Photoshop (other image editing software is available and will cause much less damage to your financial well being). Apply a Filter>Guassian Blur at 1.5 pixels. Save the image
  10. In Unreal Engine, select the landscape, go into Modes>Landscape>Sculpt
    1. Right click on Target Layers>Heightmap.
    2. Select Import from File and locate your heightmap.
    3. Once it's loaded you can adjust the height by scaling in Z on the Landscape Transform panel.

You can go back and play more in Blender, save a new heightmap image, apply the Gaussian Blur and then click on Heightmap in Unreal and select Reimport from...

Brushify - Creating a natural road

Tutorial / 02 October 2020

About these tips and tricks

I find it slow when I have to go find a YouTube tutorial to remind myself how to do some thing in Unreal Engine or Blender. These blog posts will summarise the steps and refer to the original video, to help me in the future and, I hope, may help you. 

Creating a natural road or path with Brushify in Unreal Engine

YouTube Video

  1. Go to Modes>Landscape (Shift 2) 
  2. Click Manage>Splines
  3. Ctrl click to place the first spline point
  4. Change Width, Side Falloff, End Falloff to, say, 200
  5. Ctrl click to another control point. Add to an end by selecting it then  Ctrl click
  6. Change the width of the spline to suit.  This is different to the video. I don't have a Width parameter, instead Half-Width and Layer Width Ratio.
  7. To expand the path, or branch off, select a control node and then Ctrl click for the new control node.
  8. Conform the terrain/landscape to the spline.
    1. Select all connected Segments
    2. Tool Settings click Only Selected 
    3. Apply road mesh. Select all connected Segments
    4. In Landscape Spline Meshes add a new Spline Mesh by clicking on +
  9. Apply road mesh. 
    1. Select all connected Segments
    2. In Landscape Spline Meshes add a new Spline Mesh by clicking on +
    3. In Content Browser navigate to Brushify>Meshes>Roads>Meshes.
    4. Click on S_RoadPlane
    5. Under Landscape Spline Meshes Mesh click the left arrow.
  10. Apply custom material.
    1. In Landscape Spline Meshes add a new Material Overrides by clicking on +
    2. Go to rushify>Meshes>Roads>Materials
    3. Open a material folder, for example Dirt
    4. Select a material instance. For example MI_Road_Dirt_01_Inst.
    5. Click the left arrow for the array element (0) in Material Overrides.
  11. Adjust the path depth 
    1. Under Landscape Spline select all connected: Control Points
    2. Adjust Mesh Vertical Offset to raise the road (default 0, try 2 or 3)

That's it basically. From there adjust the spline, sculpt the landscape, paint the landscape to help blend the road as necessary.

Brushify - Creating an Unreal Project that can be updated

Tutorial / 02 October 2020

I want to create an Unreal Project using Brushify packs, as this will be a long term project I'd like to be able to update the Brushify packs when new features are added, as I'm sure they will. I also want to be able to customise the aspects  of the packs, to suit the environments I'm going to build. I was unsure how to go about this and messaged Joe Garth,the creator of Brushify, to get some advice. This is his suggestion:

Here's what I think you should do. 

  1. Create a new project and add all the brushify packs you need to the same folder.
  2. Whatever happens, never directly alter the files in the Brushify folder of that project.
  3. Instead create 'instances' or copies any brushify files you want to modify and put those in a seperate folder ' Your Project'. This way the original Brushify files are never going to be affected, and your new copies will be what the unreal engine points to.

An example:
If you wanted to remove the grass meshes from spawning on the grass layer. The file you would need to modify would be Content\Brushify\Materials\Landscape\GrassTypes\LG_Grass.uasset
So you would Move that file into your own folder 'Your Project' in some subdirectory. You'd also need to make copies of any files that file depends on. You can see those files in the 'Reference Viewer' which can be accessed by right clicking any asset in content browser. This tool is super useful as it show exactly what each file is connected to in unreal engine. So for instance, the grasstypes files main input is M_Landscape, so you would need to make a duplicate copy of that which references your modified version of LG_Grass. You'd do that the same way that by moving your M_Landscape to your folder.

It's a little tricky because if you want to update to the latest version of Brushify on a regular basis, you will end up having to do some hands on work to make sure it functions properly. But if you take this approach, it shouldn't be that complex when you do need to update. Just a case of switching the connections over to your duplicate/moved versions.