4.6 KiB
Individuelle Augen- und Haarfarben
Bestehende Modelle vorbereiten
Die vorhandenen Meshy-GLBs enthalten ein gemeinsames Mesh und Material für Haut, Kleidung, Haare und Augen. Eine Änderung der allgemeinen Materialfarbe würde deshalb die gesamte Figur färben. Die Bereiche müssen einmal pro Modell zugeordnet werden; die Geometrie wird dabei nicht anhand von Farbähnlichkeiten automatisch geraten.
Unter /falukant/dev-all-characters öffnet sich jetzt standardmäßig die
Vorschau Farben und Modellbereiche. Die bisherige Altersübersicht bleibt
über Alle Altersmodelle erreichbar.
- Geschlecht/Alter wählen oder eine lokale GLB-Datei öffnen. Für die Bearbeitung
möglichst die Quelldatei aus
YourPart3Assets/models-src/3d/falukant/charactersstatt eines bereits reduzierten Laufzeitmodells verwenden. - In Drehen / Zoom das Modell ausrichten. Das Mausrad zoomt, die rechte Maustaste verschiebt die Ansicht.
- Haare markieren wählen und sichtbare Haarflächen überstreichen. Zum Erreichen weiterer Seiten wieder in den Drehmodus wechseln.
- Für Iris markieren nahe heranzoomen und einen kleinen Pinsel verwenden. Augenweiß, Pupillen, Lider und Wimpern aussparen.
- Mit Markierung entfernen Bereiche auf ihre ursprüngliche Textur zurücksetzen. Die letzten zehn Pinselstriche lassen sich rückgängig machen.
- Augen-/Haarfarbe ändern und die Zuordnung prüfen. Die Checkbox zeigt zum Vergleich die Originalfarben. Haut und Kleidung werden nicht eingefärbt.
- Das bearbeitete GLB herunterladen und erneut öffnen, um die Zuordnung zu kontrollieren. Exportiert werden die Materialbereiche mit ihren ursprünglichen Texturen, nicht die gewählten Vorschaufarben.
Die Originaldateien im Asset-Repository werden vom Editor nicht überschrieben.
Nach Kontrolle die heruntergeladene Datei unter dem bisherigen Quellnamen im
Asset-Repository ablegen, z. B. female_20y.glb, und das Asset-Repository committen.
Die bestehende Pipeline npm run build-runtime-models -- --assets-dir ../YourPart3Assets --category characters erstellt daraus die optimierten GLBs.
Die Exportdatei erhält bewusst keinen _opt-Suffix, da solche Dateien vom
Quellmodell-Build übersprungen werden.
Noch nicht markierte Modelle behalten ihr bisheriges Aussehen. Diese Änderung ersetzt nicht automatisch alle bestehenden GLBs. Es gibt keine neue Datenbankmigration oder Speicherung pro Spielcharakter.
Schnittstelle für die Anzeige
Character3D und FalukantCharacterVisual akzeptieren ein appearance-Objekt:
<Character3D
gender="female"
:age="20"
:appearance="{ hairColor: '#6b4028', eyeColor: '#438ca7' }"
/>
Nur sechsstellige Hexfarben werden angewendet. null oder ein fehlender Wert
zeigt für den jeweiligen Bereich die Originaltextur. Farbänderungen benötigen
keinen erneuten Download und keine neue Modellinstanz.
Materialien enthalten glTF-extras in dieser Form:
{
"falukantAppearance": {
"version": 1,
"region": "hair",
"source": "material-0"
}
}
Bereiche sind body, hair und iris. source ordnet die Bereiche dem
ursprünglichen Material zu. Alternativ werden für extern vorbereitete Modelle
die exakten Materialnamen hair, iris, falukant_hair und falukant_iris
erkannt. Die Standardmaterialien und Texturkoordinaten bleiben erhalten.
Der Pinsel teilt Dreiecke in Materialgruppen; die Genauigkeit hängt deshalb
von der vorhandenen Geometrie ab. Sehr grobe Augenbereiche benötigen eine
feinere Geometrie oder eine spätere Texturmaskierung.
Die Farbanpassung erhält Helligkeitsdetails und berücksichtigt auch eingebrannte Farben in emissiven Texturen. Shader-Uniforms werden pro Material gehalten und nicht als Laufzeitobjekte in das GLB geschrieben. Der Export stellt die originale Wurzeltransformation wieder her und übernimmt vorhandene Animationen.
Spätere altersabhängige Attribute
Ergrauen kann später über eine altersabhängige Haarfarbe auf derselben Schnittstelle aufsetzen. Für Wachstum oder Veränderungen der Gesichtsform braucht es gezielt vorbereitete Morph-Targets oder austauschbare Geometrie. Die bisherigen voneinander unabhängigen Altersmodelle werden durch die Farbzuordnung nicht automatisch zu einem verformbaren Basismodell.
Prüfung
cd frontend
npm run test:character-appearance
npm run build
Zusätzlich wurde ein vorhandenes female_20y.glb im Browser geladen, mit Haar-
und Irisbereichen versehen, exportiert, mit der bestehenden Draco-/Simplify-
Pipeline optimiert und erneut importiert. Beide Bereiche und ihre glTF-Metadaten
blieben erhalten. Die vollständige Markierung aller Modellvarianten steht noch aus.