Building large scale environment for games can consist of several key elements including the base terrain, scattered landscape features, foliage and man-made props. In this lesson, learn how to set up all of these elements using procedural techniques in Houdini. Starting with terrain, you will create a layered desert landscape tool that can be opened up in UE4 using the Houdini Engine version 2 plugin. You will then use the scatter and align and mask by feature tools to create a scattering and instancing workflow. In the end, you will use PDG to create multiple terrain tiles that are populated automatically. You will also learn how to integrate your Houdini assets with the World Composition tools in UE4.


BEFORE DOWNLOADING: 
These project files contain a few Quixel Megascan assets made available courtesy of Epic Games. By downloading these assets, you are agreeing to the terms of the UE4 EULA.  These assets are intended for learning purposes only. To use Quixel Assets in your own projects, go the the Quixel website for more information such as the recent announcement that the Megascans library is completely free for use with Unreal Engine.


NOTE: This lesson uses the UE4 V2 plug-in which became production ready with build 18.5.462+. When you download and install Houdini 18.5 and choose to include the UE4 plug-ins, the old and the new plug-ins go into a directory under Houdini and you can then move it manually to the UE_4.25\Plug-ins\Runtime directory.

These lessons use the SideFX Labs tools. Make sure the latest release (non production build) is installed when doing this lesson.


OVERVIEW

Take a quick tour of the completed environment to get a sense of where this lesson is headed. Learn how the different elements work together and how you can bring this procedural approach to your own gamedev projects.

Length: 04:36

1 | CREATE LANDSCAPE

Learn how to use the height field based terrain tools in Houdini to create a desert landscape. You will learn how to add many layers and use masks to tweak the results to get the desired look. You will learn how to prepare this to be used in UE4 as a digital asset.

Length: 23:37

2 | MAKE HDA AND OPEN IN UE4

Now that the landscape has been setup, learn how to wrap it up into a digital asset and load the asset into UE4 using version 2 of the Houdini Engine plug-in. Learn how to promote parameters to the top level to allow level designers the ability to make creative decisions in the UE4 game editor.

Length: 24:27

3 | SCATTER MODEL

Now that you have a landscape to work with, use the scatter and align and mask by feature tools to create a scattering and instancing workflow. This will be used to place terraced rock formations from Quixel on the slopes and procedurally generated rocks in the surrounding areas. 

Length: 21:54

4 | PLACE SCI-FI PORTALS

A key element of this desert scene is a collection of sci-fi portals which act as hero props within the environment. You will learn how to scatter them around then you will make sure each of these elements avoids the edges and integrates well with the terrain. 

Length: 12:55

5 | ADD INSTANCES

Now that you have points representing the various elements you need to populate the environment, you will set up instances for use in UE4. This means setting up another digital asset and then promoting key parameters to the top level. You will also include specific references to assets in your UE4 project.

Length: 20:22

6 | CREATE PDG SETUP

The Procedural Dependency Graph [PDG] tools in Houdini let you automate tasks and distribute them to the cores on your computer or to a larger compute farm. This lesson shows how to set up a PDG network that can be brought into UE4 and processed in the game editor to generate multiple game tiles.

Length: 28:15

7 | WORLD COMPOSITION SUPPORT

The world composition tools in UE4 are designed to help you manage larger open world setups. In this lesson, you will take the tiles, generated by PDG, and use them with these composition tools. This results in a large world map that loads efficiently during gameplay.

Length: 12:38

RELATED TUTORIAL

 Learn how to use Geometry Brushes [BSP] from Unreal Engine with Houdini Engine and how to use them as an input for a building generator. The building generator is included in SideFX Labs so you don't have to build it from scratch. The tool is fast and can, in realtime, convert the geometry brushes into nice looking buildings based on custom modular models. 


CREATED BY

SIMON VERSTRAETE

