Scene Manager: LOD switching; Shot Viewer renamed Shot Manager

LODs are child collections of the asset collection (COL_{asset}_LOD{n}).
Overrides hide the other LOD collections (viewport and render), keeping
the rig, pose and animation; collection instances instance the LOD
collection. Each instance has its own LOD, set per instance or for the
selection in the Loaded panel, kept through save, reload and updates.
Loading shows SCENE_MANAGER_DEFAULT_LOD (0).

The Shot Viewer panel is now "Shot Manager" and starts closed. Code
names and SHOT_VIEWER_* config keys are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
NDemaerschalkandClaude Opus 5.5 committed 2026-10-27 16:42:24 +01:00
1 parent 9fe38ce58a
commit bac7a6f5da
10 files changed
+258 -45

No files matched your search

+11 -4
View File
@@ -1,7 +1,7 @@
# Melvile Tools: notes for Claude
Blender add-on (Blender 5.2) for the Melvile pipeline at Walking The Dog: Sanity Check,
Rename, Shot Viewer and Scene Manager panels in the 3D View sidebar (WTD tab). `README.md`
Rename, Shot Manager and Scene Manager panels in the 3D View sidebar (WTD tab). `README.md`
is the user guide: keep it up to date with every user-visible change.
## Layout and conventions
@@ -42,7 +42,7 @@ that contains this repo on `sys.path` and importing the repo folder name (see
1. `blender -b --factory-startup --python dev/make_test_assets.py -- <workdir>`
2. `python dev/fake_libreflow.py <workdir>` (keep running; restart for a clean state)
3. `blender -b --factory-startup --python-exit-code 1 --python dev/test_scene_manager.py -- <workdir>`
(45 checks, "All checks passed"). `/_test/publish` and `/_test/download` simulate a new
(58 checks, "All checks passed"). `/_test/publish` and `/_test/download` simulate a new
publish and a requested revision reaching this site.
The fake server follows the real `wtdcmds` replies; check them against the real
Libreflow when one is available.
@@ -54,12 +54,12 @@ that contains this repo on `sys.path` and importing the repo folder name (see
(`src/libreflow/extensions/wtdcmds/wtd_cmds.py`, `BLENDER_ADDON_BRIEF.md`).
Server address/token: `~/.kabaret/ipc/server.json` (config `LIBREFLOW_SERVER_FILE`).
- Add Camera Rigs extension: `bpy.ops.object.build_camera_rig(mode=...)` builds the
Shot Viewer cameras. It finds its rigs by the `rig_id` custom property, not by name.
Shot Manager cameras. It finds its rigs by the `rig_id` custom property, not by name.
- `tools_ops.py` "Get Oid" uses the separate kabaret Blender client (`bpy.ops.kabaret.cmds_call`).
## Design notes (found by testing)
- Shot Viewer: shots are timeline markers bound to cameras, in one scene. Setting
- Shot Manager: shots are timeline markers bound to cameras, in one scene. Setting
`scene.frame_current` does not switch the camera (only `frame_set` does): set
`scene.camera` explicitly.
- Scene Manager: tags live on `bpy.types.Library` only. Library overrides lose custom
@@ -72,6 +72,13 @@ that contains this repo on `sys.path` and importing the repo folder name (see
- Removing a library leaves the libraries it linked indirectly (e.g. Blender's
`geometry_nodes_essentials.blend`): `remove_unused_libraries()` drops the ones whose data
is no longer used, never a managed library.
- LODs are child collections of the asset collection (`COL_{asset}_LOD{n}`). Overrides
switch by `hide_viewport`/`hide_render` on the LOD override collections: Blender stores
them as override properties (kept through save, reload and resync) and hidden LODs are
not evaluated. Collection instances instance the LOD collection itself. A second override's
collections are renamed (`.001`): match LODs on `override_library.reference.name`.
- "Shot Manager" is the user-facing name of what the code calls `shot_viewer`
(module, operators, `SHOT_VIEWER_*` config keys kept for existing override files).
- Background requests (`scene_manager.ipc.run`) hand results back through a timer;
in callbacks, find scenes by name (`bpy.context.scene` is not reliable in timers).