fix(startseite): saubere Skyline links, deutlich grössere Agentenbilder
Runde 7. §1 Hintergrund. Die Häuserzeile auf der linken Seite zeigte verwässerte Doppelstrukturen. Drei Ursachen, alle behoben: - Die Fortsetzung lief mit Massstab 2.45 und war damit gegenüber dem Hauptfoto um das 2.4-fache zu gross. Der Faktor ist jetzt aus den Fotos gemessen (Münsterhöhe über der Wasserlinie) und beträgt 1.06. - Die 320 Pixel breite Überblendung mischte zwei verschiedene Häuserreihen zu halbdurchsichtigen Geisterhäusern. In der Häuserzeile wird jetzt praktisch hart getrennt, in Himmel und Wasser weiterhin weich — dort gibt es nichts zu vermischen. - Die Umschaltlinie lag zwischen den Dächern, sodass die Gauben des Hauptfotos als Reihe schwebender Klötzchen im Himmel stehen blieben. Sie liegt jetzt über allen Dächern beider Aufnahmen. Dazu: Helligkeit zeilenweise statt global angeglichen, Himmel der Fortsetzung spaltenweise entlang der echten Dachkante entfernt, fehlende Bildbereiche über die Zeilenfarbe statt über gestreckte Randzeilen aufgefüllt, Häuserzeile nachgeschärft. §2 Agentenbilder. Alle Kreise deutlich grösser, tiefenlogisch gestaffelt und nur noch knapp über der Tischkante statt frei im Raum schwebend. Gegenüber vorher: Ferdi und Bruno 2.11×, Livia und Nora 2.22×, Sina 2.50×, Thomas 3.18×. Ferdi und Bruno rücken näher an die vordere Tischkante. Radius und Höhe stehen jetzt je Platz in der Sitzordnung; die Werte sind gemeinsam durchgerechnet, sodass sich im Bild kein einziges Kreispaar überschneidet. Nebenbei: waagrechter Bildwinkel nach oben begrenzt, damit flache Fenster den Raum nicht zerren; Sockelleiste vor das Wandpaneel gesetzt gegen die ausgefranste Kante. Geprüft bei 1600×900, 1366×768 und 1280×620: sechs Beschriftungen ohne Überlappung, kein Querbalken, Klick auf Ferdi führt auf seine Seite, Menü bündig am rechten Rand. 422 Tests, Lint und Build sauber. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9e825c04bf
commit
403161283c
5 files changed
+452
-104
No files matched your search
@@ -32,10 +32,6 @@ export const ROOM_COLORS = {
|
||||
tableTop: 0x8f7350,
|
||||
tableEdge: 0x6f5637,
|
||||
tableBase: 0x35322f,
|
||||
/** Stuhlschalen. */
|
||||
chair: 0x2f343c,
|
||||
/** Anzüge der Agenten, leicht variiert, damit die Reihe nicht uniform wirkt. */
|
||||
suits: [0x2c3444, 0x36302c, 0x2a3a3c, 0x3a2f36, 0x24303a, 0x1f2836],
|
||||
/** Ring um das Porträt — hebt den Kopf vom Hintergrund ab. */
|
||||
headRing: 0xffffff,
|
||||
/** Ring bei Hover: Gold aus dem Designsystem. */
|
||||
@@ -61,6 +57,12 @@ export const CAMERA = {
|
||||
/** Knapp hinter der vorderen Tischkante. */
|
||||
z: 1.9,
|
||||
fov: 48,
|
||||
/**
|
||||
* Obergrenze des waagrechten Bildwinkels in Grad. Greift nur bei sehr breiten
|
||||
* und gleichzeitig flachen Fenstern; bei üblichen Seitenverhältnissen liegt
|
||||
* der waagrechte Winkel darunter und die Ansicht bleibt unverändert.
|
||||
*/
|
||||
maxHFov: 84,
|
||||
/** Blickziel: leicht unter Augenhöhe, damit die Tischplatte Tiefe zeigt. */
|
||||
lookAt: [0, 1.24, -5.2] as const,
|
||||
/**
|
||||
@@ -82,23 +84,19 @@ export const TABLE = {
|
||||
zFar: -5.75,
|
||||
} as const
|
||||
|
||||
/** Sitzende Personen: Kopfhöhe und Grössen. */
|
||||
/** Sitzende Personen: Höhe der Porträtkreise. */
|
||||
export const SEATED = {
|
||||
/**
|
||||
* Höhe der Porträtkreise über dem Boden.
|
||||
* Luft zwischen Tischplatte und Unterkante des Porträtkreises (Runde 7, §2).
|
||||
*
|
||||
* Bewusst deutlich über der Blickachse der Kamera (1.19 m). Lagen die Kreise
|
||||
* auf Augenhöhe, projizierten alle fünf auf fast dieselbe Bildhöhe und die
|
||||
* hinteren verschwanden hinter den vorderen — unabhängig davon, wie weit man
|
||||
* sie seitlich auseinanderzog. Erst der Höhenunterschied zur Blickachse
|
||||
* trennt sie in der Tiefe (§3.2).
|
||||
* Daraus ergibt sich die Kopfhöhe: `TABLE.top + radius + headGap`. Die Kreise
|
||||
* schweben damit nur knapp über der Tischkante statt weit darüber. Vorher
|
||||
* hingen sie fest auf 1.52 m — bei den jetzt deutlich grösseren Kreisen sähe
|
||||
* das aus, als schwebten Köpfe frei im Raum.
|
||||
*
|
||||
* Getrennt gehalten werden die Plätze in der Tiefe nicht über die Höhe,
|
||||
* sondern seitlich: die Werte in `meetingRoomSeats` sind so gewählt, dass sich
|
||||
* im Bild keine zwei Kreise überschneiden.
|
||||
*/
|
||||
headY: 1.52,
|
||||
headRadius: 0.142,
|
||||
/** Torso vom Stuhl bis zum Hals. */
|
||||
torsoTop: 1.12,
|
||||
torsoBottom: 0.42,
|
||||
torsoRadiusTop: 0.19,
|
||||
torsoRadiusBottom: 0.25,
|
||||
shoulderWidth: 0.46,
|
||||
headGap: 0.05,
|
||||
} as const
|
||||
Reference in new issue
Block a user