docs: Messwerte der Browserprüfung im Entwurf festhalten
Dateigrößen, Maßstab und Dummy-Größe, Griffwerte, Schleifennaht je Dummy, Bildzeit mit Messverfahren, Draw Calls und Dreiecke, Befund zu Maske und Normalmap sowie die geprüften Durchdringungen an Kopf und Gewehr. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
01cb63e7f1
commit
c8f1832eae
1 file changed
+64
@@ -288,6 +288,70 @@ node tools/assets/weapons.mjs <Ordner WeaponsPack> -> public/models/weapons/
|
||||
- Maskenbelegung auf Sicht: Das Holz der AK47 glänzt nicht metallisch.
|
||||
- **Gesamt:** `npm test` grün, `npm run build` baut beide Seiten, `index.html` lädt weiter wie bisher.
|
||||
|
||||
## Gemessen im Browser (2026-09-18)
|
||||
|
||||
Schlussprüfung (Plan-Task 10): `animationen.html` über den Dev-Server geladen, `window.__showroom` genutzt.
|
||||
Die Browser-Pane lief dabei verborgen, `requestAnimationFrame` also gedrosselt — Bildtakt und Bildzeit wurden
|
||||
deshalb von Hand über `loop(time)` angetrieben statt über echtes `requestAnimationFrame` (Einzelheiten im
|
||||
Task-Bericht).
|
||||
|
||||
- **Dateigrößen** (`fs.statSync`, dezimale MB): `weapons-mocap.glb` 1,66 MB. Waffen: Pistole 0,16 MB, AK47
|
||||
0,23 MB, M4 0,21 MB, 870 Shotgun 0,12 MB, L96 0,14 MB.
|
||||
- **Maßstab und Dummy-Größe:** `figureScale` (Weltmaßstab von `player.playerModel`, wie in Task 8) ist 0,4921.
|
||||
Die Mannequin-Ruhepose ist 1,83 m hoch (Befund oben); Dummies und Spielfigur sind damit gleich groß, je
|
||||
1,83 × 0,4921 ≈ 0,90 m.
|
||||
- **Hand je Clip:** An allen acht Waffen-Dummies bestätigt: `hand_r`, wie in `DUMMIES` hinterlegt
|
||||
(`hand: "r"`). Keine Änderung nötig.
|
||||
- **Griffwerte je Waffe** (aus `WEAPONS`, unverändert seit Task 9): Pistole, AK47, M4, 870 Shotgun
|
||||
`position [0, 0.09, 0]`, `rotation [0, 0, 90]`; L96 gleiche Position, `rotation [0, 0, -90]`.
|
||||
- **Schleifennaht je Dummy:** Naht (Winkel zwischen der Pose 1/30 s vor und 1/30 s nach dem Rücksprung) gegen
|
||||
größten Zweibild-Schritt im Clipinneren (Abstand 2/30 s), in Grad. Bei allen 13 Dummies ist die Naht
|
||||
kleiner als der größte Schritt:
|
||||
|
||||
| Reihe, Platz | Clip | Waffe | Naht | Größter Schritt |
|
||||
|---|---|---|---|---|
|
||||
| 1, 1 | `idle_loadGun-Hand_tk01` | Pistole | 0,9° | 46,2° |
|
||||
| 1, 2 | `idle_loadGun-Hand_tk02` | Pistole | 0,9° | 49,4° |
|
||||
| 1, 3 | `taunt_shootSelfInHead_tk01` | Pistole | 0,7° | 39,5° |
|
||||
| 1, 4 | `taunt_shootSelfInHead_tk02` | Pistole | 0,7° | 44,7° |
|
||||
| 1, 5 | `idle_loadGun-Rifle_tk04` | AK47 | 0,8° | 55,0° |
|
||||
| 1, 6 | `idle_loadGun-Rifle_tk05` | M4 | 0,6° | 30,4° |
|
||||
| 1, 7 | `idle_loadGun-Rifle_tk04` | 870 Shotgun | 0,8° | 55,0° |
|
||||
| 1, 8 | `idle_loadGun-Rifle_tk05` | L96 | 0,6° | 30,4° |
|
||||
| 2, 1 | `stabTwist_Knife_tk01` | — | 0,9° | 58,5° |
|
||||
| 2, 2 | `stabTwist_Knife_tk02` | — | 0,8° | 61,3° |
|
||||
| 2, 3 | `leftHandThrow_grenade_tk01` | — | 1,0° | 51,3° |
|
||||
| 2, 4 | `leftHandThrow_grenade_tk02` | — | 0,6° | 59,7° |
|
||||
| 2, 5 | `hunter_bowArrow_tk01` | — | 1,2° | 40,7° |
|
||||
|
||||
Gleiche Clips (Reihe 1, Platz 5/7 und 6/8) ergeben gleiche Werte, weil die Naht eine Eigenschaft des Clips
|
||||
ist, nicht der Waffe.
|
||||
- **Bildzeit:** Gemessen als Zeit eines vollständig gezeichneten Bildes (CPU- und GPU-Zeit zusammen), weil die
|
||||
`requestAnimationFrame`-Kadenz aus dem Plan in der verborgenen Pane nicht läuft: je Bild `performance.now()`
|
||||
vor `loop(time)`, danach `gl.finish()` (erzwingt das Warten auf die GPU), `performance.now()` danach. Über
|
||||
60 so angetriebene Bilder mit allen 13 Mixern aktiv: Median 2,9 ms, Maximum 3,5 ms — weit unter den 20 ms
|
||||
Richtwert aus dem Plan. Dabei `renderer.info.render`: 45 Draw Calls, 209 145 Dreiecke (deckungsgleich mit
|
||||
der Messung aus Task 8).
|
||||
- **Maske und Normalmap:** Beim erneuten Betrachten der AK47 in dieser Prüfung kein Hinweis auf vertauschte
|
||||
Kanäle oder eine flache Normalmap. Deckt sich mit dem in „Griff einpassen" festgehaltenen, dort rechnerisch
|
||||
belegten Befund (Holz Rauheit ≈ 0,85 / Metallwert ≈ 0,22, Receiver Rauheit ≈ 0,97 / Metallwert ≈ 0,69); hier
|
||||
nur gegengeprüft, nicht neu vermessen.
|
||||
- **Durchdringungen:**
|
||||
- **Taunt am Kopf:** Bei beiden Take von `taunt_shootSelfInHead` liegt die Pistole sichtbar an der
|
||||
Kopfseite/Schläfe an, in zwei Kamerawinkeln geprüft. Kleinster gemessener Abstand zwischen
|
||||
Waffenursprung und dem `Head`-Knochen: 4,3 cm (Take 2, bei t = 2,48 s im Clip). Die in „Fehlerfälle und
|
||||
Risiken" vermerkte Möglichkeit „Pistole kann in den Kopf ragen" bestätigt sich als sichtbarer Kontakt.
|
||||
- **Linke Hand am Gewehr:** Die AK47 liegt erkennbar im beidhändigen Griff (rechte Hand hinten am
|
||||
Griffstück). Ein unverdeckter Blick auf die linke Hand gelang in dieser Prüfung nicht, die Kamera folgt
|
||||
der Spielfigur und ließ sich nicht frei zur Seite stellen. Gemessen: kleinster Abstand zwischen
|
||||
`hand_l` und dem Waffenursprung 3,7 cm (bei t = 2,25 s im Clip `idle_loadGun-Rifle_tk04`) — die Hand ist
|
||||
damit sehr nah am Gewehrkörper; eine sichtbare Durchdringung wurde nicht geprüft.
|
||||
- **Spiel:** `http://localhost:5180/` neu geladen, Welt stand nach wenigen Sekunden. Einzige Konsolenfehler:
|
||||
viermal `WrongDocumentError: pointer lock` (bekanntes Artefakt der verborgenen Pane, schon in Task 8/9
|
||||
dokumentiert) und einmal `net::ERR_BLOCKED_BY_CLIENT`. Der Netzwerk-Mitschnitt zeigt für alle eigenen
|
||||
Ressourcen der Seite (Skripte, Texturen, Modelle, Chunk-Daten) Status 200; das blockierte Element gehört zu
|
||||
keiner davon. Kein neuer, dieser Änderung zuzuordnender Fehler.
|
||||
|
||||
## Fehlerfälle und Risiken
|
||||
|
||||
- **Maskenbelegung falsch:** Glänzt Holz metallisch oder wirkt Metall stumpf wie Kunststoff, werden Grau und Alpha getauscht und neu gebaut. Die Browserprüfung oben fängt das.
|
||||
|
||||
Reference in new issue
Block a user