docs: learning erfasst - mark_sharp+mark_seam sharp edges + MediaAsset UPSERT
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -395,6 +395,18 @@ Für den `/plan`-Agent: alle relevanten System-Daten sind OHNE docker-Befehle zu
|
||||
- **Kein `docker exec backend python3 -c`** für Code-Exploration — dauert lang und braucht laufende Container
|
||||
- **MEMORY.md** enthält Container-Capabilities: OCP nur in `render-worker`, nicht in `worker` oder `backend`
|
||||
|
||||
### 2026-03-11 | Render-Pipeline | Production GLB: edit-mode mark_sharp+mark_seam für korrekte GLB Sharp Edges
|
||||
In Blender 5.0: `shade_smooth_by_angle()` allein reicht nicht für scharfe Kanten im GLB-Export.
|
||||
**Lösung:** Edit-mode-Operators verwenden: `edges_select_sharp(sharpness=angle)` → `mark_sharp()` → `mark_seam()`.
|
||||
Der glTF-Exporter erstellt an den als sharp markierten Edges Vertex-Splits (duplizierte Vertices mit verschiedenen Normalen).
|
||||
**Verifizierung:** 543 sharp+seam Edges markiert → production GLB hat 812 extra Vertices + 6027 Positionen mit mehreren Normalen = scharfe Kanten korrekt enkodiert.
|
||||
**Wichtig:** `calc_normals_split()` wurde in Blender 5.0 entfernt (→ AttributeError). Nicht mehr nötig: `export_apply=True` triggert Vertex-Splitting automatisch.
|
||||
|
||||
### 2026-03-11 | Render-Pipeline | MediaAsset DELETE+INSERT erzeugt neue UUID → 404 auf gecachte URLs
|
||||
`generate_gltf_production_task` und `generate_gltf_geometry_task` löschten alten MediaAsset-Record und erstellten neuen mit neuer UUID.
|
||||
Gecachte Download-URLs (z.B. im Frontend-State) zeigten auf die alte, gelöschte UUID → 404.
|
||||
**Lösung:** UPSERT: existierenden Record aktualisieren (`existing.storage_key = _key`) statt DELETE+INSERT. UUID bleibt stabil.
|
||||
|
||||
### 2026-03-11 | Render-Pipeline | Production GLB: OCC custom_normal überschreibt Blender-Normalen
|
||||
`export_step_to_gltf.py` (RWGltf_CafWriter) embedded per-corner normals from OCC tessellation as a `custom_normal` attribute (CORNER, INT16_2D) in the geometry GLB. Blender's glTF importer preserves this as a custom attribute. The glTF exporter then re-exports these pre-baked normals **unchanged**, ignoring `shade_smooth_by_angle` processing and explicit `edge.smooth=False` sharp marks — sharp edges are invisible in the production GLB.
|
||||
**Lösung:** In `export_gltf.py` und `blender_render.py`: nach GLB-Import das `custom_normal`-Attribut von allen Mesh-Objekten entfernen, BEVOR `shade_smooth_by_angle()` aufgerufen wird. Dann berechnet Blender die Normalen neu aus den sharp-edge-Marks.
|
||||
|
||||
Reference in New Issue
Block a user