For the longest time I have been trying to figure out the best process to integrate World Machine tiled worlds into UE4. I think I have come across a good solution so far. I have attached my process. This is from my Technical Design Document so if you need anything explained just let me know!
– EDIT –
I created a wiki with the same info located here: A new, community-hosted Unreal Engine Wiki - Announcements - Unreal Engine Forums
World Machine to UE4
1. World Creation
1.1. Overview
Creating worlds for the game will be a detailed and long process. With the right steps the time it takes to create worlds should be lessened. The next sections will layout the process in detail.
1.2. Terrain Creation
Terrains are created using World Machine. Below is the process of creating terrains and setting the terrain size up.
1.2.1. Generators
In world Machine there are multiple ways to create terrains. One way is a paramatized way using perlin or any other kind of noise generators.
Another way is to import a heightmap created in another program as a basis.
1.2.2. Natural Processes
Erosion is a huge positive of using World Machine. It creates lifelike erosion. The outputs of the erosion process can be used to create flow maps and more.
Another Process is Thermal Weathering.
1.3. Terrain Export
To export the terrain from World Machine follow below. The export process is ran once exporting multiple files used for weightmaps for textures as well as the main heightmaps.
1.3.1. World Machine Setup
Below is the process to export the heightmap.
[INDENT]1.3.1.1. Tiled Build Setup
Under “World Extents and Resolution” you will see a “Tiled Build Options” tab. Set the following options.
• Tile Resolution - Custom 2017 x 2017
• Tiles per Side - 4 x 4
• Blending Percentage - 100%
• Share edge vertices - tick
• Flip Y-axis orientation - tick[/INDENT]
[INDENT]
[/INDENT][INDENT]1.3.1.2. General Setup
Under the “General Setup” tab make note of the maximum elevation used. You can change this to your needs but remember that number it will be used when importing into UE4.[/INDENT]
[INDENT]
[/INDENT][INDENT]1.3.1.3. Height Output SetupEnsure the final height output is attached to a Height Output node. Ensure the settings follow the settings below:
• Filename - Filepath/Planet_Name
• Participate in tiled builds - tick
• High Precision - RAW16[/INDENT]
[INDENT][/INDENT]
[INDENT]1.3.1.4. Weightmaps Setup
Setup whatever weightmap selections you wish to use. Follow the steps below to setup weightmaps based off terrain angle.
• Create 3 Select Slope Nodes
• Attach the Primary Output node to each select slope input node.
• Set the angle selections for each select angle nodes.
• Attach the outputs from the select angle nodes to a height output node.
• Set a distinct name for each output and make sure it is tileable. Below are some screen shots for each step.[/INDENT]
[INDENT]
[/INDENT]
[INDENT]
1.3.1.5. Build
Click the tiled build button and wait for all the heightmaps to populate.[/INDENT]
1.4. Terrain Material Setup
The material for the terrain should be setup first. Follow the steps below to setup a terrain ready to accept the weightmaps exported earlier.
• Create a new material in UE4.
• Create a Landscape Layer Blend node. Add a layer element for each weightmap you exported.
• Name the Layers something you will remember and can associate with the weightmaps exported from World Machine.
• Drag the textures you want to use for each layer into the material editor.
• Connect the outputs of the textures to the associated “Layer” input on the landscape layer blend node.
• Add a Landscape Layer Coords and attach the output to the “UVs” input of each texture node.
• In the Landscape Layer Coords set the tiling to whatever you want. Start with 25 and go from there.
• If you wish to use Normal Maps for the textures duplicate the process above. Instead of connecting the output of the layer blend node to the “Base Color” input, connect it to the “Normal” input on the material node.
• Below is an example node structure.
1.5. World Composition in UE4
World composition allows smaller chunks of the planet be loaded at runtime when the player is close enough to that chunk. Below are the steps to get the terrain into the world.
1.5.1. Persistent Level Setup
To setup the persistent level follow the steps below:
• Create a new level with a sky-box pre-built or not.
• Save the file with the Planet or location name.
• Open the world settings and check the box labeled “Enable World Composition”
1.5.2. Tiled Landscape Import
To import a tiled landscape follow the steps below
• Open the levels window.
• Click the Levels drop down menu in the upper-left of the levels window.
• Select “Import Tiled Landscape…”
• Click the “Select heightmap Tiles…” button.
• Navigate to the folder where you saved the raw heightmap images from World Machine
• Select all the tiled files. (e.g. Planet_Name_x0_y0)
• Change the Z scale. Times the world height used from World Machine by 0.1953125 and enter that number in Z scale.
• Select the Material created earlier. Once selected it should give you the weightmaps option.
• Now click the “Select Weightmap Tiles…” button.
• Navigate to the folder where you saved the raw weightmap images from World Machine
• Select all the tiled files for each weightmap. (e.g. Planet_Name_HighAngle-x0_y0)
• Then click “Import”
• Select all the Planet_Name_x#_y# levels in the Levels window
• Right click and select load to see if the imported properly.
• Below are some images of the process.
1.6. Terrain in UE4
Below are some images from the terrain created above in the UE4 engine.