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


INTRODUCTION

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


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

  • bazuka 9 months, 3 weeks ago  | 

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

    cheers

  • arsenepaul 9 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 9 months, 2 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 8 months, 4 weeks ago  | 

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

  • virtualex 9 months, 2 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 9 months, 2 weeks ago  | 

      SOLVED
      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 8 months, 3 weeks 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 8 months, 3 weeks 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 8 months, 3 weeks ago  | 

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

    • Siver 8 months, 3 weeks ago  | 

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

      • mixasty 8 months, 3 weeks ago  | 

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

        • Siver 8 months, 3 weeks 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 6 months, 4 weeks 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 6 months, 4 weeks 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 6 months, 4 weeks 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 8 months, 3 weeks ago  | 

    Great set of tutorials. Thanks for sharing.

  • AeroAstroArts 8 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 8 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 7 months, 4 weeks 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.
      https://www.sidefx.com/bugs/submit/
      Maybe locking nodes will work as they are locked and don't have to calculate.

  • DespSalp 7 months, 3 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 7 months, 1 week 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 6 months, 4 weeks 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 7 months 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 7 months 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 6 months, 4 weeks 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 6 months, 2 weeks ago  | 

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

  • JinChaoH 5 months, 3 weeks ago  | 

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

  • thatjmax 5 months 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 5 months 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 5 months ago  | 

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

  • interpegasus 5 months 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 5 months 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 5 months 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 5 months 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 5 months 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 5 months 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 4 months, 4 weeks 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 4 months, 4 weeks 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 months, 3 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

  • Hammertale 4 months, 3 weeks 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 4 months, 2 weeks 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 4 months, 2 weeks 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,
    Zoran

    • Siver 4 months, 2 weeks 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 4 months, 2 weeks 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 4 months, 2 weeks 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 !

    Mara

    • Siver 4 months, 1 week 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 4 months, 1 week 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 4 months, 1 week 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 4 months, 1 week 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.

    https://drive.google.com/file/d/1pT41QDWmjDqr6hp2haByMb8UEebQbbh5/view?usp=sharing

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

    • Siver 4 months, 1 week 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 4 months, 1 week 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:

    https://www.sidefx.com/products/sidefx-labs/sidefx-labs-tools/

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

    Thank you!

    • Siver 4 months, 1 week 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 4 months, 1 week 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 4 months, 1 week ago  | 

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

      • Kdunique1 4 months, 1 week ago  | 

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

        • Kdunique1 4 months, 1 week ago  | 

          ok thanks much I was able to figure it out

  • Hammertale 2 months, 1 week ago  | 

    How to make the building's color vary? I followed the instructions but all of my buildings are green......

  • RobertWienk 2 months, 1 week ago  | 

    Hey! I have been trying to figure out how to get only 1 door per bottom floor in a procedural way.

    In the cover of this tutorial you only have one door on the bottom floor, but I could not find anything about it in any of the videos, so I got stuck here. Do you have any ideas for this?

    • Siver 2 months, 1 week ago  | 

      You can use an override option with the building tool. You can find an example here https://www.sidefx.com/tutorials/building-generator/
      The link will show you more detail about the building tool and has an example as well you can look into.

      • RobertWienk 2 months ago  | 

        Oh I noticed that one. Wouldn't that have to be placed per building? The osm map will be exposed and changed in different ways, might be that the override option gives some weird results in that case.

        • Siver 2 months ago  | 

          You can build a setup that is selecting a random point (or like a middle point) at the bottom floor and override this as a Door. You can also override the unreal_instance value from wall to door model but they need to be the same size of course.

          • RobertWienk 2 months ago  | 

            Thank you a lot. I will give that a try!

  • Hammertale 1 month ago  | 

    Hello, I still can't figure out correct module dimensions when using custom modules... Can you make an exact description? Thanks!

    • Siver 1 month ago  | 

      When using custom models you will need to set the correct width and height in the building generator utility node. For more details on the Labs building tool here is everything you need to know about the tool https://www.sidefx.com/tutorials/building-generator/

  • interpegasus 1 month ago  | 

    Hi,
    I would like to know if there is a version of the source code at Github? When opening the project on Houdini 18.5 it returns:

    Warning
    This node is using an incomplete asset definition. It will not
    function properly until the asset library containing the full
    definition is installed.

    Thank you

    • Siver 1 month ago  | 

      Hey, This warning is saying that certain nodes are missing. I opened the file in 18.5 and works fine.
      Check if you have installed the SideFX Labs and make sure you install the HDA's from the project. Or try opening the main HDA OSM_Tutorial_01 instead of the hip.

      • interpegasus 1 month ago  | 

        Thank you very much! : ) It works.
        I have another question when I import the digital asset into unity I get the following error:

        I would like to know if it is possible to import into unity with the Houdini Apprentice Version? Or if there is an Indie trial? Thank you again!

        ERROR
        Loading Asset Library From File : HAPI Error: No Valid Licenses Found
        - HAPI_LICENSE_MODE unset or is set to 'default' meaning Houdini Engine will first try to acquire a Houdini Engine license and if one is not found it will try to acquire an interactive Houdini license (Houdini Core then Houdini FX).
        - No Houdini Engine license found.
        - No Houdini license.
        - Found a Houdini FX (Houdini Master) license but it is not the required commercial variant.
        - No Houdini Engine Indie license found.
        - No Houdini Indie license.

        • Siver 1 month ago  | 

          To use Houdini Engine with Unity or Unreal, you will need an Indie license or higher.

          • interpegasus 3 weeks, 5 days ago  | 

            Perfect Thank you!

  • interpegasus 3 weeks, 5 days ago  | 

    Hi, I have a couple of questions:
    1. I would like to know if there is a tool or recommended procedure for adding a park in the city with trees?
    2. In general the tutorials have some steps related to converting the city, to a resource that can be used in a game engine, on Unreal. I would like to know if the steps are also required for Unity 3D or if all or some of them can be skipped?
    Thank you again!

    • Siver 2 weeks, 1 day ago  | 

      1. Not sure if there is a tool for that out there. You need to define an area to create a park and then scatter trees. You can use the new Labs tree tools.
      2. The process to open it in Unity is very similar mainly the unreal_instance will be unity_instance.

Please log in to leave a comment.