|
17 | 17 | </p> |
18 | 18 |
|
19 | 19 | <p align="center"> |
20 | | - <strong>12 skills</strong> • <strong>6 rules</strong> • <strong>2 templates</strong> • <strong>17 snippets</strong> • <strong>15 examples</strong> |
| 20 | + <strong>12 skills</strong> • <strong>6 rules</strong> • <strong>2 templates</strong> • <strong>17 snippets</strong> • <strong>16 examples</strong> |
21 | 21 | </p> |
22 | 22 |
|
23 | 23 | --- |
24 | 24 |
|
25 | 25 | ## Overview |
26 | 26 |
|
27 | | -This repository ships **12 skills, 6 rules, 2 templates, 17 snippets, and 15 runnable examples** for Blender Python development targeting Blender 5.1 (current stable) with Blender 4.5 LTS fallback support. |
| 27 | +This repository ships **12 skills, 6 rules, 2 templates, 17 snippets, and 16 runnable examples** for Blender Python development targeting Blender 5.1 (current stable) with Blender 4.5 LTS fallback support. |
28 | 28 |
|
29 | 29 | The content is consumed by AI coding agents (Cursor, Claude Code, any MCP-capable client) when working on Blender add-ons, geometry nodes scripts, batch pipelines, or animation tooling. There is no build step. Edit the markdown and Python files directly. |
30 | 30 |
|
@@ -264,6 +264,22 @@ HSV across face corners with `foreach_get`/`foreach_set`. Asserts the attribute |
264 | 264 | is sized to loop count (not vertex count), is `active_color`, and that the |
265 | 265 | shader `Attribute` node is actually linked to Base Color. |
266 | 266 |
|
| 267 | +</td> |
| 268 | +</tr> |
| 269 | +<tr> |
| 270 | +<td width="46%" valign="middle"> |
| 271 | +<a href="examples/parent-inverse-orrery/"><img src="examples/parent-inverse-orrery/preview.webp" alt="Parent inverse orrery: a brass tabletop orrery with a glowing sun, three planets on pivot arms inside brass orbit rings, and a silver moon, on a dark studio floor" /></a> |
| 272 | +</td> |
| 273 | +<td valign="middle"> |
| 274 | + |
| 275 | +### [parent-inverse-orrery](examples/parent-inverse-orrery/) |
| 276 | + |
| 277 | +A brass orrery parented entirely through the data API — the keep-world idiom |
| 278 | +`child.parent = pivot; child.matrix_parent_inverse = pivot.matrix_world.inverted()` |
| 279 | +carries arms, planets, and a two-level moon through spinning pivots. Asserts bare |
| 280 | +`.parent =` really teleports, `matrix_world` is stale until `view_layer.update()`, |
| 281 | +and every orbit lands on its closed form. |
| 282 | + |
267 | 283 | </td> |
268 | 284 | </tr> |
269 | 285 | </table> |
|
0 commit comments