Skip to content

Filter body-overlay rows on TBC Anniversary#573

Open
kandrwmrtn wants to merge 1 commit into
Kruithne:mainfrom
kandrwmrtn:fix/tbc-anniversary-bake-overlay-filter
Open

Filter body-overlay rows on TBC Anniversary#573
kandrwmrtn wants to merge 1 commit into
Kruithne:mainfrom
kandrwmrtn:fix/tbc-anniversary-bake-overlay-filter

Conversation

@kandrwmrtn

Copy link
Copy Markdown

On the wow_anniversary (TBC Classic Anniversary, build 2.5.5.67852) client, ItemDisplayInfoMaterialRes ships rows that don't match how the items render in-game:

  1. Many helms, shoulders, weapons, and cape items have body section overlay rows (apparent legacy hood/cowl/scabbard data) that the bake layers onto the character composite. These slots render entirely as attached M2 models in-game, so the overlays produce visible chest/leg bleed-through that doesn't exist in the actual game client.

  2. Many belts, boots, gloves, and other accessory items have set-mate sharing rows that point at the matching chest piece's BLP rather than a piece-specific texture. The bake faithfully draws the shared BLP onto the canvas, overpainting the chest item's bake with a near-identical-but-not-quite chest texture. The most visible case is Belt of the Guardian (item 30034), where the belt's only ItemDisplayInfoMaterialRes row is section 4 (TorsoLower) pointing at plate_a_01black_chest_tl_u.blp; with no actual belt-strip art referenced anywhere in the modern MaterialRes data, the bake produces "chest texture in belt region" instead of the belt visual.

The legacy filename-prefix lookup that the real client appears to use to fill in the missing belt/glove/etc. textures isn't implemented in wow.export, so we can't reconstruct the correct overlays for these items. Filter the spurious rows instead: M2-only slots skip the body-overlay loop entirely, and each remaining slot is restricted to the body sections it actually paints in-game.

Gated by Product === 'wow_anniversary' to scope the change to where it was empirically validated. Other Classic flavors very likely have the same legacy data shape, but I don't have a repro on hand to confirm; broadening the gate is a one-line change once someone does.

Repro and validation: TBC Anniversary client, Blood Elf male, Crystalforge Battlegear paladin set + Belt of the Guardian. Before: Crystalforge Faceguard equip alone produces plate_a_01crusader_* chest/leg loads in the runtime log and visible chest art on the body; Belt of the Guardian alone produces a chest BLP painted onto the torso with no visible belt strip. After: helm equip touches only head M2 attachments; belt equip contributes nothing to the body composite (chest item renders unobstructed; belt strip is not reconstructed -- see the open issue).

On the wow_anniversary (TBC Classic Anniversary, build 2.5.5.67852)
client, ItemDisplayInfoMaterialRes ships rows that don't match how the
items render in-game:

1. Many helms, shoulders, weapons, and cape items have body section
   overlay rows (apparent legacy hood/cowl/scabbard data) that the bake
   layers onto the character composite. These slots render entirely as
   attached M2 models in-game, so the overlays produce visible chest/leg
   bleed-through that doesn't exist in the actual game client.

2. Many belts, boots, gloves, and other accessory items have set-mate
   sharing rows that point at the matching chest piece's BLP rather than
   a piece-specific texture. The bake faithfully draws the shared BLP
   onto the canvas, overpainting the chest item's bake with a
   near-identical-but-not-quite chest texture. The most visible case is
   Belt of the Guardian (item 30034), where the belt's only
   ItemDisplayInfoMaterialRes row is section 4 (TorsoLower) pointing at
   plate_a_01black_chest_tl_u.blp; with no actual belt-strip art
   referenced anywhere in the modern MaterialRes data, the bake
   produces "chest texture in belt region" instead of the belt visual.

The legacy filename-prefix lookup that the real client appears to use
to fill in the missing belt/glove/etc. textures isn't implemented in
wow.export, so we can't reconstruct the correct overlays for these
items. Filter the spurious rows instead: M2-only slots skip the
body-overlay loop entirely, and each remaining slot is restricted to
the body sections it actually paints in-game.

Gated by Product === 'wow_anniversary' to scope the change to where
it was empirically validated. Other Classic flavors very likely have
the same legacy data shape, but I don't have a repro on hand to
confirm; broadening the gate is a one-line change once someone does.

See Kruithne#426 for the existing
"belt/skirt/pants show default skin" report this addresses.

Repro and validation: TBC Anniversary client, Blood Elf male, Crystalforge
Battlegear paladin set + Belt of the Guardian. Before: Crystalforge
Faceguard equip alone produces plate_a_01crusader_* chest/leg loads in
the runtime log and visible chest art on the body; Belt of the Guardian
alone produces a chest BLP painted onto the torso with no visible belt
strip. After: helm equip touches only head M2 attachments; belt equip
contributes nothing to the body composite (chest item renders
unobstructed; belt strip is not reconstructed -- see the open issue).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant