Manual / Design: dressing it / What a theme containsiCity 2 · Windows

What a theme contains

A theme is three families of asset — materials, props and elements — plus the four files in your project folder that name them and carry the baked result. This page explains what each part is, how a theme covers a city by category rather than object by object, and what happens to your scene when the city is dressed.

Three kinds of asset

A theme is a set of picks in three families. Materials dress surfaces, props are objects placed on the city, and elements are the facade modules that buildings are assembled from. Everything the Design module lets you change is one of the three, or a rule about where they go.

KindWhat it dressesWhere it comes from
MaterialsRoads, sidewalks, curbs, roofs, walls, windows, greenery — anything with a surface.Library folders under materials/, one folder per category.
PropsBenches, bollards, road lights, roof tanks, wall signs — objects scattered onto placements.Library folders under props/, one folder per category.
ElementsThe facade of every generated building: base, middle, top and crown modules.Library folders under elements/, one folder per size category.

The Design column is not tabbed. Under the selection header it stacks collapsible sections, in a fixed order: the per-mode dressing parameters, then Materials, then Props, then Surface details. Two of the three families have a section of their own; elements do not — they are chosen by the theme and placed by the dress, not picked one at a time.

what-a-theme-contains-category-strip.png

The Design column in Roads mode showing the selection header at the top and the collapsible section headers stacked beneath it — the per-mode parameters, then Materials (expanded, showing its category carousel), then Props, then Surface details.

/docs-shots/blender/
The Design column in Roads mode: the selection header, then the stacked sections.
Note

The last section, Surface details, is collapsed by default and holds the scattering systems for wear, litter and cracks. It is covered on Surface details.

Where a theme lives on disk

A theme is not stored in your .blend. It is four things in the project folder under Documents/iCity 2, and they travel together: the three ways of getting a theme all move exactly this set.

text
Documents/iCity 2/<project>/
    assets.json          the theme's picks
    outputs.csv          the point data - required
    outputs.usd          the dressed geometry
    send/                what was sent to produce them
    dress/               legacy, from builds before 2026-08-15; nothing reads it
    city_state.v1.txt    the city itself (Draft)
    project.json         the server id, nothing else
    README.md            the project name and description
what-a-theme-contains-project-folder.png

Windows File Explorer open on Documents/iCity 2/<a project that has been dressed>, showing assets.json, outputs.csv, outputs.usd, project.json, README.md, city_state.v1.txt and the send/ folder. Details view so file sizes are readable.

/docs-shots/universal/
A dressed project folder in File Explorer.
FileWhat it is
outputs.csvThe point data: one row per placed thing, with its source, position, rotation, scale and the columns the facade system reads. This file alone decides whether a project has a theme to link.
outputs.usdThe geometry the cloud baked. It can be absent — a run can produce points without geometry, and the import reports that rather than failing.
assets.jsonThe picks: which materials, props and elements this city was dressed with, by category, asset id and seed id.
send/What was sent to produce the outputs (city.json, city.usd, facade_patterns.json and any textures), kept so a re-send has its inputs.

Append from a project copies those four into the active project, overwriting what is there. It is a copy, never a link, so the source project can later be deleted or re-generated without breaking this one; and send/ is replaced whole, so a textures folder from the previous theme cannot survive under the new assets.json.

The picks are not the files

assets.json names assets; it does not contain them. The model and texture files live in your Library Folder, and a pick is a category, an asset id and a seed id that point into it. The theme bundled with the addon, for instance, names 54 materials in 10 categories, 21 props in 20 categories and 73 elements in 11 size categories — in a file of about 130 KB.

json
"props": {
  "bench": {
    "count": 1,
    "assets": [
      {
        "name": "Limestone plinth bench with timber slats",
        "asset_id": "6c29193c-737b-51ed-b123-d1cdac2f4043",
        "seed_id": "d8559910-92a2-5e61-99e2-8735d35dbc89",
        "s3_path": "props/bench/6c29193c-.../d8559910-...",
        "file_format": "glb"
      }
    ]
  }
}

The library on disk is filed the same way, by category then asset then seed: materials/<category>/<asset id>/<seed id>/ for a material's maps, elements/<CATEGORY>/<asset id>/<seed id>/model.glb for a facade module. The s3_path above is the server's own key and does not always spell the same thing — it can carry an extra level and lowercase the category — so the linker tries it first and falls back to the layout the downloader actually writes. The Library Folder preference decides where that tree sits; left empty, iCity uses its default location. See Where assets live.

what-a-theme-contains-library-tree.png

File Explorer showing the Library Folder expanded down one materials category — materials/<a category>/<asset id>/<seed id>/ with basecolor.png, normal.png, height.png visible — and the elements/ and props/ folders visible as siblings of materials/.

/docs-shots/universal/
The library on disk: category, then asset id, then seed id.
Note

Because the picks and the files are separate, a theme can name assets this machine does not hold yet. The dress checks that the picks can actually resolve to models on disk before it dresses from them, and when it falls back to another source it says so in the report rather than dressing quietly from the wrong set.

How a theme covers a surface

Nothing in a theme is addressed to one object. Everything is addressed to a category, and the dress joins categories to the city.

Materials go through a slot table in assets.json. A slot is a surface the baked city carries — Asphalt, Sidewalk, Roof, element:Primary_Wall — and each slot names the library category it draws from and how it picks within it.

