Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ on:
- "site.json"
- ".cursor-plugin/plugin.json"
- "assets/**"
- "examples/gallery.json"
- "examples/**"
- "docs/gallery/**"
- "scripts/build_gallery.py"
- "scripts/site/**"
Expand Down
313 changes: 313 additions & 0 deletions docs/gallery/depsgraph-export/index.html

Large diffs are not rendered by default.

387 changes: 387 additions & 0 deletions docs/gallery/gn-sdf-remesh/index.html

Large diffs are not rendered by default.

128 changes: 108 additions & 20 deletions docs/gallery/index.html

Large diffs are not rendered by default.

485 changes: 485 additions & 0 deletions docs/gallery/swatch-grid/index.html

Large diffs are not rendered by default.

389 changes: 389 additions & 0 deletions docs/gallery/turntable/index.html

Large diffs are not rendered by default.

14 changes: 9 additions & 5 deletions examples/gallery.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"_comment": "FORWARD-COMPATIBLE SOURCE OF TRUTH for the examples gallery. The local page at docs/gallery/index.html is GENERATED from this file by scripts/build_gallery.py -- do not hand-edit the HTML. When the fleet template (Developer-Tools-Directory: site-template/build_site.py + template.html.j2) gains examples support (see ROADMAP: 'Fleet Pages examples support'), it reads this same file and the local page is retired. That migration is a lift-and-shift, not a rewrite: keep this schema stable. Per-entry schema: {name, dir, teaches, witnessesFix, hero, preview}; hero/preview/dir are repo-root-relative.",
"_comment": "FORWARD-COMPATIBLE SOURCE OF TRUTH for the examples gallery. The local page at docs/gallery/index.html is GENERATED from this file by scripts/build_gallery.py -- do not hand-edit the HTML. When the fleet template (Developer-Tools-Directory: site-template/build_site.py + template.html.j2) gains examples support (see ROADMAP: 'Fleet Pages examples support'), it reads this same file and the local page is retired. That migration is a lift-and-shift, not a rewrite: keep this schema stable. Per-entry schema: {name, dir, teaches, witnessesFix, hero, preview, tags?}; hero/preview/dir are repo-root-relative; tags is an optional additive list driving the gallery filter chips. build_gallery.py also emits a detail page per example at docs/gallery/<name>/.",
"title": "Examples Gallery",
"description": "Runnable, smoke-gated Blender Python examples — each executed headless on Blender 4.5 LTS and 5.1, so every render reflects code that actually runs.",
"repoBaseUrl": "https://github.com/TMHSDigital/Blender-Developer-Tools/tree/main",
Expand All @@ -11,31 +11,35 @@
"teaches": "Procedural Principled materials — metal and dielectric, the emission pattern, and the cross-version set_specular shim.",
"witnessesFix": "EEVEE engine-id mapping: BLENDER_EEVEE on 5.x, BLENDER_EEVEE_NEXT on 4.2–4.5.",
"hero": "docs/gallery/assets/swatch-grid-hero.webp",
"preview": "examples/swatch-grid/preview.webp"
"preview": "examples/swatch-grid/preview.webp",
"tags": ["materials", "rendering"]
},
{
"name": "turntable",
"dir": "examples/turntable",
"teaches": "A slotted-actions Z-rotation turntable keyed through the cross-version channelbag path (get_channelbag_for_slot).",
"witnessesFix": "Slotted-actions boundary: ensure-helper channelbag on 5.x, strip.channelbag on 4.4/4.5.",
"hero": "docs/gallery/assets/turntable-hero.webp",
"preview": "examples/turntable/preview.webp"
"preview": "examples/turntable/preview.webp",
"tags": ["animation"]
},
{
"name": "gn-sdf-remesh",
"dir": "examples/gn-sdf-remesh",
"teaches": "A Geometry Nodes SDF remesh (MeshToSDFGrid → GridToMesh at the SDF zero-level), with a Set Material node carrying the material through the remesh.",
"witnessesFix": "An SDF grid is meshed with Grid to Mesh, not Volume to Mesh; GN geometry needs Set Material or it renders untextured.",
"hero": "docs/gallery/assets/gn-sdf-remesh-hero.webp",
"preview": "examples/gn-sdf-remesh/preview.webp"
"preview": "examples/gn-sdf-remesh/preview.webp",
"tags": ["geometry-nodes", "materials"]
},
{
"name": "depsgraph-export",
"dir": "examples/depsgraph-export",
"teaches": "The depsgraph lifetime contract — evaluated_get().to_mesh() paired with to_mesh_clear() — measured against an OBJ export of the same object.",
"witnessesFix": "Exports ship evaluated geometry: the exported vertex count equals the subsurf-applied count and is strictly greater than the base mesh.",
"hero": "docs/gallery/assets/depsgraph-export-hero.webp",
"preview": "examples/depsgraph-export/preview.webp"
"preview": "examples/depsgraph-export/preview.webp",
"tags": ["depsgraph", "export"]
}
]
}
522 changes: 456 additions & 66 deletions scripts/build_gallery.py

Large diffs are not rendered by default.

Loading