PROJECT 03 / Procedural / Tools / Explored

F1 Track Generator

A procedural Blender tool that turns track data into configurable, modular F1 circuit scenes.

Python Blender API Procedural Generation Procedural Materials

Problem

Turning structured track data into a complete, populated circuit scene by hand is days of repetitive modelling. The interesting question isn’t the track — it’s how to make a system that rebuilds the entire environment whenever the inputs change.

Approach

Treat the circuit as a data-driven generation problem: external track data drives geometry, modular asset collections populate the environment, and every stage stays configurable through the add-on UI.

Architecture

  • Data layer — reads external track sources and exposes configurable sectors, offsets, and track types
  • Geometry generator — builds drivable track geometry from the data, with configurable width, elevation, and curbs
  • Modular asset system — track pieces and filler objects live in swappable Blender collections; replacing the collection replaces the output without touching generation logic
  • Scene population — automated distribution of poles, flags, and props along the generated circuit
  • Materials — procedural shader setups so surfaces adapt without hand-painted textures

Engineering Decisions

  • Assets separated from logic: generation code never hard-references specific meshes — collections are the contract.
  • Data-driven over baked: changing an input re-runs the pipeline; nothing is manually patched after generation.
  • Parameterized everything: sectors, offsets, pole/flag distribution are user-facing options, not constants in code.

Result

A complete F1 circuit — geometry, props, materials — generated from data in minutes, with every part replaceable through Blender’s asset system.

What I Learned

  • Modular design is mostly about defining what not to couple.
  • Good tool UX is parameter design: the right defaults matter more than more options.