The Possibilities
CityBLD’s interface is built on Editor Utility Widgets, or EUWs. This allows for easy customization and the addition of your own utilities to enhance the CityBLD workflow. In this tutorial, we’ll take a quick look at the basics of working with the CityBLD interface, and extend the interface to integrate generative AI with CityBLD using Python.
<aside>
💡
Note: Some experience with using Python in Unreal is recommended to follow along with this tutorial!
</aside>
Community Tutorials
The CityBLD community has contributed to this topic! A video tutorial is available here from McGamez2k99:
https://www.youtube.com/watch?v=5KoNFs_4vb0
An example:
- First up, we’ll open our EUW. Here I’ll be working in the World Tab, found in Plugins/CityBLD/CityBLD/Blueprints/EditorUtilities/WorldTab.
- You’ll see some other utilities stored here. We’ll just duplicate one of these buttons to create our own.

- We’ll add an “on clicked” or “on pressed” event to the button, which triggers our events.

- The first thing we want to do inside the BP is get what the user has selected, so we know what to apply this utility to. Here, we’re getting the selection, casting to it as a CityBLD Modular Building, and warning the user if they’ve selected something else.

- We’ll then check to confirm that the building has address data for us to look up in the OpenStreetMap tags, and if so, we’ll run our function on it!

- This function simply constructs a street address and file path to save the image, which a Python function takes as an argument to make a request to the Street View Static API. Usage guide for this API is available here:
https://developers.google.com/maps/documentation/streetview/overview