Learn how to create a city block using data acquired from Open Street Map [OSM]. This information will be processed using three tools from SideFX Labs combined into a Houdini Digital Asset that can be loaded into UE4 using the Houdini Engine plug-in. The asset will procedurally generate points that can be used to instance geometry that is part of your UE4 project. These point use attributes to add variation to the look of the buildings based on information from the OSM data.  

NOTE: These lessons use the SideFX Labs tools. Make sure the latest release (non production build) is installed before doing this lesson. 
The project files used for this lesson were created with Unreal 4.24


Before diving into the lessons, explore the completed city block in UE4 then review the steps taken to build up the architecture from OSM data. Learn how the information from OSM is used to create roads, buildings and props such as trees or garbage cans.

Length: 03:03

PART 1 | Prepare Open Street Map Data

The first step is to acquire the OSM data from the website. This can be downloaded in a format that works with the OSM tools in SideFX Labs. You will learn which information is available and how to trim it down to only the geometry that you need to create your city.

Length: 04:38

PART 2 | Generate the Buildings

To flesh out the city blocks into detailed meshes, you will use the Building Generator tool in SideFX Labs. This tool allows you to use outside geometry to add details by exporting points with attributes for instanced geometry inside UE4. You will wrap up the nodes into a Digital Asset to use with the Houdini Engine plug-in for UE4 to allow you to test it as new features are added to the system. 

Length: 18:11

PART 3 | Create Road System

Starting with the data from the OSM file, the new SideFX Labs Road Generator tool will be used to build up the road system. You will learn how to set up width as an attribute and how to create the geometry in-between the roads. You will set up proper UVs for these areas and set up the roads for instancing in UE4.

Length: 14:59

PART 4 | Add Props and Details

The next step is to add props such as posts, trees and garbage pails. You will learn how to set these up to work procedurally with the road system and how to add randomness into the size and location of the pieces. This approach could be easily repeated to add even more detail to this game environment down the line.

