# lewdineer/kimodo_blender_bridge architecture

> Architecture diagram of the GitHub repository lewdineer/kimodo_blender_bridge, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lewdineer/kimodo_blender_bridge
- Repository: https://github.com/lewdineer/kimodo_blender_bridge

## Overview

Kimodo Blender Bridge is a Blender addon for generating AI human motion and applying it in a scene. The main workflow is: configure and start the Kimodo bridge, submit a single prompt or timeline segments, generate motion in a persistent external process, then import the result into Blender. Users can also supply spatial motion constraints and retarget generated motion onto their own rigs, bake it, and reuse bone-mapping presets. The README documents these product flows; some links between addon modules are not visible in the sampled excerpts, so those are omitted or marked unverified.

Main entry points: [`bridge_server.py`](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/bridge_server.py) (Bridge server), [`retarget.py`](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/retarget.py) (Bone retargeting), [`panels.py`](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/panels.py) (Addon panels), [`operators.py`](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/operators.py) (Addon operators)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Blender UI"]
  node_panels["Addon panels<br/>[panels.py]"]
  node_properties["Scene settings<br/>[properties.py]"]
  node_operators["Addon operators<br/>[operators.py]"]
  node_ui_list["Mapping and history lists<br/>[ui_list.py]"]
end

subgraph group_generation["Generation Bridge"]
  node_installer["Kimodo installer<br/>[setup_operator.py]"]
  node_client["Subprocess client"]
  node_server["Bridge server<br/>[bridge_server.py]"]
end

subgraph group_motion["Motion Inputs"]
  node_segments["Timeline segments<br/>[operators.py]"]
  node_constraints["Spatial constraints<br/>[constraints.py]"]
  node_bvh["Generated motion file"]
end

subgraph group_rigging["Retargeting"]
  node_retarget["Bone retargeting<br/>[retarget.py]"]
  node_presets["Mapping presets<br/>[retarget.py]"]
end

node_user(("Blender user"))
node_kimodo{{"Kimodo model"}}
node_scene["Blender scene armature"]

node_user -->|"uses"| node_panels
node_panels -->|"invokes"| node_operators
node_panels -->|"configures"| node_properties
node_operators -->|"reads settings"| node_properties
node_user -->|"starts install"| node_installer
node_user -->|"starts bridge"| node_client
node_client -->|"sends JSON"| node_server
node_server -->|"requests generation"| node_kimodo
node_user -->|"edits segments"| node_segments
node_segments -->|"submits prompts"| node_server
node_user -->|"sets waypoints"| node_constraints
node_constraints -.->|"supplies constraints"| node_server
node_server -->|"writes motion"| node_bvh
node_operators -->|"imports motion"| node_bvh
node_bvh -->|"creates armature"| node_scene
node_user -->|"maps rig"| node_retarget
node_retarget -->|"adds constraints"| node_scene
node_user -->|"saves mappings"| node_presets
node_presets -->|"restores mappings"| node_retarget
node_retarget -->|"bakes keyframes"| node_scene
node_ui_list -->|"displays mappings"| node_retarget

click node_panels "https://github.com/lewdineer/kimodo_blender_bridge/blob/main/panels.py"
click node_properties "https://github.com/lewdineer/kimodo_blender_bridge/blob/main/properties.py"
click node_operators "https://github.com/lewdineer/kimodo_blender_bridge/blob/main/operators.py"
click node_ui_list "https://github.com/lewdineer/kimodo_blender_bridge/blob/main/ui_list.py"
click node_installer "https://github.com/lewdineer/kimodo_blender_bridge/blob/main/setup_operator.py"
click node_client "https://github.com/lewdineer/kimodo_blender_bridge/blob/main/subprocess_client.py"
click node_server "https://github.com/lewdineer/kimodo_blender_bridge/blob/main/bridge_server.py"
click node_segments "https://github.com/lewdineer/kimodo_blender_bridge/blob/main/operators.py"
click node_constraints "https://github.com/lewdineer/kimodo_blender_bridge/blob/main/constraints.py"
click node_retarget "https://github.com/lewdineer/kimodo_blender_bridge/blob/main/retarget.py"
click node_presets "https://github.com/lewdineer/kimodo_blender_bridge/blob/main/retarget.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_panels,node_properties,node_operators,node_ui_list,node_user toneBlue
class node_installer,node_client,node_server toneAmber
class node_segments,node_constraints,node_bvh toneMint
class node_retarget,node_presets toneRose
class node_kimodo,node_scene toneIndigo
```

## Components

### Blender UI

- [Addon panels](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/panels.py): `panels.py`
- [Scene settings](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/properties.py): `properties.py`
- [Addon operators](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/operators.py): `operators.py`
- [Mapping and history lists](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/ui_list.py): `ui_list.py`

### Generation Bridge

- [Kimodo installer](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/setup_operator.py): `setup_operator.py`
- [Subprocess client](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/subprocess_client.py): `subprocess_client.py`
- [Bridge server](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/bridge_server.py): `bridge_server.py`

### Motion Inputs

- [Timeline segments](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/operators.py): `operators.py`
- [Spatial constraints](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/constraints.py): `constraints.py`
- **Generated motion file**

### Retargeting

- [Bone retargeting](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/retarget.py): `retarget.py`
- [Mapping presets](https://github.com/lewdineer/kimodo_blender_bridge/blob/main/retarget.py): `retarget.py`

### Other components

- **Blender user**
- **Kimodo model**
- **Blender scene armature**

## Connections

- Blender user → Addon panels: uses (evidence: `README.md`)
- Addon panels → Addon operators: invokes (evidence: `README.md`)
- Addon panels → Scene settings: configures (evidence: `README.md`)
- Addon operators → Scene settings: reads settings (evidence: `operators.py`)
- Blender user → Kimodo installer: starts install (evidence: `README.md`)
- Blender user → Subprocess client: starts bridge (evidence: `README.md`)
- Subprocess client → Bridge server: sends JSON (evidence: `README.md`)
- Bridge server → Kimodo model: requests generation (evidence: `bridge_server.py`)
- Blender user → Timeline segments: edits segments (evidence: `README.md`)
- Timeline segments → Bridge server: submits prompts (evidence: `README.md`)
- Blender user → Spatial constraints: sets waypoints (evidence: `README.md`)
- Spatial constraints → Bridge server: supplies constraints
- Bridge server → Generated motion file: writes motion (evidence: `bridge_server.py`)
- Addon operators → Generated motion file: imports motion (evidence: `README.md`)
- Generated motion file → Blender scene armature: creates armature (evidence: `README.md`)
- Blender user → Bone retargeting: maps rig (evidence: `README.md`)
- Bone retargeting → Blender scene armature: adds constraints (evidence: `README.md`)
- Blender user → Mapping presets: saves mappings (evidence: `README.md`)
- Mapping presets → Bone retargeting: restores mappings (evidence: `README.md`)
- Bone retargeting → Blender scene armature: bakes keyframes (evidence: `README.md`)
- Mapping and history lists → Bone retargeting: displays mappings (evidence: `ui_list.py`)
