a3a7b8323620ea7b679b231f3a27577dbeca1d89
Every fix here is the same shape: the keyframe data was already parsed
correctly and then dropped somewhere downstream, with no error logged.
Found by dumping the authoritative schema with tools/ and comparing against
what the handlers actually consume.
BgColor1 (8) — the largest track in the corpus, 43617 keys / 59 songs
* AlterUpdate_BgColor1 filtered on a `validBgColorNames` whitelist of four
character group names, discarding the other 16 stage groups outright.
On song 1177 that is ~92% of the track's keys. Filter removed; Director
now routes by group name (characters vs stage).
* Stage branch resolves renderers by walking the whole stage hierarchy.
StageObjectMap alone is not enough: it dedupes by name, and crowd groups
have 66-570 same-named objects, so only the first was ever coloured.
* Writes _MulColor0, confirmed by enumerating the shaders' property tables.
_AmbientColor belongs to BgColor2 — they are separate channels on the
same shader and must not be written by both.
* Populates fields the dispatcher had always left at default: colorPower,
scale, vertexColorToonPower, outlineWidthPower, LightBlendMode,
IsSilhouette, IsProjector, TimelineName.
Object (33) — the neon sign never descended from the ceiling
* The group name `neonsign` is a StageController._stageObjectUnits *unit*
name; no GameObject of that name exists, so the whole track never fired.
UpdateObject now falls back to StageObjectUnitMap and applies to each
child of the unit.
* ObjectUpdateInfo.OffsetType was populated by the dispatcher but never
read, so Add-relative positions were written as absolute and objects
snapped to their parent's origin. Now honoured against a lazily captured
base local TRS.
BlinkLight (45) — 19420 keys / 57 songs, the biggest lighting payload
* Wrote _Color, which does not exist on Gallop/3D/Live/Stage/LightBlinkBlend
(its colour channel is _BlinkLightColor), so the write was a no-op and the
lights rendered black. Now probes the shader for the real property.
* Brightness goes to _ColorPower instead of being folded into the colour,
falling back to colour*power only where that property is absent.
* Uses MaterialPropertyBlock; the old path hit Renderer.materials every
frame, allocating and breaking batching.
PostFilm (39) — ~20200 keys / 59 songs, previously recorded as empty
* Data class fields reordered to the bundle's TypeTree order and the five
missing BlinkLight* fields added; LiveTimelineKeyPostFilmDataList created;
postFilmKeys / postFilm2Keys / postFilm3Keys declared on the worksheet.
Runtime now deserializes 100 / 161 / 87 keys on song 1177.
* AlterUpdate_PostFilm dispatch with interpolation, PostFilmUpdateInfo,
a URP ScriptableRendererFeature and a full-screen blit shader.
* Rendering is disabled by default: filmOptionParam's geometry is undefined
anywhere we can read. All 100 keys on song 1177 are Vignette variants, so
that parameter decides the whole look, and the shader that defines it is
not in the `shader` bundle (all 499 searched by name and by property
signature) — it ships inside the app binary.
Diagnostics
* LiveTimelineWorksheetDiag dumps every track field with group names and key
counts, and Probe() tests whether a candidate field name matches the
bundle TypeTree. Confirmed worksheetList.Count == 1 (SheetType MainLive),
and that WashLightList really is spelled with a capital W — upstream
katboi01 uses washLightList, which never populates.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Uma Viewer (2)
Unity application that makes it easy to view assets from Uma Musume: Pretty Derby.
| Version | Supported |
|---|---|
| JP (DMM) | ✅ |
| JP (Steam) | ✅ |
| KR | ✅ |
| Global | ✅ |
⚠️ 🌍 EN/Global users ⚠️
In UmaViewer, set WorkMode to Default and Region to Global in the 'Other' Settings tab.
Currently only the default work mode is supported - you need to download assets using the Download All button in the game's settings for the viewer to work.
Requirements/Installation
- Uma Musume: Pretty Derby with full data download is required to run the viewer.
- Depending on your version and update status, the game stores its data in different locations
- DMM/Steam Older installations : C:\Users\your_username\AppData\LocalLow\Cygames\umamusume(?)\
- DMM/Steam Fresh installations : ...\Umamusume installation directory\Umamusume_Data\Persistent(?)\
- In any case,confirm your file listing in target folder looks like this
- Target Folder\
- meta
- master\
- master.mdb
- dat\
- 2A\...
- 2B\...
- ...\...
- Target Folder\
- Download the most recent UmaViewer.zip file from Releases tab.
- Extract the archive anywhere, can be extracted over previous version.
- Run the UmaViewer.exe.
- UmaViewer will try to automatically detect the game data folder.
- If it fails or shows an error, go to Settings → Other → Change DataPath and manually select target folder.
- For Developers/Contributors
- Unity Hub with Unity Engine Version 2022.3.62f1 is recommended. It should be possible to run it on newer 2022.3.X versions.
- Clone or download and extract this repository.
- Import and Open the project in Unity Hub, missing files should be automatically repaired.
- Open the Assets/Scenes/Version2 scene.
- note: If there are errors in the console, JSON .NET For Unity may be required
Features
| ✓ - Working | / - Incomplete | x - Unsupported |
| Viewing main character models/animations | ✓ |
| Swapping costumes/animations between characters | ✓ |
| Viewing chibi models/animations | ✓ |
| Viewing mob (NPC) models | ✓ |
| Playing facial animations, custom sliders | ✓ |
| Cloth/Hair physics | ✓ |
| Playing Live Audio with Lyrics | ✓ |
| Exporting animations to MMD | ✓ |
| Recording animations (.gif), screenshots | ✓ |
| Viewing Props, Scenery, Live scenes | / |
| Exporting models | / |
All characters and animations are supported
Mobs / background characters as well
Mixing outfits and animations
Screenshot and .gif recording
and more
Also check out:
UmaChat by kagari - model viewer fork that lets you chat with Umas using AI + TTS
Special Thank to:
MarshmallowAndroid: UmaMusumeExplorer for acb/awb decoder.
Description
Languages
C#
94.3%
GLSL
1.8%
ShaderLab
1.6%
C
0.7%
JavaScript
0.5%
Other
0.9%