ritenseki a3a7b83236 Live: fix six silently-failing track paths, add PostFilm data layer
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>
2026-08-05 01:11:57 +08:00
2025-01-20 11:11:43 +01:00
2025-07-20 07:18:58 +02:00
2022-06-18 17:47:39 +02:00
2022-09-07 01:22:44 +08:00
2025-10-03 11:00:39 +02:00

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

  1. Uma Musume: Pretty Derby with full data download is required to run the viewer.
  2. 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\...
        • ...\...
  1. Download the most recent UmaViewer.zip file from Releases tab.
  2. Extract the archive anywhere, can be extracted over previous version.
  3. Run the UmaViewer.exe.
  4. 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
  1. Unity Hub with Unity Engine Version 2022.3.62f1 is recommended. It should be possible to run it on newer 2022.3.X versions.
  2. Clone or download and extract this repository.
  3. Import and Open the project in Unity Hub, missing files should be automatically repaired.
  4. Open the Assets/Scenes/Version2 scene.

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.

S
Description
Mirror of https://github.com/0xcjy/UmaViewer (Unity Uma Musume viewer)
Readme 159 MiB
Languages
C# 94.3%
GLSL 1.8%
ShaderLab 1.6%
C 0.7%
JavaScript 0.5%
Other 0.9%