|
18 | 18 | </p> |
19 | 19 |
|
20 | 20 | <p align="center"> |
21 | | - <strong>13 skills</strong> • <strong>6 rules</strong> • <strong>2 templates</strong> • <strong>17 snippets</strong> • <strong>50 examples</strong> |
| 21 | + <strong>13 skills</strong> • <strong>6 rules</strong> • <strong>2 templates</strong> • <strong>17 snippets</strong> • <strong>53 examples</strong> |
22 | 22 | </p> |
23 | 23 |
|
24 | 24 | <p align="center"> |
@@ -627,7 +627,7 @@ portable path is `radius`. |
627 | 627 | </details> |
628 | 628 |
|
629 | 629 | <details> |
630 | | -<summary><strong>Game asset pipeline</strong> — 9 examples</summary> |
| 630 | +<summary><strong>Game asset pipeline</strong> — 20 examples</summary> |
631 | 631 |
|
632 | 632 | <table> |
633 | 633 | <tr> |
@@ -954,6 +954,51 @@ while **`BYTE_COLOR` is sRGB-encoded 8-bit** — 0.735 reads back |
954 | 954 | Companion to [`color-attribute-wheel`](examples/color-attribute-wheel/) and |
955 | 955 | [`attribute-domain-shear`](examples/attribute-domain-shear/). |
956 | 956 |
|
| 957 | +</td> |
| 958 | +</tr> |
| 959 | +<tr> |
| 960 | +<td width="46%" valign="middle"> |
| 961 | +check-only, no gallery still — a hexagon on a cube is not thumbnail-legible |
| 962 | +</td> |
| 963 | +<td valign="middle"> |
| 964 | + |
| 965 | +### [ngon-triangulate](examples/ngon-triangulate/) |
| 966 | + |
| 967 | +Synthesizes one 6-loop hexagon by dissolving a cube edge. Pre-asserts the |
| 968 | +n-gon exists (1 face / 6 loops / 5 faces), then `calc_tangents` aborts until |
| 969 | +`bmesh.ops.triangulate` yields 4 tris + 4 quads / 28 loops. glTF tri count |
| 970 | +is 12 either way. Inverse of [`mesh-hygiene-audit`](examples/mesh-hygiene-audit/). |
| 971 | + |
| 972 | +</td> |
| 973 | +</tr> |
| 974 | +<tr> |
| 975 | +<td width="46%" valign="middle"> |
| 976 | +check-only, no gallery still — unapplied scale looks like modeled non-uniform size |
| 977 | +</td> |
| 978 | +<td valign="middle"> |
| 979 | + |
| 980 | +### [unapplied-scale-gltf](examples/unapplied-scale-gltf/) |
| 981 | + |
| 982 | +Unit cube with object scale `(2, 1, 0.5)`. Pre-asserts unapplied non-uniform |
| 983 | +scale and local ±1 verts, then glTF `export_apply=True` still writes Y-up |
| 984 | +node.scale `(2, 0.5, 1)` with local POSITION. `export_apply` is modifiers |
| 985 | +only. Inverse of [`gltf-export-roundtrip`](examples/gltf-export-roundtrip/). |
| 986 | + |
| 987 | +</td> |
| 988 | +</tr> |
| 989 | +<tr> |
| 990 | +<td width="46%" valign="middle"> |
| 991 | +check-only, no gallery still — coincident cubes look like one cube |
| 992 | +</td> |
| 993 | +<td valign="middle"> |
| 994 | + |
| 995 | +### [coincident-vert-weld](examples/coincident-vert-weld/) |
| 996 | + |
| 997 | +Two cubes in one mesh: 16 verts / 8 unique / still manifold. Pre-asserts |
| 998 | +the duplicates, then glTF ships 24 tris / 48 positions / 8 unique. |
| 999 | +`remove_doubles` collapses to one cube. Inverse of |
| 1000 | +[`degenerate-bevel-weld`](examples/degenerate-bevel-weld/). |
| 1001 | + |
957 | 1002 | </td> |
958 | 1003 | </tr> |
959 | 1004 | </table> |
|
0 commit comments