Commit Graph
1405 Commits
Author SHA1 Message Date
Mark Greene 8566b2cc2f Feature: Looping garage animations for legendary camouflages
Legendary camo add-ons now loop their garage animation in the Tankopedia viewer. It's always on, with no settings.

- The garage replay now also works out which motions end up looping, and the export writes only those clips
- Customization parts export skeletons, skin weights and sockets
- Parts render as primitives so their bones can animate, with attachments layered on top
- Base tank models are unchanged
2026-10-31 22:15:57 +13:00
tresabhi e216b4cd6b fix 1 pixel lights 2026-10-30 16:49:43 -05:00
Mark Greene c535811c1d Fix: Fade glowing camouflage parts with the lights
Unlit `Textured` materials loaded as `MeshBasicMaterial`, so they stayed bright while the lights receded during a camouflage switch (E 100 legendary camouflage).

- `Textured` materials now export as standard materials with the base color texture as emissive and a black base color, so they look the same as before.
- The Tankopedia model fades their emissive intensity with the lighting transition.
- Additive blending applies to these parts again, since they are standard materials.
2026-10-30 17:26:50 +13:00
tresabhi d96f77bf05 i am tired boss 2026-10-29 15:29:37 -05:00
tresabhi 3b34b01536 redirect guesser 2026-10-29 15:02:20 -05:00
tresabhi 14126d05a1 rename 2026-10-29 14:58:40 -05:00
tresabhi 93c1e6e761 code split 2026-10-29 14:38:04 -05:00
tresabhi b0af48f866 disable some more 2026-10-29 14:28:18 -05:00
tresabhi 1aa4e6c470 renable tabs 2026-10-29 14:25:55 -05:00
Mark Greene c772d47a07 Fix: Unify Tankopedia model, camouflage and attachment loaders
- Tankopedia state uses `loaders: { model, skin, attachment }` with `requested` and `loaded`
- useSkin swaps the camouflage halfway through the lighting transition for both cached and downloaded skins
- Remove the leftover "Unreleased" camouflage name handling
2026-10-30 07:11:31 +13:00
tresabhi f81f972787 wha 2026-10-29 13:04:11 -05:00
tresabhi 6e35c06cfc loader 2026-10-29 11:54:33 -05:00
tresabhi 078bc9d6cd use revealed 2026-10-29 11:36:29 -05:00
tresabhi dc9c20db84 remove debug console logs 2026-10-29 11:26:38 -05:00
tresabhi 523fee5010 its only ever going to be standard material 2026-10-29 11:15:28 -05:00
Mark Greene 0f299335d6 Fix: Legendary camouflage parts, materials, names and attachments
Fixes a batch of legendary camouflage problems in the Tankopedia viewer, adds three missing unique camouflages and lets attachments be shown together with a camouflage.

## Camouflage parts (state switchers)
- Camouflages now choose which tank pieces show the same way the game does. Each switcher's load-time scenario script runs at export time (checks for attached camouflage items, or compares the camouflage preset), along with its state-switch actions. This replaces the old guess from part names (new `core/blitzkit/switcherStates.ts`).
- Fixes missing roof MGs, fenders and fuel tanks (IS-3 Bear, Obj. 140 Terror, IS-7, IS-4, FV215b 183, AMX 50 B, KV-1S) and default parts mixed into camouflages (Pershing Speedfire, Forest Witch Fullmetal, Waffenträger Goldstreifen).
- Switchers inside camouflage parts now show one state instead of all of them stacked (Obj. Kust double net, Goldstreifen stowage, Tiger II cat).
- States are matched by original node names, because the GLTF loader renames duplicates.
- Camouflage part meshes with no LODs (`lodIndex -1`) are kept, which restores the Tiger II cat body and missing pieces on about 11 other camouflages.

## Materials
- `AlphaBlend` materials export as transparent. `AlphaBlendAdditive` materials export as additive and are applied in `jsxTree`, and unlit `Textured` materials export as unlit (IS-8 Raroh flames, dinosaur holograms, and glass and screens on a few base tanks).
- Camouflage part materials that share a name with the tank's material no longer replace the tank's camouflage material (Bisonte C45 Unbreakable).

## Names
- With a legendary camouflage selected, the title shows the tank's in-battle name ("GuP Type 95 Ha-Go", "KV-1 Warrior", "Shinobi").
- Camouflages without a name in the game files yet show "Unreleased" in orange instead of their raw string key, and no longer crash the tank names list.

## Attachments
- Attachments (`kind: customization`) are listed in their own group under the camouflages and can be turned on together with a camouflage. They load the same way as camouflages and fade with the same transition.

## Other
- Liberté, You Rock! and Ozzie (single-tank camouflages that only set a preset through `override`) are now available.
- Mastery gun mark meshes (`custom_gun_marks_*`) are no longer drawn (Helsing, HWT20 FalconFire and two camouflage guns).

## Not included
- Pixel Wave, Digital Trace and Forest Shadow are tiled pattern camouflages, which the viewer can't render yet.
- FV301 Corbie's drone position and the dinosaur heads' glow depend on camouflage animations and emissive materials, which are separate PRs.

