SceneCity documentation

SceneCity 1.8

For Blender 2.82+

If you need help

For any issue or remark send me (Arnold) an email at couturier.arnaud@gmail.com

What's new

v1.8 - June 9th, 2020

NEW: new presets

several new presets have been added, to help you get started quickly with the specific features you need. In addition to the already present "grid city"and "scatter city", the new presets are:

      • Terrain from image
      • Terrain procedural
      • Terrain from image + procedural
      • Scatter city over terrain
      • Free-form roads

NEW: Free-form roads.

See video tutorial

A new type of roads is available: you can now generate curved roads from mesh edges or bezier curves. That means you can either draw them by hand directly, or generate large networks if you have an input network already.

The results are UV-unwrapped road meshes, with or without sidewalks, and optionally smooth curves from your input mesh edges.

With this new feature, you're not concerned about road angles and limits on junctions (within reasonable configurations). You can have the generated roads go up and down vertically, but they cannot overlap. It's flexible, you have many options at each step of the generation process (number of lanes, roads width, roads smoothness, output mesh density, number of materials and where to apply them on the final mesh, UVs options..) So in the end you have a lot of freedom in how you build your roads procedurally.

You cannot mix them with buildings or terrains for now, this will come in a later release.

Roads that form loops may give odd geometry sometimes, this will be fixed also.

NEW: execute node

The way you execute your graphs is now more streamlined.

You no longer have to execute the steps of your generation process on the nodes manually and individually, that means no more "action" buttons displayed on the nodes. That method of execution was cumbersome with larger node graphs, and was error-prone. You now plug the nodes as you want, chaining procedural actions, then you plug the output of the last node of your generation process to an execute node. When you press the button of the execute node, all the connected nodes will execute. You can have one or many execute nodes in the same graph, and each one of them can execute one or several parts of your node graph, meaning you can execute, in a single action, completely different operations (big or small) in the order you want. That's a lot more practical.

To work faster, you can also use the new key shortcut: CTRL + SHIFT + E. It will execute the execute nodes of your choice, that means all of them (across all graphs) that have their checkbox enabled: "Execute when using key shortcut". That way, you don't have to click on them or even see them, no matter what you're doing inside Blender. This is very useful while you're modeling, a road or building for example, and you want to quickly and easily execute SceneCity to check the result regularly in your 3D viewport.

The execute node is NOT compatible with all the previous nodes, that will come progressively with each subsequent update.

IMPROVEMENT: Color codes on nodes

The nodes now use their background color to show you useful information, and therefore speed up your workflow.

First, which ones have missing inputs are colored in light red. That will make your life much easier to be able to spot immediately simple errors such as missing inputs, even before executing anything. Execution would need to be triggered, and would waste your time and processing power in computations that would lead to an error anyway. Not anymore.