SlotCategoryHow it picks
AsphaltAsphaltfirst — one material for every road
RoofRoofsseeded on Building_Index — neighbouring roofs differ
element:Primary_WallPrimary_Wallsmatvar — one variant per facade material slot

Elements are addressed by a category name that is a size: <TYPE>_<width>_<height>, where the type is BASE, MID, TOP, CROWN or COLUMN and the numbers are metres — a module 3 m wide and 3.5 m tall is MID_3_3.5. Some categories carry a y where a height would be, for a module whose height is not fixed. The facade system fills a building's cells from the categories the theme covers, so a theme that has no module of a given size leaves those cells to whatever else fits.

Props are addressed by category too, and where a category may go is a separate question. The addon's placement taxonomy carries 27 entries — Road surface, Sidewalk path, Roof edge, Walls, Courtyard, Park path, Block boundary and so on — each scoped to the kind of element it sits on: a road, a building, a lot or yard, a park, a block. A prop system binds one category to one placement, and every asset in that category rides the same binding; there is no per-asset placement setting. Not every entry has a producer yet, so the picker offers only the placements the linker actually built a group for. Placements are covered on Props and placements.

what-a-theme-contains-material-categories.png

Design, Roads mode, the Materials section expanded, showing the three-up category carousel with its ‹ and › steppers and tiles such as Asphalt, Sidewalks and Curbs, each tile showing its currently pinned material.

/docs-shots/blender/
The Materials section shows the categories this mode can dress.
Note

The Materials section only lists categories your library actually holds, three tiles at a time. On a sparse library a mode can read “No material categories for this mode.” — that is the library, not the theme.

What dressed means

Dressing is two operations, and they fail separately on purpose. First the outputs are imported: outputs.usd becomes geometry in the scene and outputs.csv becomes one point cloud per source, with every column kept as a point attribute. Then the linker runs its ladder over what landed.

RungWhat it does
1 · sortRenames everything, files it into the city tree, hides the draft it replaces.
2 · baseBuilds the scattering base: one path object per segment and placement, one surface per element.
3 · scatterTurns those paths and surfaces into points at their spacing and density.
4 · elementsThe facade system.
5 · materialsThe library's surface materials onto roads, sidewalks, roofs and greenery.
6 · propsThe library's props onto every point.

Dressed objects are not left in a bin of their own. Each one carries the collection path the engine gave it and is filed into the city tree beside the draft it dresses — for example iCity2/Blocks/Block_0/Buildings_0, which resolves to the iCity 2 root collection. A draft object is hidden only once a dressed replacement for that same object exists; nothing is deleted, and hiding is reversible.

what-a-theme-contains-outliner-tree.png

Blender's Outliner on a dressed city, expanded to show the iCity 2 root collection with Roads and Blocks beneath it, and inside one building collection both the dressed object and its hidden draft twin (closed-eye icon).

/docs-shots/blender/
Dressed geometry filed into the city tree beside the draft it replaces.

Whether those assets become real data in your .blend or stay as links into a local bank is the linker's decision, not yours. An element family the bank does not yet hold is appended — real meshes and materials in the file — and the file grows accordingly: 457 MB was measured against a 456 MB element cache. Once the bank covers every family the city needs, the next session links them instead and the same file measures about 1 MB, keeping saves and autosaves off half a gigabyte of assets that never change. A fully dressed city has been measured near 1 GB.

what-a-theme-contains-before-after.png

Two viewport captures of the identical camera angle: the grey Draft massing with roads and lot outlines, and the same view after a theme has been applied, with road and sidewalk materials, facades and props. Side by side or as a pair.

/docs-shots/blender/
The same city before and after a dress.
Note

The linker suspends Blender's global undo while it works, and puts it back afterwards. A dress is derived data: you re-dress rather than undo it. What survives that is on What survives a re-dress.

One theme at a time

A project holds one theme. There is no list of themes to switch between inside a project: taking a new one — the default, a generated one, or another project's — overwrites assets.json, outputs.csv, outputs.usd and send/ together, because a half-old, half-new pair would not link.

  • Start with default theme copies the theme bundled inside the addon into the project and dresses from it. No cloud job.
  • Generate theme runs the cloud pipeline: roughly 220–275 credits and about 20 minutes. The composer's own on-screen estimate of ~219 credits runs low.
  • Append from a project takes the four files from another project on this machine. Only projects that already have an outputs.csv are offered.

Within a theme you can still change individual picks — pin a different material to a category, add a prop system, regenerate one asset — and those choices stick for later dresses. See Themes, Materials and Generating a theme.

Editing the draft afterwards does not change the theme; it re-dresses the city with the theme you already have. That is a different, much smaller cloud job, described on Re-dressing after a change, and what you get back is described on After a dress.

Remember

Your city is not your .blend. The theme files and the city state both live in Documents/iCity 2/<project>, and Blender's save does not reach them — see How iCity fits with Blender.

On this page
Three kinds of assetWhere a theme lives on diskThe picks are not the filesHow a theme covers a surfaceWhat dressed meansOne theme at a time
Need help?

The Discord is fastest for anything scene-specific. Email suits licensing, billing and anything needing a file attached.

Contact support →