As we kick off a long journey of creation and discovery in Mantle, we have to talk about Themes. Central to the design workflow, we cannot overemphasise how important Themes are as the primary hub for all content used to create an environment.
Other related posts in this series cover:
We've created a handy reference on the right to help you better understand Themes, their contents and how they work to create endless unique environments.
A Theme contains several environment data Layers, which group data for similar land areas together including:
Inside each of these layers are various subtypes each with a Style reference that takes care of the appearance for that subtype. In the case of the Landuse layer and its park element the style associated with the park visually defines how all land use elements identified as park will be created.
In turn these Mantle Styles themselves hold references to the components for creating the visual appearance such as materials, objects and object placement rules enabling you to define how every element of an environment is created in your scene. We'll talk more in depth about Styles in their own post.
So with that all being said effectively you can think of a Theme as a Subtype-Style index organised by layer.
This approach is incredibly flexible, and allows simple environments to be defined by Themes containing a single Style or incredibly detailed environments to be defined by Themes containing hundreds of custom Styles with many material and object components.
Looking at the UI in Figure 1, theme name simply allows you to provide a descriptive name for your theme.
Include Terrain Fill/Terrain Edge/Building Cladding checkboxes are generation shortcuts that provide an easy method to turn off all prefab placement for terrain fills, edges or building cladding. This is most often used when previewing to speed up generation times and also to reduce the complexity of scenes when you're simply wanting to look at a simple version of the location without all the trimmings.
Both the Building and Transport layers have custom settings that provide additional control of generation for those layers, as Figure 3 shows.
Include Bounding Boxes
Filter buildings by area allows you to filter out buildings between the minimum and maximum area sizes. For example if you wanted to only generate buildings over a certain size you could filter out buildings below 200 by setting the min area to 200 and the max value to 10000.
Render Method changes between the current and previous methods for generating mesh content. This will likely be removed in later releases.
Base Altitude sets the baseline height that transport should adhere to when being generated.
Bridge Elevation default sets the default height for bridges to generate at.
Tunnel Depth default sets the default depth for tunnels to generate at.
Taking a closer look at an expanded Landuse layer in Figure 3 you can see that each layer comprises of an extensive list of different subtypes to style individually. These subtypes can be turned on or off to suit different use cases.
By default Theme layers are empty and require you to add a subtype slot, for which you choose a subtype and then assign it an existing Style.
This also means that all layer subtypes are generated by default unless they are specifically turned off. To turn off a layer only requires you to create a subtype slot, choose the subtype you'd like to turn off and then uncheck the box next to it. Looking at Figure 3 you can see that theatre, meadow, bridge and pedestrian among a few others have been switched off.
There are a few reasons why you'd want to switch off a subtype.
- The subtype is an administrative boundary, such as a commercial area. Administrative boundaries don't usually define physical structures and when generating environments can sometimes be undesirable.
However you may very well come up with uses for your own environments where it makes sense to keep them on.
- The subtype is unneeded for the purposes of generation.
If you simply don't need to generate it into your environment because it doesn't fit your purposes, this is the way to do it.
The Default_fallback subtype
It's worth noting that the easiest way to affect styling of every subtype within a layer is to create a subtype slot set to the default_fallback subtype. Effectively whenever a subtype is encountered that doesn't already have a style that has been defined the default_fallback steps in.
The subtypes specific to each layer have currently been compiled from the available datasource subtypes as set out by OpenStreetMap. This area will get a pretty big overhaul in future releases as we add more map providers and need to map common subtypes between multiple providers.
Right now if there's a subtype that you feel is missing and you know should be there based on what you know of the data, you can add the subtype name into the respective layer types list found under Mantle/System/Config in your Project folder. This will then allow the generation process to search through the map data and if it encounters that element it will attempt to style it using the associated style.