Commit Graph
1155 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
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 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
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
Mark Greene 85e03d3b42 Feature: Legendary camouflages in the Tankopedia viewer 2026-10-20 18:46:29 +13:00
tresabhi 1b5c79c2b8 Merge branch 'production' 2026-10-19 19:54:58 -05:00
tresabhi 51900f4c80 countdown 2026-10-19 19:22:20 -05:00
tresabhi b9388cc544 add basic xi compatibility 2026-10-19 19:08:25 -05:00
TrèsAbhi 73080fd60a Merge branch 'main' into remove-imgur-references 2026-10-18 14:03:19 -05:00
TrèsAbhi 8132f2d91e Merge branch 'main' into calculated-bounding-boxes 2026-10-18 13:59:49 -05:00
tresabhi d8925a47b5 i am satisfied 2026-10-10 23:12:41 -05:00
tresabhi 60f482d820 hahaha 2026-10-10 20:48:37 -05:00
tresabhi c2fd81c98e remove old credits 2026-10-10 18:47:46 -05:00
tresabhi 0fbc868738 more colors 2026-10-10 18:43:44 -05:00
tresabhi ff0cfbaf0a target 2026-10-10 18:38:05 -05:00
tresabhi 4642b74bca colors! 2026-10-10 18:37:47 -05:00
tresabhi 88d49bd5a3 avenir 2026-10-10 18:24:14 -05:00
tresabhi 6fd2423445 more progress 2026-10-10 18:12:01 -05:00
tresabhi a0dba52649 complete list? 2026-10-10 17:49:06 -05:00
tresabhi 80d76e3729 more more more! 2026-10-10 17:34:07 -05:00
tresabhi 7915b39d9d more! 2026-10-10 17:17:57 -05:00
tresabhi c94a84222d add more 2026-10-10 17:05:36 -05:00
tresabhi 1bca762781 start of credits 2026-10-10 16:59:34 -05:00
TrèsAbhi 03f2bcdc1a Merge pull request #366 from Hitjack007/track-repair-time 2026-10-09 17:29:38 -05:00
TrèsAbhi b6ae34dafa Merge pull request #377 from Hitjack007/armor-penetration-chance 2026-10-09 17:28:05 -05:00