feat(world): Bordstein bekommt gebürsteten Beton von Poly Haven
Auf Wunsch des Nutzers: brushed_concrete_04 statt der Textur aus modular_sidewalk_curb_kit. Die Wand ist 18 cm hoch, da trägt eine Textur mit waagerechter Struktur mehr als das Modulmuster des Kits. Damit ist das Kit nirgends mehr im Spiel: Die Geometrie des Bordsteins war von Anfang an selbst gebaut, der Gehweg nimmt seit der Platzhalter-Korrektur concrete_pavement, und der Bordstein jetzt brushed_concrete_04 - beides Poly Haven (CC0). Der Kit-Import in tools/assets/textures.mjs entfällt samt sharp-Abhängigkeit, die drei kopierten Kit-Texturen sind entfernt, und die Namensnennung im Manifest nennt Just8 nicht mehr, weil nichts davon mehr benutzt wird. Der Kit-Ordner des Nutzers bleibt unangetastet. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
50eee9281a
commit
f226bc2c95
10 files changed
+14
-46
No files matched your search
@@ -86,12 +86,14 @@ Ein 15-cm-Bordstein hält den Spieler also nicht auf, er ist eine Stufe. Fahrzeu
|
|||||||
| Maßeinheit | Zentimeter | Meter |
|
| Maßeinheit | Zentimeter | Meter |
|
||||||
| Kernmaß | Bordstein 84,79 × 14,87 cm, Module 300 cm | Fahrbahnstücke **4,2 m** breit |
|
| Kernmaß | Bordstein 84,79 × 14,87 cm, Module 300 cm | Fahrbahnstücke **4,2 m** breit |
|
||||||
| Texturen | 3 Materialien, alle 2048², mit Normal- und MetallicRoughness-Karte | 9 Materialien, 512–1024, Markierungen fest eingebacken |
|
| Texturen | 3 Materialien, alle 2048², mit Normal- und MetallicRoughness-Karte | 9 Materialien, 512–1024, Markierungen fest eingebacken |
|
||||||
| Brauchbar als | Profil und Texturen für Bordstein und Gehweg | später Schilder, Masten, Geländer |
|
| Brauchbar als | ursprünglich Profil und Texturen für Bordstein und Gehweg — am Ende keines von beidem, s. Korrektur unten | später Schilder, Masten, Geländer |
|
||||||
|
|
||||||
Zwei Dinge liegen damit fest. Erstens: Das Straßen-Kit taugt nicht für die Fahrbahn — 4,2 m gegen 13,4 m gemessene Korridorbreite, und seine Markierungen sind europäisch (gelbe Randlinien, weiße gestrichelte Mitte), also das Gegenteil des amerikanischen Schemas. Zweitens: Das Bordstein-Kit besteht aus 16 Kästen mit zusammen 351 Punkten; seine Substanz sind die Texturen, nicht die Geometrie. 177 km Bordsteinkante wären in 3-m-Modulen rund 59.000 Einzelteile.
|
Zwei Dinge liegen damit fest. Erstens: Das Straßen-Kit taugt nicht für die Fahrbahn — 4,2 m gegen 13,4 m gemessene Korridorbreite, und seine Markierungen sind europäisch (gelbe Randlinien, weiße gestrichelte Mitte), also das Gegenteil des amerikanischen Schemas. Zweitens: Das Bordstein-Kit besteht aus 16 Kästen mit zusammen 351 Punkten; seine Substanz sind die Texturen, nicht die Geometrie. 177 km Bordsteinkante wären in 3-m-Modulen rund 59.000 Einzelteile.
|
||||||
|
|
||||||
**Korrektur (Gehwegtextur-Korrektur, 2026-09-18):** Die Zeile „Brauchbar als: Profil und Texturen für Bordstein und Gehweg" gilt nur noch für den Bordstein. `sidewalk_Diffuse.jpg` aus `modular_sidewalk_curb_kit` ist kein Betonbild, sondern das Platzhalterbild des Kits — dunkler Grund, roter Schriftzug „Tru-planar Sidewalk texture", im Browser geprüft. Solange `loadSet()` an der fehlenden Normal- und ARM-Karte scheiterte, fiel der Gehweg auf den einfarbigen Ersatz zurück und niemand bemerkte es; sobald `loadSet()` auch ohne die beiden Beiwerke lädt (s. Abschnitt „Texturen aus dem Kit" unten), kachelt der Schriftzug über die ganze Stadt. Der Gehweg benutzt deshalb `concrete_pavement` von Poly Haven (CC0), dieselbe Textur wie die Parkwege (`TEXTURES.paths`). Der Bordstein bleibt beim Kit — `curb_Diffuse.jpg` ist eine echte Betontextur mit Fugen, im Browser geprüft.
|
**Korrektur (Gehwegtextur-Korrektur, 2026-09-18):** Die Zeile „Brauchbar als: Profil und Texturen für Bordstein und Gehweg" gilt nur noch für den Bordstein. `sidewalk_Diffuse.jpg` aus `modular_sidewalk_curb_kit` ist kein Betonbild, sondern das Platzhalterbild des Kits — dunkler Grund, roter Schriftzug „Tru-planar Sidewalk texture", im Browser geprüft. Solange `loadSet()` an der fehlenden Normal- und ARM-Karte scheiterte, fiel der Gehweg auf den einfarbigen Ersatz zurück und niemand bemerkte es; sobald `loadSet()` auch ohne die beiden Beiwerke lädt (s. Abschnitt „Texturen aus dem Kit" unten), kachelt der Schriftzug über die ganze Stadt. Der Gehweg benutzt deshalb `concrete_pavement` von Poly Haven (CC0), dieselbe Textur wie die Parkwege (`TEXTURES.paths`). Der Bordstein bleibt beim Kit — `curb_Diffuse.jpg` ist eine echte Betontextur mit Fugen, im Browser geprüft.
|
||||||
|
|
||||||
|
**Korrektur (Bordstein-Befund, 2026-09-18):** Auch der Bordstein kommt nicht mehr aus dem Kit. Seine Wand ist 18 cm hoch; dort trägt eine Textur mit waagerechter Struktur mehr als das Modulmuster des Kits, und der Nutzer hat `brushed_concrete_04` von Poly Haven (CC0) ausgewählt. Damit ist `modular_sidewalk_curb_kit` nirgends mehr im Spiel: Die Geometrie war von Anfang an selbst gebaut, beide Texturen kommen jetzt von Poly Haven, und die Namensnennung des Kits entfällt (s. Abschnitt „Namensnennung").
|
||||||
|
|
||||||
## Entscheidungen des Nutzers
|
## Entscheidungen des Nutzers
|
||||||
|
|
||||||
| Frage | Entscheidung |
|
| Frage | Entscheidung |
|
||||||
@@ -205,7 +207,7 @@ Der Schritt überspringt still, was schon da ist, und meldet verständlich, wenn
|
|||||||
|
|
||||||
`sidewalk_metallicRoughness.png` ist eine 605 Byte große Einfarbfläche und wird nicht übernommen; eine Normal-Map für den Gehweg liefert das Kit nicht.
|
`sidewalk_metallicRoughness.png` ist eine 605 Byte große Einfarbfläche und wird nicht übernommen; eine Normal-Map für den Gehweg liefert das Kit nicht.
|
||||||
|
|
||||||
**Namensnennung:** `manifest.json` und die Zeile im Spiel bekommen „Bordstein: Just8 (Sketchfab, CC BY 4.0)". Das Straßen-Kit wird in dieser Arbeit nicht benutzt und deshalb auch nicht genannt. Der Gehweg kommt seit der Korrektur oben (Abschnitt „Die beiden Kits") von Poly Haven (CC0) und bleibt deshalb wie die übrigen Poly-Haven-Texturen ohne eigene Namensnennung.
|
**Namensnennung:** Keine neue Zeile. Bordstein und Gehweg kommen seit den beiden Korrekturen oben (Abschnitt „Die beiden Kits") von Poly Haven (CC0) und brauchen wie die übrigen Poly-Haven-Texturen keine eigene Namensnennung; das Bordstein-Kit von Just8 und das Straßen-Kit werden nicht benutzt und deshalb auch nicht genannt.
|
||||||
|
|
||||||
## Chunk-Format
|
## Chunk-Format
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 844 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 888 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.1 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 235 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 212 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 339 KiB |
@@ -16,7 +16,10 @@ export const TEXTURES = {
|
|||||||
paths: "concrete_pavement", // helle Betonplatten, seit Teil 2 auch für den Gehweg (sidewalk unten)
|
paths: "concrete_pavement", // helle Betonplatten, seit Teil 2 auch für den Gehweg (sidewalk unten)
|
||||||
carriageway: "asphalt_02",
|
carriageway: "asphalt_02",
|
||||||
lots: "asphalt_02", // Parkplätze und Vorplätze: derselbe Asphalt wie die Fahrbahn
|
lots: "asphalt_02", // Parkplätze und Vorplätze: derselbe Asphalt wie die Fahrbahn
|
||||||
curb: "curb", // modular_sidewalk_curb_kit (Just8, CC BY 4.0), s. tools/assets/textures.mjs
|
// Gebürsteter Beton mit Fugen und Kanten: die Wand ist nur 18 cm hoch, da zählt eine Textur mit
|
||||||
|
// waagerechter Struktur mehr als eine mit Muster. Vorher kam sie aus modular_sidewalk_curb_kit;
|
||||||
|
// die Kit-Textur ist damit nirgends mehr im Spiel (s. tools/assets/textures.mjs).
|
||||||
|
curb: "brushed_concrete_04",
|
||||||
// Derselbe Wert wie TEXTURES.paths: helle Betonplatten in echter Größe. Die Kit-Textur schied
|
// Derselbe Wert wie TEXTURES.paths: helle Betonplatten in echter Größe. Die Kit-Textur schied
|
||||||
// aus, weil sidewalk_Diffuse.jpg kein Betonbild war, sondern das Platzhalterbild des Kits
|
// aus, weil sidewalk_Diffuse.jpg kein Betonbild war, sondern das Platzhalterbild des Kits
|
||||||
// (roter Schriftzug "Tru-planar Sidewalk texture", im Browser geprüft).
|
// (roter Schriftzug "Tru-planar Sidewalk texture", im Browser geprüft).
|
||||||
|
|||||||
@@ -2,11 +2,10 @@
|
|||||||
// unangetastet, damit ein neuer Eintrag die übrigen Texturen nicht still ändert.
|
// unangetastet, damit ein neuer Eintrag die übrigen Texturen nicht still ändert.
|
||||||
import { existsSync } from "node:fs";
|
import { existsSync } from "node:fs";
|
||||||
import { mkdir, writeFile } from "node:fs/promises";
|
import { mkdir, writeFile } from "node:fs/promises";
|
||||||
import sharp from "sharp";
|
|
||||||
|
|
||||||
const UA = { "User-Agent": "leonida-assets/0.1 (local hobby project)" };
|
const UA = { "User-Agent": "leonida-assets/0.1 (local hobby project)" };
|
||||||
const SLUGS = ["asphalt_02", "concrete_pavement_03", "white_stucco", "sand_01", "leafy_grass", "grass_path_2", "palm_bark",
|
const SLUGS = ["asphalt_02", "concrete_pavement_03", "white_stucco", "sand_01", "leafy_grass", "grass_path_2", "palm_bark",
|
||||||
"concrete_pavement"];
|
"concrete_pavement", "brushed_concrete_04"];
|
||||||
const MAPS = ["Diffuse", "nor_gl", "arm"];
|
const MAPS = ["Diffuse", "nor_gl", "arm"];
|
||||||
|
|
||||||
await mkdir("public/textures", { recursive: true });
|
await mkdir("public/textures", { recursive: true });
|
||||||
@@ -24,42 +23,7 @@ for (const slug of SLUGS) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Der Bordstein kommt aus modular_sidewalk_curb_kit (Just8, CC BY 4.0). Der Ordner gehört dem
|
// modular_sidewalk_curb_kit (Just8, CC BY 4.0) wird nicht mehr gebraucht. Der Gehweg nimmt seit der
|
||||||
// Nutzer und liegt nicht im Repo — das Skript darf deshalb nicht von ihm abhängen, sondern
|
// Gehwegtextur-Korrektur concrete_pavement, der Bordstein seit dem Bordstein-Befund
|
||||||
// überspringt den Schritt mit einer verständlichen Meldung, wenn er fehlt. Die drei erzeugten
|
// brushed_concrete_04 - beide von Poly Haven (CC0) und beide oben in SLUGS. Die Geometrie des
|
||||||
// Dateien sind versioniert, danach braucht niemand mehr den Ordner.
|
// Bordsteins war ohnehin selbst gebaut (s. src/world/geometry.js, kerbGeometry).
|
||||||
// Korrektur: sidewalk_baseColor.jpeg (-> sidewalk_Diffuse.jpg) ist raus. Die Datei war das
|
|
||||||
// Platzhalterbild des Kits, keine Betontextur (roter Schriftzug "Tru-planar Sidewalk texture",
|
|
||||||
// im Browser geprüft) - der Gehweg benutzt jetzt concrete_pavement von Poly Haven, s.
|
|
||||||
// src/world/materials.js.
|
|
||||||
// Über CURB_KIT umstellbar, damit der Fall "Kit fehlt" geprüft werden kann, ohne den Ordner
|
|
||||||
// des Nutzers zu verschieben.
|
|
||||||
const KIT = `${process.env.CURB_KIT ?? "modular_sidewalk_curb_kit"}/textures`;
|
|
||||||
const KIT_MAPS = [
|
|
||||||
// glTF packt Rauheit nach G und Metall nach B — dasselbe Schema wie die arm-Karten von
|
|
||||||
// Poly Haven, deshalb ist die metallicRoughness-Karte hier direkt das arm-Ziel.
|
|
||||||
{ from: "CurbMat_baseColor.jpeg", to: "curb_Diffuse.jpg" },
|
|
||||||
{ from: "CurbMat_normal.png", to: "curb_nor_gl.jpg" },
|
|
||||||
{ from: "CurbMat_metallicRoughness.png", to: "curb_arm.jpg" },
|
|
||||||
];
|
|
||||||
|
|
||||||
async function importCurbKit() {
|
|
||||||
if (!existsSync(KIT)) {
|
|
||||||
console.log(`${KIT} fehlt — Bordstein-Texturen übersprungen. Das Kit gehört dem Nutzer `
|
|
||||||
+ "und ist nicht im Repo; die erzeugten Dateien liegen bereits unter public/textures.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (const { from, to } of KIT_MAPS) {
|
|
||||||
const target = `public/textures/${to}`;
|
|
||||||
if (existsSync(target)) {
|
|
||||||
console.log(`${to} ist schon da`);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// 1024 wie alle übrigen Texturen: die 2048er des Kits wären für ein 15 cm hohes
|
|
||||||
// Wandband Verschwendung.
|
|
||||||
await sharp(`${KIT}/${from}`).resize(1024, 1024).jpeg({ quality: 90 }).toFile(target);
|
|
||||||
console.log(`${to} erzeugt`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
await importCurbKit();
|
|
||||||
@@ -169,8 +169,7 @@ def main() -> None:
|
|||||||
"class_shares": shares,
|
"class_shares": shares,
|
||||||
"attribution": "Kartenkacheln: GTA VI Map (CC BY 4.0) — https://map.gtadb.org, YANIS v15. "
|
"attribution": "Kartenkacheln: GTA VI Map (CC BY 4.0) — https://map.gtadb.org, YANIS v15. "
|
||||||
"Wahrzeichen: rolux/gtamaplib-vc (Unlicense). "
|
"Wahrzeichen: rolux/gtamaplib-vc (Unlicense). "
|
||||||
"Flamingo Park: © OpenStreetMap-Mitwirkende (ODbL). "
|
"Flamingo Park: © OpenStreetMap-Mitwirkende (ODbL).",
|
||||||
"Bordstein: Just8 (Sketchfab, CC BY 4.0).",
|
|
||||||
})
|
})
|
||||||
print(render_map(OUT, OUT), "->", OUT)
|
print(render_map(OUT, OUT), "->", OUT)
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user