ritenseki 30ef1b1929 cleanup: one shared property block, explicit resolve report, drop dead diagnostics
No behavioural change intended; this is the tidy-up pass after five rounds of track fixes.

Director.cs
  * Six MaterialPropertyBlock fields (chara / bgColor1 / bgColor2 / spotlight / uvScroll /
    blinkLight) become one shared `PropBlock`. Every use is the same self-contained
    Get -> modify -> Set, and the block carries no state across frames or handlers, so the
    separate fields were pure duplication. The reason the Get is mandatory (SetPropertyBlock
    replaces rather than merges — this is what made GlobalLight dead for 59/59 songs) now
    lives on the one shared field instead of being restated per handler.
  * ResolveStageTargets wrote four instance fields as de facto out-parameters that
    LogBgColor1Resolution read back. Replaced with a returned StageResolveReport, which also
    lets the logger become static. `props` is now a required parameter — the `= null` default
    silently meant "BgColor1's channel", which is the wrong default for a BgColor2 caller.
  * Three duplicated blocks removed: shader-description building (BgColor1 and BlinkLight
    logs -> DescribeRendererShaders), vocal entry resolution (InitializeMusic and
    GetLiveAllVoiceEntry -> ResolveVocalEntry), and the FOV frame marking copied verbatim
    into SaveCameraVMD and SaveMultiCameraVMD (-> MarkFovFrames, which additionally no longer
    throws on an empty frame list).
  * OnEffectUpdate's three identical "record the frame, bail out" branches collapse into
    LoadEffectPrefab returning null.
  * HdrBloom's handler and the Bloom volume override are gone. hdrBloomKeys is empty in all
    59 songs, and the field-to-URP mapping was never confirmed — so this was code that could
    only ever be wrong, plus an effect nobody wrote to. The data layer and the dispatch stay,
    so re-adding it is one subscription.
  * The BlinkLight TODO no longer lists palette slot mapping: that was reverse-engineered
    (slot = the lightNNN_/alphaNNN_ prefix of the renderer or its nearest ancestor).

StageEnvMapDiag.cs deleted (with StageEnvRateToggle and its F9 hotkey). It existed to test one
hypothesis — that the floor blow-out came from DefaultEnvMapNoAmbient's env reflection — and
the verdict experiment ran: _EnvRate = 0 changed nothing. The real cause turned out to be
mirror_a and is fixed. Keeping it meant a full-hierarchy sweep on every stage load and a
hotkey, for a question already answered.

StageController no longer calls it; StageMissingScriptCensus's doc comment stops restating the
signature list that CLAUDE.md already carries.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UzXXkLzVC8pNA3JjyUGMbq
2026-08-07 13:10:13 +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%