Simon is a tech Artist that loves building procedural tools and assets. By adding more and more procedural approaches to his workflow, he is able to build 3D models with speed and flexibility. During his studies at Digital Arts and Entertainment, he taught himself how to work with Houdini. After his studies, he started working on Ary and the Secret of Seasons at eXiin. Currently he is a Houdini freelancer and focuses on creating procedural content.

More from Simon Verstraete

COMMENTS

  • Jeff Farnsworth 5 months ago  | 

    These series are excellent... you guys are on fire!

  • ElleryIce 5 months ago  | 

    ThankYou !!! This is a very useful Tutorial

  • kuimig 5 months ago  | 

    thx simon~

  • Tom Freitag 5 months ago  | 

    great one!

  • sixwell 5 months ago  | 

    awesome work

  • jgonbaz 5 months ago  | 

    Muy Interesante. Es excelente...

  • zhenglu 5 months ago  | 

    I tried to make with the provided project, but the actor was not generated in subLevel.
    help! please! i lost in 4 days

  • zhenglu 5 months ago  | 

    Actor only generated in mainLevel , need transform it in unreal?

    • Siver 5 months ago  | 

      Where do you have issues? Is it with the baking of world composition?

      • zhenglu 5 months ago  | 

        i want to mix heightfield tiles and instancer to sub_level, like this Wiki used attribute("unreal_level_path", "tile", “unreal_split_attr”);
        https://github.com/sideeffects/HoudiniEngineForUnreal-v2/wiki/What's-new-%3F

        but i am fail.

        after press bake_to_actor , is also exist in mainLevel.
        i want to know your UE_Project_Level(Desert_PDG_scene_01) how to generated.

        Thank you very much for your reply.

        • Qingfeng Ronaldo 5 months ago  | 

          I also encountered the same problem and need help.

        • Siver 5 months ago  | 

          This is currently an issue that can happen and the developers are looking into it, thanks for letting us know.

  • valdomat 5 months ago  | 

    Hi Simon! Thank you for the tutorial!

    What is it that you've done in Unreal with the instances after they've been scattered? They all live in their sub levels like you'd expect, but I can't see what actor they're a part of. They seem to be part of 3 separate "Procedural Foliage Spawners", but how does that connect to the references setup in Houdini? Did you manually put them in to the spawner after they'd been scattered?

    • valdomat 5 months ago  | 

      Sorry, I just realized I jumped the gun. The static meshes I'm talking about are all placed with the volumes. So essentially all the Houdini-scattered meshes are all just instances.

      • Siver 5 months ago  | 

        To place foliage in the scene you can choose multiple ways of doing that. In the video I use the scatter nodes and create instances around the cliffs.
        What you can also do is using the Unreal Procedural Foliage Spawners, so these are volumes were in the models will be scattered.
        You can place them by hand or you can instance them as well with point clouds, use an attribute unreal_instance and set the path to the foliageSpawner ( like this ProceduralFoliageSpawner'/Game/Desert_project/Foliage_spawners/Desert_foliage.Desert_foliage' ) .
        One down side is that at the moment you still need to press the button "Resimulate" manually. Setting scale attribute will make the volume larger.
        Also Unreal Procedural foliage tools are an experimental feature.

        • valdomat 5 months ago  | 

          Got it.

          One, hopefully, last question :) I have an issue with getting my scattered instanced meshes to the sublevels. I baked with your example files, and there too they get baked to the persistent main level. Did you move your scattered object by hand? It's important to know since I'm building a tool that's meant to be built on a build server, so no hand placement can be involved in this process.

          • Siver 5 months ago  | 

            It is possible when baking that instances and geometry is added to the sublevels, this is done by default. At the moment there is an issue with this and it will not always add instances and geo to the sublevels. (developers are looking into it)
            Something that can help a bit it in the Labs World Composition node set the wrangle "Add_instance_split_attribute1" to run over points, this can help.

    • zhenglu 5 months ago  | 

      hi!would you successful to bake foliage to subLevel ? i faild and can't find where wrong with me.

      Refer to wiki set attributes ("unreal_level_path", "tile", “unreal_split_attr”,“unreal_foliage”)
      https://github.com/sideeffects/HoudiniEngineForUnreal-v2/wiki/What's-new-%3F

      Thank you for your reply.

  • ChrisGG 4 months, 4 weeks ago  | 

    Is it recommended to use Height Blending vs Weight Blending if working with Houdini to Unreal?

  • Christian Kugler 4 months, 1 week ago  | 

    Hello Simon can you please direct me to some of the terrain material tutorials you mention in PT2 around 14.30? Thanks!

    • Siver 4 months, 1 week ago  | 

      This video has similar approaches of making that material https://youtu.be/NAJhppttJgI . There are a lot of tutorials out there on YouTube for it.

      • Christian Kugler 4 months, 1 week ago  | 

        Thank you very much. The ones i have found are quite good as well I just wanted to see if there were a few more that were a little bit more in depth.

  • Feoul 4 months, 1 week ago  | 

    Hi Simon, a quick question if you wouldn't mind; when I merge my points with the landscape during the "add instances video" at around 11:10, I do not get my landscape with the points, but instead my landscape covered in black squares where the points would be. Is this okay? If not, do you have any ideas, as when I try and place the digital asset into UE4 just to test it out, I get error messages and the geometry fails to bake

    Cheers!

    • Siver 4 months ago  | 

      In Houdini open the Display Options of the viewport. Look under "Geometry" and then disable "Display Sprites" under particles. That should fix the black squares.

      • Feoul 4 months ago  | 

        Thanks you!

  • Dean_Lv 4 months ago  | 

    Hi Simon.
    I have been follow your tutorial. When I try to use a new HDA to change the tiles. such as give some noise. It will got the strange reslut. only half tile will be change.

  • david_6 3 months, 2 weeks ago  | 

    Hi Simon.
    I really enjoyed the tutorial you shared. It was great. But I had a little problem, it was about the ninth minute of the Create PDG Setup. There was an error while cooking the node(Desert Split and Scatter), (name)bgeo.sc' as an expected output file, but it wasn't found when the item cooked .
    Every step I take is the same as yours, and I have tried the project files you share, and will also prompt this error. My Houdidni version is18.5.408, I really hope to get your advice.
    Thank you!

    • Siver 3 months, 1 week ago  | 

      Double check if you create a project at the beginning, also check working directory in the scheduler node. If this is only happening with this hda, then there must be some issue in the HDA or a setting in the hda processor node.
      If the issue happen with other HDA's, try creating a simple hda and bake it in PDG, then it could be a bug.

      • david_6 3 months, 1 week ago  | 

        Thanks for the answer, I reworked and solved the problem.However, my output PDG file, Cook failed in UE without generating any files. The log found that, "Games/UE_4.25/Engine/Binaries/Win64/geo/HE_OUT_Split_and_Scatter.HE_OUT_Split_and_Scatter_21.0.bgeo.sc' as an expected output file, but it wasn't found when the item cooked. "

  • jonlauf 3 months, 2 weeks ago  | 

    Hey Simon,
    Thanks so much for the tutorial! I have an issue when I bake the PDG into separate sub levels (World Composition Support) where the landscape does not show up in the sub-levels, only the scattered instances show up. Any help is appreciated. Thanks!

    • Siver 3 months, 1 week ago  | 

      Make sure you have the latest version of the Houdini engine, there were some issues with the world composition that should be working now.

    • jeebius 3 months, 1 week ago  | 

      I think they fixed this specific issue in the latest daily build, I was having the same issue

  • eugeneochia 2 months, 2 weeks ago  | 

    This is so cool. I'm thinking of combining the level design hda with this hda so i could still big landscape with world composition plus being able to affect the terrain with block out. Is this possible here?

  • proximo 2 months, 2 weeks ago  | 

    Has anyone had problems with this example HDA (or your own) crashing Unreal when hitting the PDG bake button?
    The unreal editor crash report is pretty vague too, a single line about array out of index. Using the latest production Houdini and included v2 plugin.

    • SephyMuspellheim 2 months, 2 weeks ago  | 

      Same issue here, Proximo, worked fine and abruptly started throwing up errors.

      Using 18.5.462 with HoudiniEngineV2 in UE4.25.

      Might try and make a simple HDA with a pdg and test with something else see if it's a bug with the HDA or if there is actually a problem with the plugin.

    • SephyMuspellheim 2 months, 2 weeks ago  | 

      Quick update, I made a small PDG HDA that creates a box with random colour, and that PDG can bake out the boxes no problem, so it's likely a logic error somewhere in the PDG.

      I'm going to test a new desert pdg and see if I can figure out what got changed to make it keep crashing.

    • SephyMuspellheim 2 months, 1 week ago  | 

      Hi Proximo.

      I submitted a bug report to SideFX, I was advised that the bug has been rectified as of Version 18.5.478 (daily build) and after updating and testing can confirm it works.

      Hope this helps.

      • proximo 2 months, 1 week ago  | 

        Oh awesome!

        Thanks for checking into that too and letting us know!!

  • inversionstudio 2 months, 1 week ago  | 

    Hi Simon, fantastic tutorial sir, I had one question about an error I am receiving in UE4.

    I'm trying a more basic version of your tutorial just scattering some rocks and trees, but I have 2 sub-networks like yourself, one for terrain and one for the scatter points. The terrain loads ok in UE4 but the scatter hda gives a 'Finished Cooking with Errors' message. Here is the log:

    Cook Results:
    Geo (ID: 2709): /obj/hda_scatter_1_2/hda_scatter1
    No geometry generated!


    Cook State:
    Ready with Cook Errors


    ===================================
    Node Errors, Warnings, and Messages
    ===================================

    /obj/hda_scatter_1_2/hda_scatter1/maskbyfeature1:
    Error: Not enough sources specified.

    /obj/hda_scatter_1_2/hda_scatter1/maskbyfeature1/attribblur1/cl_compute_edgeweights1:
    Warning: Zero sized attribute, doing nothing.

    /obj/hda_scatter_1_2/hda_scatter1/maskbyfeature1/attribblur1/cl_smooth_generic3:
    Warning: Zero sized attribute, doing nothing.

    /obj/hda_scatter_1_2/hda_scatter1/maskbyfeature1/attribblur2/cl_compute_edgeweights1:
    Warning: Zero sized attribute, doing nothing.

    /obj/hda_scatter_1_2/hda_scatter1/maskbyfeature1/attribblur2/cl_smooth_generic3:
    Warning: Zero sized attribute, doing nothing.

    /obj/hda_scatter_1_2/hda_scatter1/points_trees:
    Error: Not enough sources specified.

    I followed the same procedure as you:

    mask --> scatter & align --> attr remap (to adjust pscale) --> null --> attr randomize (to assign unreal paths) --> merge --> output

    Not sure where I'm going wrong, anu help would be greatly appreciated.

    Thanks

    • Siver 2 months, 1 week ago  | 

      First thing to check would be looking into Houdini and baking the PDG there. Then look if everything is working there, open a pdg item and look if you see the rocks or the instances and also the attributes.
      The other thing could be checking the settings of the HDA processer nodes in the PDG make sure you are using the asset input, to receive the terrain from the node upstream.

      • inversionstudio 2 months, 1 week ago  | 

        Hi Simon, thanks for the reply, much appreciated. I haven't even got as far as that yet. I just wanted to do the terrain and the scatter objects, save out the hda and import that into UE4, I dont need the pga part for my project / tests.
        Any other suggestions, I can send you my hip file if that helps?

        Many Thanks

Please log in to leave a comment.