From 4f68a3f6255badd28f452ed18f5ad429aa659145 Mon Sep 17 00:00:00 2001 From: Kenso Grimm Date: Wed, 16 Sep 2026 13:04:50 +0200 Subject: [PATCH] =?UTF-8?q?feat(world):=20Rasen=20gr=C3=BCn=20t=C3=B6nen?= =?UTF-8?q?=20statt=20roh=20sandfarben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit leafy_grass ist roh sandfarben (Mittel der Diffuse-Kachel R 151, G 131, B 89). Seit der Park seine echte Fläche als eigene Schicht trägt (102 790 statt 16 798 m² im Parkrechteck), las er sich aus der Vogelperspektive wie eine Brache, während ihn die Minimap grün zeichnet. PARK_TINT 0xb4dc94 tönt Rot und Blau stärker ab als Grün; die Felder behalten ihren helleren FIELD_TINT und heben sich weiter ab. Im Browser abgestimmt (Task 12, Schritt 7) und vom Nutzer so gewählt. Co-Authored-By: Claude Opus 5 --- src/world/materials.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/world/materials.js b/src/world/materials.js index a3a665f..9199dd4 100644 --- a/src/world/materials.js +++ b/src/world/materials.js @@ -32,8 +32,13 @@ const FALLBACK_COLORS = { // also wird hier die hellere Straße (und die jetzt identisch texturierte Brücke) // abgetönt statt die Stadtfläche zu verändern. const ROAD_TINT = 0x999999; -// Felder heben sich vom Rasen ab. material.color kann nur abdunkeln, also Rot und Blau stärker als Grün; -// abgestimmt wird im Browser. +// leafy_grass ist roh sandfarben (Mittel der Diffuse-Kachel: R 151, G 131, B 89): aus der +// Vogelperspektive las sich der Park wie eine Brache, während ihn die Minimap (overview.py) grün +// zeichnet. material.color kann nur abdunkeln, also Rot und Blau stärker als Grün. Im Browser +// abgestimmt (Task 12, Schritt 7). +const PARK_TINT = 0xb4dc94; +// Felder heben sich vom Rasen ab: dieselbe Textur, aber heller getönt als PARK_TINT — gemähter Platz +// im Rasen. material.color kann nur abdunkeln, also Rot und Blau stärker als Grün. const FIELD_TINT = 0xc8f0b0; // Klone statt zweiter Ladevorgang: dieselben Texturen, eigene Tönung und eigener polygonOffset. const CLONES = { field: { from: "park", tint: FIELD_TINT }, parking: { from: "roads" } }; @@ -138,7 +143,7 @@ export function applyPolygonOffsets(materials) { export async function createMaterials(maxAnisotropy) { const loader = new TextureLoader(); - const tints = { roads: ROAD_TINT, bridges: ROAD_TINT }; + const tints = { roads: ROAD_TINT, bridges: ROAD_TINT, park: PARK_TINT }; const textured = MATERIAL_KEYS.filter((key) => !CLONES[key] && !SURFACE_COLORS[key]); const entries = await Promise.all( textured.map(async (key) =>