To manage pipeline workflows, you can turn to Task Operators (TOPs) which are built using a technology called PDG which stands for Procedural Dependency Graph. Workflows created using PDG use TOP nodes that generate work items that distribute tasks to either your local computer or a larger compute farm. 

The TOP network lets you determine how different work items depend on other work items and how each of them is contributing to the final output. This information is easy to visualize in the node graph which can be used to define how you want data to flow through your network. TOPs lets you build workflows that can be used to automate, analyze and scale your pipeline.

In this lesson, you will use TOP nodes to take a city map, create buildings for each city block and then grow this system to handle more complex buildings and larger city maps. Houdini artists will probably know how to do this in SOPs, but by using TOPs, you can learn the PDG workflow while creating a system that can be easily scaled to distribute multiple tasks to an external compute farm to process in parallel. 

Lesson Goal

  • To create a TOP (Task Operator) Network to build up a procedural city and then render it out. 

What you will learn:
  • How to convert a city map image into geometry. 
  • How to set up a TOP network to save out the city blocks
  • How to create Geometry in TOPS to build buildings on each city block.
  • How to create a city core to make some buildings higher than others 
  • How to wedge the cityscape to try different locations for the city core 
  • How to wedge the use of different map images
  • How to use TOPs to render out the city and compare wedges using an image mosaic

NOTE: This lesson uses Image Magick - make sure this app is installed on your computer.



Robert Magee is a Senior Product Marketing Manager at SideFX who has been working with Houdini for over 15 years. He has created lots of learning material and demos designed to help artists understand how going procedural with Houdini can benefit their work.

