save another day
This commit is contained in:
147
Prewrite/Kontext Periorbitale Formvariation.md
Normal file
147
Prewrite/Kontext Periorbitale Formvariation.md
Normal file
@@ -0,0 +1,147 @@
|
||||
# Kontext: Periorbitale Formvariation
|
||||
|
||||
Zusammenfassung aller relevanten Infos zur Planung und zum Schreiben der Abschnitte 4.2 (Methodik) und 5.4 (Implementierung) zur periorbitalen Formvariation.
|
||||
|
||||
---
|
||||
|
||||
## Was bereits geschrieben ist (Stand: 2026-04-03)
|
||||
|
||||
### Methodik 4.2 (fertig geschrieben)
|
||||
Datei: `04_Methodik/2_KonzeptFormvariation.tex`
|
||||
|
||||
Deckt ab:
|
||||
- Motivation: Bestehende Pipelines nutzen feste Modelle oder PCA (semantisch opak)
|
||||
- Wisetchats TFM als konzeptuelle Referenz
|
||||
- Warum Shape-Keys (vs. diskrete Modellsammlungen, PCA, Skelett-Rigs, prozedural)
|
||||
- Zentrale Eigenschaft: lineare Superposition, einzeln parametrierbar
|
||||
- Kurze Erwahnung von Konsequenzen (Wimpern/Brauen, Augenlid, Korrekturmechanismen)
|
||||
- Verweis auf `\fref{sec:impl_periorbital}` fur Details
|
||||
- Formulierung: "nicht populationsstatistisch validiert, sondern anatomisch motiviert, visuell plausibel"
|
||||
|
||||
### Implementierung 5.6 Parametrisierung (fertig geschrieben)
|
||||
Datei: `05_Implementierung/6_Parametrisierung.tex`
|
||||
|
||||
Deckt ab:
|
||||
- Ubersichtstabelle aller randomisierten Parameter (Shape-Keys als einziger neuer Eintrag)
|
||||
- JSON-Config-Schema mit allen 9 Shape-Keys und ihren Bereichen (als Listing)
|
||||
- Erklarung ECF_weight negativer Bereich (-0.3): Basismodell hat bereits leichte Falte
|
||||
- Config-Parsing und Validierung
|
||||
- Sampling: uniform pro Bild, unabhangige Ziehungen
|
||||
- Verweis auf Korrektur-Shape-Keys in 5.4
|
||||
- Seed/Reproduzierbarkeit
|
||||
- Laufzeit: vernachlassigbar (t_shape_keys)
|
||||
|
||||
### Implementierung 5.3 Augenlidmodell (fertig geschrieben)
|
||||
Datei: `05_Implementierung/3_Augenlidmodell.tex`
|
||||
|
||||
Deckt ab:
|
||||
- Probleme des alten Modells (separate Geometrie, Rotation statt Shape-Key)
|
||||
- Neues Augenlid als Teil des Gesichts-Meshes mit Shape-Keys
|
||||
- Catmull-Clark-Subdivision, Crease an Lidkante
|
||||
- Clipping-Problem und Shrinkwrap-Modifier als Losung
|
||||
- Bilder sind vorhanden
|
||||
|
||||
---
|
||||
|
||||
## Was in 5.4 rein muss (noch zu schreiben)
|
||||
|
||||
Datei: `05_Implementierung/4_PeriorbitaleFormvariation.tex`
|
||||
|
||||
5.4 behandelt ausschliesslich die **3D-Modellierungsseite**: Was stellen die Shape-Keys anatomisch dar, wie wurden sie im Mesh modelliert, und wie funktionieren die Korrektur-Driver. Keine Uberschneidung mit Config/Randomisierung (das steht in 5.6) oder konzeptuelle Begrundung (das steht in 4.2).
|
||||
|
||||
### Geplante Struktur
|
||||
|
||||
#### 5.4.1 Modellierte Formmerkmale
|
||||
- Tabelle aller 9 Shape-Keys mit anatomischer Bedeutung und Abbildung (min vs. max)
|
||||
- Kategorisierung:
|
||||
- **Positionale Merkmale**: ENC_x, ENC_y, EXC_x, EXC_y (verschieben die Kanthi)
|
||||
- **Winkelmerkmale**: ENC_angle (Lidspaltenneigung am medialen Kanthus)
|
||||
- **Formmerkmale**: ECF_weight (Epikantusfalte), SPC_weight (Oberlidfalte/Suprapalpebral Crease), STF_weight (Supratarsalfalte), LPF_depth (Unterlidfurche)
|
||||
- Bezug zu Wisetchats 17 Features: welche umgesetzt, welche nicht und warum
|
||||
- PLATZHALTER: Grunde fur das Weglassen der restlichen 8 Features mussen noch recherchiert werden
|
||||
- Bekannt: mindestens ein Unteraugen-Parameter kollidiert mit dem Shrinkwrap-Modifier (2mm Mindestabstand)
|
||||
|
||||
#### 5.4.2 Modellierung und Grenzen
|
||||
- Heuristische Modellierung in Blender anhand visueller Plausibilitat
|
||||
- Mesh-Topologie: Balanceakt zwischen Detail fur Furchen/Falten und Regularitat fur saubere Subdivision
|
||||
- Herausforderung oberes Augenlid: Tarsus-Falten (ECF, STF) auf dunner Haut vs. umliegende Fettgewebe-Strukturen (SPS, STC, SPC, PNS, PTF)
|
||||
- Technische Einschrankung Shrinkwrap: Kollision mit Unteraugen-Parametern (PLATZHALTER fur Details)
|
||||
|
||||
#### 5.4.3 Korrektur-Shape-Keys mit Drivern
|
||||
- Problem: Unabhangiges Sampling (beschrieben in 5.6) kann bei bestimmten Kombinationen Artefakte erzeugen
|
||||
- Losung: Korrektive Shape-Keys im Blender-Modell, gesteuert uber Blender-interne Driver
|
||||
- Mechanismus: Driver berechnet Gewicht = Produkt der auslosenden Shape-Keys
|
||||
- Korrektur greift nur, wenn beide stark
|
||||
- Pipeline-Code muss nichts uber Korrekturen wissen, da Blender die Driver automatisch auswertet
|
||||
- Konkretes Beispiel: Augenlid-Schliessung x ENC_y -> Korrektur am Endokanthion bei geschlossenem Auge mit stark verschobenem Endokanthion
|
||||
- Weitere Korrektur-Paare (PLATZHALTER)
|
||||
|
||||
#### 5.4.4 Randomisierung zur Laufzeit
|
||||
- ENTFALLT: Wird komplett in 5.6 behandelt. Nur kurzer Verweis auf 5.6 notig.
|
||||
|
||||
---
|
||||
|
||||
## Die 9 implementierten Shape-Keys (aus config.json)
|
||||
|
||||
| Shape-Key | Bereich | Anatomische Bedeutung |
|
||||
|-----------|---------|----------------------|
|
||||
| ECF_weight | [-0.3, 1.0] | Epikantusfalte (mediale Kanthusbedeckung). Negativ, da Basismodell bereits leichte Falte hat. |
|
||||
| ENC_angle | [0.0, 1.0] | Kanthalwinkel am Endokanthion (Neigung der Lidspalte am medialen Kanthus) |
|
||||
| ENC_x | [0.0, 1.0] | Horizontalposition des Endokanthion (medial-lateral) |
|
||||
| ENC_y | [0.0, 1.0] | Vertikalposition des Endokanthion (superior-inferior) |
|
||||
| EXC_x | [0.0, 1.0] | Horizontalposition des Exokanthion (medial-lateral) |
|
||||
| EXC_y | [0.0, 1.0] | Vertikalposition des Exokanthion (superior-inferior) |
|
||||
| SPC_weight | [0.0, 1.0] | Tiefe der Oberlidfalte (Suprapalpebral Crease / Double Eyelid vs. Monolid) |
|
||||
| LPF_depth | [0.0, 1.0] | Tiefe der Unterlidfurche (Lower Palpebral Fossa) |
|
||||
| STF_weight | [0.0, 1.0] | Supratarsalfalte (Auspraegung der Lidfalte oberhalb des Tarsus) |
|
||||
|
||||
## Wisetchats 17 Augenattribute (davon 9 umgesetzt)
|
||||
|
||||
Wisetchat definiert 17 Eye Attributes: 10 unsigned (0-1) und 7 signed (-1 bis 1).
|
||||
Davon wurden 9 fur HEyes implementiert. Die restlichen 8 wurden nicht umgesetzt.
|
||||
|
||||
**Nicht umgesetzt (PLATZHALTER - Grunde mussen noch recherchiert werden):**
|
||||
- Vermutlich: Features ausserhalb des sichtbaren Bereichs in NIR-Eye-Tracking-Bildern
|
||||
- Vermutlich: Features, die mit der vorhandenen Mesh-Topologie nicht umsetzbar waren
|
||||
- Bekannt: Mindestens ein Unteraugen-Parameter kollidiert mit Shrinkwrap-Modifier
|
||||
|
||||
## Quasi-Orthogonalitat (aus Wisetchat)
|
||||
|
||||
Wisetchat definiert quasi-orthogonale Merkmale:
|
||||
- **Orthogonal**: Features modifizieren verschiedene Vertex-Regionen, oder gleiche Region aber orthogonale Achsen (z.B. Breite vs. Hohe)
|
||||
- **Nicht orthogonal**: Features uberlappen und modifizieren gleiche Vertices in ahnlicher Weise
|
||||
- In extremen Kombinationen konnen Ergebnisse unplausibel sein, aber die meisten Kombinationen sind plausibel
|
||||
- Fur problematische Kombinationen: Korrektur-Shape-Keys
|
||||
|
||||
## Korrektur-Shape-Keys (aus Gesprach mit User)
|
||||
|
||||
- Existieren als Blender-interne Mechanismen (nicht im Python-Code)
|
||||
- Gesteuert uber Blender-Driver: Gewicht = Produkt der auslosenden Shape-Keys
|
||||
- Beispiel: Korrektur-Shape-Key fur Augenlid x ENC_y
|
||||
- Driver multipliziert Gewichte beider Shape-Keys
|
||||
- Korrektur wird nur vollstandig angewendet, wenn Augenlid zu IST UND ENC_y maximal verschoben
|
||||
- Vorteil: Pipeline-Code (gaze_controller.py) setzt nur die Shape-Key-Werte, Blender wertet Driver automatisch aus
|
||||
|
||||
## Technische Details aus dem Code
|
||||
|
||||
- Zielobjekt: "Skin" (das Periorbital-Geometrie-Mesh in Blender)
|
||||
- Anwendung: `gaze_controller.py`, Methode `random_skin_model_modification()`
|
||||
- Holt Skin-Objekt und dessen shape_keys
|
||||
- Iteriert uber alle konfigurierten Shape-Keys
|
||||
- Zieht uniform aus [min, max]
|
||||
- Setzt Wert direkt auf den Blender Shape-Key
|
||||
- Aufruf in Pipeline: nach `random_eyeball_rotation()`, vor Compositing
|
||||
- Timing: `RenderTimes.set_shape_keys` (< 0.2ms, vernachlassigbar)
|
||||
|
||||
## Offene Punkte / Platzhalter
|
||||
|
||||
1. **Welche der 17 Wisetchat-Features wurden bewusst weggelassen und warum?** User erinnert sich nicht genau. Bekannt: Shrinkwrap-Kollision bei mind. einem Unteraugen-Parameter. Wird ggf. nochmal uberarbeitet.
|
||||
2. **Weitere Korrektur-Shape-Key-Paare**: Nur das Beispiel Augenlid x ENC_y ist bekannt. Weitere mussen in Blender recherchiert werden.
|
||||
3. **Min/Max-Bilder der Shape-Keys**: User wird diese noch rendern. Pro Shape-Key: Minimum-Auspraegung vs. Maximum-Auspraegung.
|
||||
|
||||
## Modellierungsherausforderungen (aus Augenfeatures.md)
|
||||
|
||||
- Oberes Augenlid besonders schwierig: dunne Falten des Tarsus (ECF, STF) auf dunner Haut, wahrend umliegende Furchen und Konvexitaten (SPS, STC, SPC, PNS, PTF) Eigenschaften des Fettgewebes darstellen
|
||||
- Mesh-Topologie: Je simpler das Basis-Mesh, desto glatter die Subdivision-Oberflache. Aber genug Detail noetig fur Furchen und Falten.
|
||||
- Basismodell stellt keinen Ethnotypen dar und entspricht keinem Durchschnitt
|
||||
- Blender-Vorteil gegenuber Maya (Wisetchat): Shape-Keys sind Eigenschaften eines einzelnen Meshes, keine separaten Kopien. Topologie-Anderungen nach Shape-Key-Erstellung moeglich.
|
||||
Reference in New Issue
Block a user