Length: 09:41



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


  • bazuka 6 months ago  | 

    Omg, mate amazing tutorial, hope to see more interesting stuff soon ;)


  • arsenepaul 5 months, 3 weeks ago  | 

    Man, I'm an Architect, and honestly this blew my mind. Already using parametric software like grasshopper, but you just showed how to rapidly play with facades and attributes on another level. Can't wait to give it a try

  • Strygwyr 5 months, 3 weeks ago  | 

    I'm trying to follow the tutorial but, in tutorial 2 node "File", I can't load the files .usasset that you provided with the download link. How can I do?

    • archound 5 months ago  | 

      It's under citybuilding_osm_project_files\city_building_osm_project_files\OSM_Unreal_project\House_Models
      uasset format is unreal only

  • virtualex 5 months, 3 weeks ago  | 

    I have the exact same problem as Strygwyr, there are no valid formats like .fbx or .bgeo to load the corresponding geometry.

    • virtualex 5 months, 3 weeks ago  | 

      I opened the hip file and found out that the geo is cached in a stash node. So I simply used that node.
      In order to follow the tutorial as it is, I used a blast node after the stash node, then in Group, I selected the element I wanted, in this case "Wall_01" and checked delete non selected. This allows to isolate each element.
      With a file node or with a simple right click on the blast node the geo can be saved in a file.

  • jonahtobias 5 months ago  | 

    When I load the project "Road Tool V1" HDA is an incomplete asset and load in as an empty subnet. Anyone else having this problem? I am using a mac.

    • Siver 5 months ago  | 

      The most recent version of the Road tool is found in the Labs tools. I recommend installing the Labs tools and look if the road tool there works

  • mixasty 5 months ago  | 

    does not work :( the crosshair appears, but there is no road

    • Siver 5 months ago  | 

      Are you using the latest version of the road tool in the Labs tools?

      • mixasty 5 months ago  | 

        use 297 Lab tools :( An intersection is created, but everything goes to a point. no highway

        • Siver 5 months ago  | 

          The latest version of the Labs tool is 451 (non production), try taking a look at the road tool in the latest version.
          What the current issue can cause is that there is no road width attribute which says how width the roads are.

          • tmaeda777 3 months ago  | 

            Hi, Simon
            I've download SideFX labs tools today and installed..
            When I road the "road_generator" ( I think this is the rood tool you are talking about ), I still don't see road, just cross section.. no road

            can you please take a look?

            • Siver 3 months ago  | 

              Strange, Just tried out the Labs road generator and it seems to work. Make sure to use a decent scale because on very small scale it will not work well.

              • tmaeda777 3 months ago  | 

                Hi, Simon.

                Thanks for quick replying.. As you said older post in terms of issue which is no road width attribute.. I could fixed it so now it's all good! Thanks for checking this out.

                and Thank you so much for sharing your great houdini knowledge.

  • Scara 4 months, 3 weeks ago  | 

    Great set of tutorials. Thanks for sharing.

  • AeroAstroArts 4 months, 1 week ago  | 

    Great tutorial, would there be any way of using the position data to string multiple chunks you bring in for larger environments?

  • DespSalp 4 months ago  | 

    Hi! I have also tried this tutorial out, but I am using Unity instead of Unreal. Unfortunately, after two days of trial and error I am still getting errors after importing even only the part with the osm import, filter and buildings nodes ("cooking finished with some errors") and I can't see the geometry in Unity after the import. I would be very thankful for any ideas!

    • Siver 4 months ago  | 

      Hey, I have not tried this fully in Unity. What could work is making sure you are using the latest version of Houdini and the Houdini plugin for Unity.
      If the issue is still there then it might be possible that OSM node are not fully working with Unity. This bug should then be reported to SideFX so they can look into it.
      Maybe locking nodes will work as they are locked and don't have to calculate.

  • DespSalp 3 months, 4 weeks ago  | 

    Hi! Regarding my previous post: Houdini defined automatically some paths as $JOB or $HIP and I chose them for importing the geometries for the wall etc in the file nodes. That created the problem. It only worked when I chose the normal windows path without $JOB or $HIP or anything else.

    Unfortunately, I have another problem. I have done all the steps in the tutorial with some changes for unity instancing and then I imported only the buildings part in unity. In unity, I could see the same things I could see in houdini (GENERATEDSLOP together with points). The same happened when I imported the same asset (but for unreal instancing) in unreal. That would mean that it is not a unity problem. Probably I am doing something wrong. It would be awesome, if somebody could help me. Thank you in advance!

  • cjonesy20 3 months, 2 weeks ago  | 

    Brand new to Houdini. I'm following the first video. I create a geometry node and then add Labs OSM Import to it, select my .OSM file but nothing shows up. In your video it jumps from selecting the file to it just showing up. Is there some step I'm missing in between? I'm going to be using this in Unity but haven't gotten to that step yet.

    • Siver 3 months ago  | 

      With this website you can get the osm files https://www.openstreetmap.org/export#map=14/25.6014/-103.4037 . You might need to add the .osm add the end of the file. Opening that file in Houdini should work with OSM import node.

  • Devero 3 months, 1 week ago  | 

    Thanks for the great toolset. I've been using this workflow for a project and I'm having the 2 following problems:

    Using Houdini build 18.0.460 and Unreal Engine 4.25.1:

    1) When making the curbs and assigning the unreal material, inside of unreal, the texture does not work and/or uv mapping is missing. On the sample version, the curbs just work even though the code is the same as I'm using. I've tried doing uv projections and just comes out wonky.

    2) When doing the instanced road pieces, they are not orientated in the correct direction. I have tried doing the suggested "orient' attribute in the videos, but it doesn't not align correctly.

    Any help on these two issues would be great. Thanks again!

    • Devero 3 months, 1 week ago  | 

      On #1) for the curb uvs I actually just figured out a fix for it, under the sweep node, you can "Compute UVs" and that worked nicely.

      Still having issues with #2

      • Siver 3 months ago  | 

        For #2 ,Tried outputting the instance points only to see if they work separated. If they work when separated that means there might be conflicting attributes when merge all instance or other nodes together. Often you need to double check if all (other) instances and outputs have a Normal or orient (if you use orient).

  • Burgess 2 months, 3 weeks ago  | 

    Amazing tutorial, and... how to build the roof of a house?

  • JinChaoH 1 month, 4 weeks ago  | 

    so....doest the points normal affect the instance rotation at all?
    the orient trcik seems not working for me

  • thatjmax 1 month, 1 week ago  | 

    Nothing happens when I pull the houdini file into Unreal, just the transform cross hairs appear in the black 3d houdini logo. This happens with both my own attempt and the files provided. Any thoughts?

    • thatjmax 1 month, 1 week ago  | 

      Nothing happens when I pull the houdini file into Unreal, just the transform cross hairs appear in the black 3d houdini logo. This happens with both my own attempt and the files provided. Any thoughts?

      • thatjmax 1 month, 1 week ago  | 

        Ignore this! I was on Apprentice not Indie but UE wasn't giving me the error.

  • interpegasus 1 month, 1 week ago  | 

    Hi Thanks for the tutorial. I would like to know if would it be possible to generate the city in real time inside the game with data from OSM? Or if currently it only supports importing selected areas from OSM as an Unity asset?

    • Siver 1 month, 1 week ago  | 

      With the plugin you can get OSM data in Unity in realtime in Editor mode only. The idea here is that you bake the OSM data/city.

  • Kdunique1 1 month, 1 week ago  | 

    Hey what's up guys I was wondering just in the first video lol 1min 30seconds in after putting sidefx turning it on I have no icons listed after update tools nor could I add a node to continue to the next step Do I need to upgrade from aprentice to houdini indie?? or is there something else wrong here hope you guys can help this is kinda frustrating hahahaha

    • Siver 1 month, 1 week ago  | 

      If the OSM nodes are not available that means they are not installed correctly, re-install the Labs or get them from github. The Labs nodes will work in Houdini Apprentice but if you want to try out the plugin with game engines then you will need the Houdini Indie version. https://www.sidefx.com/tutorials/sidefx-labs-installation/

  • thatjmax 1 month, 1 week ago  | 

    Anyone have issues when they export their HDA from part 2? My wall orientation is all over the place, but I also have incomplete geometry when I load the HDA from the files provided -- https://imgur.com/a/1luzcOS

    • Siver 1 month, 1 week ago  | 

      What you can do is only output the instances (point cloud) of the building, this way you can know if the orientation get broken when merging with other geometry.

  • Kdunique1 1 month ago  | 

    hey thanks for the info I updated it but after restarting the tools are now there but still no Labs OSM importer must need the Houdini indie version or better cause still not working thanks much

    • Siver 1 month ago  | 

      Did you also try to install the non-production tools, by disabling the toggle in the Labs menu. If the issue keeps happening you can contact support https://www.sidefx.com/bugs/submit/

  • Kdunique1 4 weeks ago  | 

    Can i ask you guys something is anyone having problems pulling up anything during the part 1 video I done have osm building filter etc also when I type in osm nothing pops up

  • Dizzyding 3 weeks, 5 days ago  | 

    Hey I want to use "copy to points" with "pack and instance" so i can replace the buildings with a whole model in Unreal, but the points appears on every corners of the building. How can I change them into only one point in the center?

    • Siver 3 weeks, 5 days ago  | 

      I can recommend the approach from the video to use the points and assign an attribute in them with the instance. If you use the copy to points then you need to create a copy to points node for each model of the house.

  • zedman 3 weeks, 2 days ago  | 

    Hi Simon,
    I'm sorry, but I cannot find this road building tool. I am using the Houdini 18.0566 version, downloaded SideFX labs tools, tried to install it automatically and manually, changed the SideFXLabs.json...

    No way to get it running. Do you have any idea what to do?

    Best Regards,

    • Siver 3 weeks, 2 days ago  | 

      Hey Zoran,
      Have you tried installing the Non-production builds (this will give access to beta tools). In the Houdini in the Labs update/install menu disable the Production Builds only.

      • zedman 3 weeks, 2 days ago  | 

        Hi Simon,

        Thank you for the fast reply.
        Yes, I did especially that. Running Lab Tools version 570. The tools does not appear within the SideFX Labs.
        Although I have all the Game Development Toolset. On the SideFX Lab website there is no Road Generator.

  • marae 2 weeks, 6 days ago  | 

    Hi! Thank you for sharing this amazing tutorial!
    I'm new to houdini ! In the second part, the one related to the buildings, you created an attribute "Building ID" for later changing the aspect of one, or more specific buildings,
    I wonder how do I achive that?
    Thank you in advance !


    • Siver 2 weeks, 5 days ago  | 

      Hey Mara,
      Thanks! In the second part I show at 9:30 how to create the Building ID attribute but I did not fully use it afterwards. It can however be useful to get more variation in buildings. Like you can randomly select Building ID's or call specif numbers, example @Building_ID==1 in a split node with points.

  • marae 2 weeks, 5 days ago  | 

    Thank you for your reply !
    I was able to isolate the building , but how do I manage to get more variation ? I tried to do what you did in the second video at 15:15 with the attribute wrangle, and to change for the selected buildings the windows but it didn't work , I guess that I did some mistake ...is right to use the attribute wrangle to apply the changes? or is there another way? And the geometry that I want to sobstitute should also be loaded in the building generator at the beginning ?

    Thank you very much for your help!

    • Siver 2 weeks, 4 days ago  | 

      You can use the Attribute replace value and assign any piece you want. So first you split buildings for variation, either us the building names or Buiding_ID. Then for each variation/split you add an Attribute replace value and assign to piece to that variation.
      No need to use a wrangle but can be useful, Attribute replace value can do a lot.
      For the geometry they will also have attribute of the Building or Building_ID and you can do the same filtering here.

      If you are more familar with Houdini then you could for example do a for-each loop and loop over Building_ID. Then for each loop you could assign random models. You could even go with PDG for building bigger worlds.

  • kelvincai 2 weeks, 3 days ago  | 

    Thank you for these amazing tutorials, especially the Road Generator HDA. These save me a lot of time!
    However, I was not able to generate bug-free intersection mesh from the Road Generator HDA. I have been using H18.0.567 build of the SideFx Labs tools.


    Here is hip file if you are so pleased to take a look. Thank you!

    • Siver 2 weeks, 2 days ago  | 

      If you find issues in with Houdini or Labs tools please submit them here https://www.sidefx.com/bugs/submit/ . This make is more manageable for the Labs team to keep track of issues in Labs tools.

  • zedman 2 weeks, 3 days ago  | 

    Hi Simon,

    Now I am using the SideFX Lab Tools 576 but still no Road Tool at all. And there is still no such tool in the SideFX tool list:


    Could you please tell me where do you have this tool from?

    Thank you!

    • Siver 2 weeks, 2 days ago  | 

      I will check with the Labs team. As far as I can see the Labs 576 has the Road tool.
      Make sure you are on geometry (sop) level when creating the Road generator node.

  • Kdunique1 2 weeks, 2 days ago  | 

    Hello you guys so I've been trying to work on this now for the past 3 weeks now and just can't get it right. I'm a very busy person and just don't have the time soooooooooooooo I'm willing to buy it off anyone who can zip it up and send it to me already completed like copy your nodes lol etc of course knowing you have done this correctly and it works properly in ue4 thanks much guys!!

    • rmagee 2 weeks, 1 day ago  | 

      The project files are available at the top of the lesson - they contain a final version of the asset.

      • Kdunique1 2 weeks ago  | 

        still having issues with trying to load the files into Houdini I will have someone else take a look thanks much

        • Kdunique1 2 weeks ago  | 

          ok thanks much I was able to figure it out

Please log in to leave a comment.