Fixes #417
Fixes #419
Fixes #421
2026-10-29 15:28:11 +13:00
tresabhi 4694d495bb well at least some of it is showing up i guess 2026-10-27 18:58:21 -05:00
tresabhi 43fc98e37d focus tooltip 2026-10-27 18:43:48 -05:00
tresabhi d251c31b92 port antagonist control 2026-10-27 18:39:56 -05:00
tresabhi 45811b5c18 fix imports 2026-10-27 17:13:01 -05:00
tresabhi 10f8fa28f9 icons 2026-10-27 16:49:52 -05:00
tresabhi f10065887d black background 2026-10-27 14:24:32 -05:00
tresabhi dd83da91ff compiling 2026-10-27 11:52:58 -05:00
tresabhi bf7046c91b skin switcher 2026-10-27 11:51:14 -05:00
tresabhi fae0277b69 re apply rotation patch 2026-10-27 11:40:47 -05:00
tresabhi 3470d68204 fix imports 2026-10-27 11:36:00 -05:00
tresabhi 89d272166f Merge branch 'main' into data-driven 2026-10-25 18:49:49 -05:00
TrèsAbhi dcd77d5666 Merge branch 'main' into beg 2026-10-25 18:38:48 -05:00
tresabhi 46fd061aff simplify 2026-10-25 18:37:28 -05:00
Mark Greene 049ef58691 Fix legendary camos
Fixed https://github.com/blitzkit/blitzkit/commit/b540ab781419cbaa693597bf89a2f62962d8295f @tresabhi
2026-10-26 12:22:51 +13:00
TrèsAbhi bb64d718c2 Merge branch 'main' into beg 2026-10-25 18:11:37 -05:00
tresabhi 0d6c508382 remove skins from api 2026-10-25 15:00:17 -05:00
tresabhi 76445c67b2 some updates 2026-10-24 20:21:07 -05:00
tresabhi f6f8e2b4df polish 2026-10-22 17:00:13 -05:00
tresabhi a4fca4085e dedicated tool 2026-10-22 16:49:03 -05:00
tresabhi 26f71df9f9 remove some... people... 2026-10-22 16:40:11 -05:00
tresabhi d32b8cc3f5 Merge branch 'main' into new-credits 2026-10-22 16:38:40 -05:00
tresabhi 0922614dbc finalize 2026-10-22 16:37:16 -05:00
tresabhi b4a689dfbb start adding tiers 2026-10-22 15:42:07 -05:00
tresabhi 19e535969e colors 2026-10-22 11:51:08 -05:00
tresabhi eebc373b46 better 2026-10-22 11:45:18 -05:00
tresabhi ecb1a7c21e base 2026-10-22 11:30:03 -05:00
tresabhi fc9050e7fe fix imports 2026-10-21 23:23:55 -05:00
tresabhi b540ab7814 sk 2026-10-21 22:59:12 -05:00
tresabhi 0ee9c99a28 move tank models to models_tanks chunk 2026-10-21 22:56:40 -05:00
tresabhi ab9149a11f git keep 2026-10-21 22:48:33 -05:00
tresabhi 924c130516 git keep 2026-10-21 22:47:01 -05:00
Mark Greene a495a5f208 Feature: Legendary camouflages in the Tankopedia viewer 2026-10-22 16:12:03 +13:00
tresabhi 273fea1599 promote preview 2026-10-21 09:36:06 -05:00
Mark Greene ffb5a1f9c8 Feature: Animated legendary camouflages
Legendary camo add-ons now play their garage animations in the Tankopedia viewer, and a new menu next to the camo column triggers their battle reactions.

**Export (`model.glb` / `skins/[skin].glb`)**
- Customization parts export skeletons, skin weights and one clip per `.anim` motion file (`core/blitzkit/skinAnimations`)
- Sockets bound to skeleton joints follow their joint
- Action lists and scenario graphs are carried in glTF extras
- Part batches with no LODs (`lodIndex` -1) are now exported, fixing meshes that were missing entirely (e.g. the Tiger II cat body, the BDT-5A engine rings)
- Base tank models are unchanged

**Viewer**
- A runtime plays the clips and drives state switchers, action lists and the game's scenario graphs (a small interpreter for the node types the camos use)
- Camo parts render as primitives so their bones can animate
- Garage animations play once rather than looping, so the camo settles

**Animation menu**
- Floats left of the camo column when the selected camo has triggerable animations
- Icon buttons use the game's own white icons, served from `/icons/skin-events/[event].webp`
- Idle replays the garage animation
- Triggers: Shoot, Kill, Take damage, Damage enemy, Ricochet / No penetration, Start moving, Consumable, Reload. Only events that actually animate get a button
- Buttons are disabled while a triggered animation plays; triggering cuts any garage animation short

All legendary skin files together grow from 1.32 GB to 1.35 GB (+2.4%), almost all of it in the 102 animated camos.
2026-10-20 18:48:35 +13:00