More from Robert Magee


  • Cookie428 5 months, 1 week ago  | 

    When I get to the create city grid hda step. It seems to error out. I don't know what I am doing wrong.

  • rmagee 5 months, 1 week ago  | 

    Can you save your work so far and zip up your project directory and send it to me ( and I will take a look.

  • FranciscoBravo 5 months, 1 week ago  | 

    Hi, nice Tutorial thank you very much. But I am having a problem at the end with the imagemagick node the next error appears every time I try to cook it:

    Workitem imagemagick10_5 failed
    Workitem imagemagick10_5 failed

    Do you know what might be the problem?

    • rmagee 5 months, 1 week ago  | 

      Do you have Image Magick installed? If so then please send me your project files zipped up and I can look into it for you.

  • aperry 5 months, 1 week ago  | 

    Is anyone else having the issue where the create_buildings ROP geometry output doesn't write any files? I've fiddled around with the settings a lot but I'm not getting anything from this node in the geo directory. I've checked the output path is correct.

    • rmagee 5 months, 1 week ago  | 

      Did you TURN OFF the Use External SOP option on that node? I had that issue when I was testing the tutorial - it says to do it in Part 4 step 1 but I missed that step anyway.

    • JoachimPaul 5 months, 1 week ago  | 

      i guess it's part 01 on page 05
      "Set Work Item Generation to Dynamic"
      Thats what i missed.

      • LingLingLing 1 month, 3 weeks ago  | 

        YES! That's the problem!! But PLEAAASE, anyone can enlighten me a bit why it will cause this problem? I'm sorry if it's a rather stupid question because i'm fresh new to Houdini and I have squeezed all my brain juice out trying to figure out why. Thank a lot in advance...

  • HoudiniUser2 5 months, 1 week ago  | 

    Hi, thanks for the tutorial. Awesome technology, but ...

    I am following this tutorial to the point of cooking the HDA Processor. The work item display turns red with no further error messages. Just saying: "failed 1" in the info box.

    I tried the same thing with a new file and an example from the side/fx website ("example_top_hdaprocessor")and got the same result. The node cooked,, the work items display became green as normal and short before finishing changed to red.

    Is the Apprentice version of Houdini unable to work with HDA's in the TOP HDA Processor?

    • rmagee 5 months, 1 week ago  | 

      There are lots of little gotchas when working through PDG. I would need to see your network to see how to fix things. I know that all the required steps are in the tutorial but sometimes it is easy to skip one of them.

      • HoudiniUser2 5 months, 1 week ago  | 

        The tutorial should be compatibel with Houdini Apprentice but sadly it is not.

        Here is the error log:

        ['/Applications/Houdini/Houdini17.5.173/Frameworks/Houdini.framework/Versions/Current/Resources/bin/HDAProcessor', '/Users/Uli/Desktop/tops_lesson_start/pdgtemp/54028', '/Users/Uli/Desktop/tops_lesson_start', 'hdaprocessor10_3']
        Returned error code 1:

        hda name: /Users/Uli/Desktop/tops_lesson_start/hda/Uli_test2.hdanc
        operatortype: Sop/Uli_test2

        Could not load /Users/Uli/Desktop/tops_lesson_start/pdgtemp/54028/Uli_test2.hdanc
        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.

  • Mjag007 5 months, 1 week ago  | 

    I'm also running into an issue. It will cook fine and the small city looks great. But when you go back and adjust the height settings and recook. You end up with one messed up building.

    • rmagee 5 months, 1 week ago  | 

      Please check your viewer path - if it is pointing to inside the ropgeometry top then things will look strange - go back to the object level and click on a work item - should fix things.

  • rmagee 5 months, 1 week ago  | 

    It is supposed to work in Apprentice. It should be looking for the Apprentice license. I have forwarded your message to R&D for review.

  • 3clipse 5 months, 1 week ago  | 

    Hi Robert

    Tks for the tut very nice so far... clarification required though.

    In Part 6 - 03 you say to edit the attributecreate node but the associated image shows the change being made ( + @Cd.g*30) in the building _height node?

    Which is it...


    • rmagee 5 months, 1 week ago  | 

      It could go both places but the attributecreaye node is better for steps down the line. Must be an old screen grab when I tried the other way.

      • 3clipse 5 months, 1 week ago  | 

        k tks... I went the other way so will go back and change that... :)

  • 3clipse 5 months, 1 week ago  | 

    Hi Robert

    Another question in Part 8 when converting to hda. I get an error node to convert deleted! On the forums I discovered a post for this error message where Michael Goldfarb advised to shift c (subnet) and then create the HDA from there... I am familiar with creating digital assets this way do you see any problems doing that here?

    • 3clipse 5 months, 1 week ago  | 

      Yeah that didn't work (and neither have another half dozen attempts of various things) I am almost certain that it is a pathing issue... anyway I will keep trying

      • Luiz_Lobato 5 months, 1 week ago  | 

        It's needed to press shift+C to convert the selected nodes to a subnet first. After this, you can create the HDA.

  • kenxu 5 months, 1 week ago  | 

    Houdini Engine is not available for Apprentice - that is why HDA Processors will not work in Apprentice. You could use the ROP Geometry node to achieve basically the same thing, however.

    • Valent 4 months, 3 weeks ago  | 

      Hi, could you please explain what setting should I use in the ROP Geometry to be able to use it instead of HDA Processor?

  • FrancisGagne 5 months, 1 week ago  | 

    Hi Robert,

    I cook all the building & i try to figured it out why the height variation doesn't distribute randomly.
    All my building have the same height.

    Thank you, Francis!

  • Luiz_Lobato 5 months, 1 week ago  | 

    It's needed to press shift+C to convert the selected nodes to a subnet first. After this, you can create the HDA.

  • twelveplusplus 5 months ago  | 

    Thanks, Robert, for continuing to release quality printed/pdf material! Some of us get way more value from print than video!

    I would love more advanced material, too. A Vex wrangle/python cookbook would be extremely useful! Much easier to follow than a youtube video, etc.

    Also, a monthly Houdini Zine would be ***super awesome***! Just a couple of pages with tips and tricks. Maybe a bit of coverage for featured artwork, games, animation, etc.

    A little zine might be a good way to keep people up to speed with current trends, too...
    Development trends change quickly. A regular zine could be a way for literate Houdini users to stay hip.

    ...I'll see my self out, now. :D

  • twelveplusplus 5 months ago  | 

    oh, and love image magick, too! All the best picture processing algorithms for freeee!! Besides which, it makes a mean animated gif!

  • kumpa 5 months ago  | 

    Thank you for reconsidering making tutorials in PDF as video tutorials are often too stretched and narrator might not be everyone's cup of tea.

  • nastyatupitsyna 5 months ago  | 

    Hi, can you please send the file scene to the

  • borbs727 4 months, 3 weeks ago  | 

    Part 5-2 isn't merging the entire city for me. Sending scene file.

  • borbs727 4 months, 3 weeks ago  | 

    I should elaborate that it is creating a merged geo file, its just not displaying in my viewport. I still only see individual buildings.

  • borbs727 4 months, 3 weeks ago  | 

    Never mind! I didn't click the work item in the import node.

  • Mjag007 4 months, 3 weeks ago  | 

    Its working now, No idea what I did wrong

  • 2b65d3d0a8c04862 4 months, 2 weeks ago  | 

    Hello , I just want to know where I can download the citymap like this?

    • 2b65d3d0a8c04862 4 months, 2 weeks ago  | 

      I mean the citygrid

  • 2b65d3d0a8c04862 4 months, 2 weeks ago  | 

    Hello,where can I download the citygrid,thanks

    • rmagee 4 months, 2 weeks ago  | 

      The download scene files button above has the city grid in the Tex folder.

  • thirdworldman 4 months, 2 weeks ago  | 

    After cooking the building_merge node, I'm not seeing the entire city -- only single buildings. Any help would be appreciated!

    • thirdworldman 4 months, 2 weeks ago  | 

      Nevermind - I'm an idiot!

  • thirdworldman 4 months, 2 weeks ago  | 

    Ok, I'm now stuck on city center adjustment based on the sphere. In the attributestransfer node, you wrote to "set primitives to Cd". Is that the correct value? I got an error when I typed this into the primitives field, and then changed it to `@Cd.` Is that correct?

    • rmagee 4 months, 2 weeks ago  | 

      Make sure both the color nodes are pointing to primitives. One of them might still be assigning color to points.

  • thirdworldman 4 months, 2 weeks ago  | 

    Thank you for your response. Unfortunately, the sphere still isn't affecting the height of buildings within it's radius. Any other thoughts?

    • rmagee 4 months, 2 weeks ago  | 

      I'd have to see the scene file - I added my email earlier in this thread - if you wrap it up then I can take a look.

  • thirdworldman 4 months, 2 weeks ago  | 

    Got it! Nevermind. I keep forgetting to hit the green circle!

  • nickryan 4 months, 2 weeks ago  | 

    I have run into a problem when trying to read the '@pdg_output' on the work_item_viewer node (PC) - I get an error -
    Unable to read file "'@pdg_output'".
    GeometryIO[hjson]: Unable to open file ''@pdg_output''
    GeometryIO[hclassic]: Unable to open file ''@pdg_output''

    • echoshen 2 months, 1 week ago  | 

      so how do you fix this problem final

    • echoshen 2 months, 1 week ago  | 

      OK...I Know.the wrong quotes

  • EmmanuelHoudini 4 months, 1 week ago  | 

    Hi, nice tutorial but i have a problem to cook a "create_buildings" when i cook all the point are red and not green. Another problem, when i see the buildings "attributecreate1" all buildings appear on -Y. I don't know what's wrong. Thank you.

  • nickryan 4 months, 1 week ago  | 


    I am very new to Houdini and probably missing something fundamentally simple in the setup, but have retraced steps meticulously to no avail - stumbling at pointing the file node to '@pdg_output' still - It seems to be a path or Drive letter thing - it is fine if I point it directly to the bgeo files but not by expression....

    Any ideas?


  • rmagee 4 months, 1 week ago  | 

    Be sure to use back ticks not single quotes

  • nickryan 4 months, 1 week ago  | 

    Thanks Robert....I was indeed missing that fundamental key stroke - I never knew it even existed!!!

  • cookieclarke 4 months ago  | 

    Hi Robert.
    Awesome lesson and format. Thanks heaps.
    Im hoping you could shed some light on why I lose my city_01_geometryimport file sequence in the file in "work_item_viewer", every time I close and re open my scene file?
    Actually it seems that when ever I dive into ROP geometry output I lose my city completely. I managed to finish part 5 successfully but went into change the color of windows, then i lost my city. Is it a matter of cooking again?

  • echoshen 2 months, 1 week ago  | 

    I have a same problem with you ,so how do fix it

  • rmagee 2 months, 1 week ago  | 

    Yes you need to recook after you quit and reload the scene file - it should find the files on disk and load them instead of rebuilding for a fast cook but I am not sure based on the settings we used in the lesson.

  • Andr 2 months, 1 week ago  | 

    Regarding part 6 and note about "DIRTY & CLEAN WORK ITEMS: As you make changes to the downtown core, you will see that some nodes become dirty and have to be recooked while others are fine the way they are. "

    When I shift-G at point number 4, ALL my work items had to be recooked. Is this supposed to happen?

  • Andr 2 months, 1 week ago  | 

    Similarly in part7, after I create the new 'attribute create' node with @primitiveoffset==62, the topnet recooked all the 73 work items.
    Then I changed @primiteveoffset==61, and again all the work items are re-cooked again.
    I expected that only the 61 and 62 work items would be reworked.

  • Hamad 1 month, 3 weeks ago  | 

    I have issue with part 2_6/Users/hamadalateeqi/Desktop/Screen Shot 2019-06-30 at 7.02.16 AM.png

  • Paris Hall 1 month, 2 weeks ago  | 

    Hey there, Robert!
    Such a great tutorial. I've learned so much from a short and sweet document.
    Truly appreciate the straightforwardness!

    Thanks again!

  • maskn12 1 month, 2 weeks ago  | 

    I can´t go to the next step cause of the apprentice HDA license, is there anyway to fix this?

Please log in to leave a comment.