meshgeniedocs

Style profiles

Lock a look once so every asset matches — the MeshGenie moat.

A style profile is a frozen set of pipeline levers: palette, lighting, surface treatment, poly budget, texture size. Assets generated against the same profile look like one game, not five asset packs.

Why lock

Without a lock, each generation drifts — different backgrounds, facet density, color temperature. Your game becomes a Frankenstein of packs.

With a lock (and the profile’s sha256 in every receipt), you can regenerate later and stay consistent.

Built-in profiles

Profiles live in styles/*.json in the repo. Examples:

NameIntent
lowpoly-heroicStylised low-poly fantasy; measured palette lock
baselineControl arm / default levers
neon-arcadeHigher chroma (author carefully — not all profiles lock equally)
bare-figureUnclothed base-body work

List live profiles from the agent:

list_style_profiles

How locking works in a project

init_project writes .meshgenie/project.json:

{
  "version": 1,
  "style_profile": {
    "name": "lowpoly-heroic",
    "sha256": "…",
    "locked_at": "2026-07-30T12:00:00Z"
  },
  "engine": "unity",
  "paths": {
    "characters": "Assets/Characters",
    "props": "Assets/Props",
    "receipts": "Assets/MeshGenie/Receipts"
  }
}

After the first lock, do not re-prompt for style unless the user explicitly wants a new project look.

Freezing at concept time

  1. Concept run records the profile + sha on the job and in manifest.json
  2. Build inherits that profile — it cannot be overridden
  3. Receipt exports the same sha next to the GLB

On this page