Secondly, after execution, the nodes will also show you which ones have executed correctly in green. In case of error which one provoked it in bright red (with the usual error message in Blender's console), so you know exactly where you did wrong in your graph, usually because of a missing or invalid input. The nodes that should have executed but couldn't because of a previous error will be in yellow. In larger and more complex graphs, that kind of information becomes more and more important to debug errors.

Because color codes are used, they may or may not be suited to your Blender theme. You can choose from a new option in the addon preferences if you're using a mostly dark, or mostly light Blender theme, to let SceneCity adapt the colors to your theme.

The color codes is a work in progress feature, only the NEW nodes introduced in this version 1.8 have this capability. The previous nodes will be completed progressively version after version.

Nodes that execute successfully are colored in green AFTER execution of the graph. (dark theme on the left, light theme on the right)


Nodes with missing input are colored in light red, as you edit your graph before any execution, giving you immediate feedback if the node is properly connected or not. It may still fail at execution if the inputs are incorrect, but at least you avoid trivial mistakes. (dark theme on the left, light theme on the right)


After execution, if a node had errors, it's colored in bright red. The nodes that couldn't execute because of that error are colored in yellow. And those that executed successfully are in green. (dark theme on the left, light theme on the right)

IMPROVEMENT: node sockets

  • The sockets will forbid you to connect incompatible types, so it's much easier to avoid mistakes
  • Required input sockets will warn you with a big "REQUIRED!!" when they aren't connected, in addition to their node being displayed in red
  • Optional input sockets are half-transparent, so you know at a glance what's required, and what's not.
  • Socket types are becoming more diverse and complex, because they represent the different types of data needed, and they are many. As their number grows, making them easy to understand is becoming more important. They can now be connected in different ways, because sometimes sockets of different colors are still in the same category, and may be compatible in some ways. That's why now in addition to color, sockets use different shapes to communicate different categories of data. Gray sockets with a hole inside mean that any, or almost any socket having the same shape can be plugged to it. For example the new and improved node to create Blender objects uses such a socket, because it can hold many different data types. The execute node uses a special socket: square with a hole. Anything can be plugged to it.

Circle sockets, for Blender objects and the data they can hold: meshes, curves, ...

Diamond sockets, for data internal to SceneCity: roads, buildings, 2d geometries, grids, text documents, ...

Square sockets, for other types of data

  • Output sockets now let you know if the output data is fresh new data created during the execution of the node, or if it's the same data as the input but modified in some way by the node during execution. This can be important to know, so that you're not surprised if your input mesh, for example, is modified (or not) after execution. In short, you better know at each step how your data flows through your graph, which is important in larger graphs.

NEW: 2d geometries

2d geometries are a major new data/socket type, and several operation nodes that operate on them are already present. They are used to create the new free-form roads. You can convert back and forth between 3d meshes, 3d curves, and 2d geoms. You can buffer 2d geoms (give them more or less thickness).

You can export 2d geoms to SVG+HTML files, open those files and interact with them in a web browser. This is useful for debugging and visualizing 2d geometries, including 3d meshes and 3d curves converted to 2d geometries. You can also share those HTML files, and put them online.

Other improvements

  • Standardized data selectors on nodes: now, when selecting Blender data such as meshes, curves or materials, the input is the standard Blender one, meaning you have access to the list and search feature, and renaming data in one place automatically propagates everywhere. This is not yet the case for the former nodes, but they will be upgraded in future releases.
  • Output file path selectors now use the standard Blender file browser, for the JSON export node, the new SVG export node, and all future file output nodes.
  • All the new nodes operate on collections of data, not just single instances of data. That allows you to operate on a single data instance (like a mesh), as well as on a whole bunch (lots of different meshes), it makes no difference for you as the graph stays the same. It's generally more flexible, and opens lots of new possibilities for the future. This is not yet the case for the former nodes, but they will follow the same principle in future releases.
  • You can activate/deactivate console messages output for all nodes.
  • You can hide/unhide the node-specific options and controls to make your graphs smaller and easier to see at a glance (the options are always available in the N-panel when you select the node).
  • The button to display the node reference documentation is now in the N-panel. (The reference doc will be completed progressively, about 30% of nodes have a complete page for now)
  • The SceneCity menu in the node editor was misplaced before, now it's fixed.
  • The presets and library assets are linked (or appended) all together now in a single action, as opposed to separately before.
  • The library assets collections are a bit more organized, with a new Presets helper objects collection. It contains objects used in some of the presets to facilitate your life when getting started. The documentation of the presets will tell you how to use those objects.

All the NEW nodes in this version are NOT compatible with ALL the PREVIOUS nodes. So even though the sockets may look the same for some nodes, plugging them together will give you errors. This is of course temporary, and will be fixed version after version. To help you differentiate the new nodes, all of them have [NEW] in their name.

All your existing graphs will NOT be recognized by this version of SceneCity. This is a real inconvenience, but it should never happen again in the future.

v1.7 - December 12, 2019

  • Works with Blender 2.80 + 2.81
  • Updated node categories in add nodes menu
  • Procedural map node:
    • bug: some noise subtypes were giving errors
    • new: added noise type: ridged multi fractal
    • new: added noise subtype: voronoi crackle
    • new: added noise parameter: gain
    • new: added noise parameter: offset
    • changed: removed value add, use a map math node instead
    • new: can invert a noise
    • new: clamp xy positions in [0, 1]
  • New node: scale map
  • Map to blender image node:
    • new: normalize option
  • New node: map math
  • New node: constant value map
  • New node: map translation
  • New node: terrain shape from map
  • New socket type: terrain shape
  • New node: terrain grid mesh
  • Simple buildings layout:
    • buildings size map separated into 2: size map, concentration map. They can be relative to the terrain area or the layout area
    • new input: terrain. Can follow a terrain now


v1.6 - October 23, 2019

Preset cities can easily be added to the current blend file, for much easier starts.

Included assets can be linked or appended to current blend file (appending was the only option before), and it is done from the node editor directly, no need to go to the deprecated SceneCity panel in the scene settings.

Fixed bug: matrix multiplications weren't correctly ported to Blender 2.80 for object instances having children, so they were unusable.

Empties and any object types are supported in JSON export (and Unity importer), no longer just mesh objects.

Improved Unity importer:

    • auto-fill asset fields in UI, based on asset names (was a manual step before)
    • preserves object names from Blender scene to Unity scene
    • only show relevant buttons in UI