Files
gta6/tools/assets/textures.mjs
T
knsoandClaude Opus 5 f226bc2c95 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>
2026-09-18 12:42:10 +02:00

30 lines
1.7 KiB
JavaScript

// Lädt die benötigten Poly-Haven-Texturen in 1k nach public/textures/. Vorhandene Dateien bleiben
// unangetastet, damit ein neuer Eintrag die übrigen Texturen nicht still ändert.
import { existsSync } from "node:fs";
import { mkdir, writeFile } from "node:fs/promises";
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",
"concrete_pavement", "brushed_concrete_04"];
const MAPS = ["Diffuse", "nor_gl", "arm"];
await mkdir("public/textures", { recursive: true });
for (const slug of SLUGS) {
if (MAPS.every((map) => existsSync(`public/textures/${slug}_${map}.jpg`))) continue;
const files = await (await fetch(`https://api.polyhaven.com/files/${slug}`, { headers: UA })).json();
for (const map of MAPS) {
const target = `public/textures/${slug}_${map}.jpg`;
if (existsSync(target)) continue;
const entry = files[map]?.["1k"]?.jpg;
if (!entry) { console.warn(`${slug}: ${map} fehlt`); continue; }
const buf = Buffer.from(await (await fetch(entry.url, { headers: UA })).arrayBuffer());
await writeFile(target, buf);
console.log(`${slug}_${map}.jpg ${(buf.length / 1e6).toFixed(1)} MB`);
}
}
// modular_sidewalk_curb_kit (Just8, CC BY 4.0) wird nicht mehr gebraucht. Der Gehweg nimmt seit der
// Gehwegtextur-Korrektur concrete_pavement, der Bordstein seit dem Bordstein-Befund
// brushed_concrete_04 - beide von Poly Haven (CC0) und beide oben in SLUGS. Die Geometrie des
// Bordsteins war ohnehin selbst gebaut (s. src/world/geometry.js, kerbGeometry).