GEO + Fixed Vehicle Models

If you liked this item, please rate it up on Steam Workshop page.

Author: sdfsdfg

Last revision: 22 Jun at 16:13 UTC

File size: 336.68 MB

On Steam Workshop

Description:

this mod combines "fixed vehicle models all dlc" and "geo ww2 models" together
fixed vehicle models make the vanilla models big and geo ww2 models adds new high quality models
this mod scales up geo ww2 models (by 1.2) to be the same size as the fixed vehicle models

the priority is that someone who is not using the mod will also see the same model (for multiplayer), so even if i manually change my model it will still be the same model to someone with 0 mods enabled, i will just see a bigger and (if it’s using a geo ww2 model) higher quality model

ive checked error.log and the replacements it did in game, if u find a bug comment and ill fix

AI was NOT used on any art, it was only used to make python script and combine the mods

everything written below this line is by ai
————–

GEO + Fixed Vehicle Models

Combined Hearts of Iron IV mod merging:

Vehicle Fix provides scaled-up vanilla models. GEO WW2 provides higher-quality geo_* models for many vanilla entity slots. This mod keeps Vehicle Fix as the foundation and selectively swaps in GEO models where they represent the same vehicle.


Methodology

1. Start from Vehicle Fix

The full Vehicle Fix workshop content is copied as the mod base. All scaled entity definitions, empty vanilla overrides, and Vehicle Fix sizing are preserved.

Each merge run resets Vehicle Fix entity .asset files from the workshop copy before applying replacements, so re-running the script is idempotent.

2. Entity name whitelist

Only entity name values that already exist in Vehicle Fix are considered. GEO-only entities (for example GER_medium_armor_panther_a_entity, FRA_modern_armor_leclerc_entity, or geo_* custom entries) are not added.

3. Decide whether GEO replaces a slot

For each Vehicle Fix entity, the merge script checks whether a GEO model represents the same vehicle.

Vehicle identity is inferred from:

  • Comments in Vehicle Fix _125*.asset files (for example # ARL 44 (FRA_heavy_armor_1))
  • Vanilla game equipment designer icon labels (for example GER_medium_armor_entity #Panzer IV)
  • Vanilla mesh names when VF comments are section headers
  • GEO comments, mesh filenames, and icon labels
  • Roman numeral handling (Panzer IV → panzer4) and hyphenated names (AMX-M4 → amxm4)

Same-name matching: if GEO uses a geo_* mesh on the same entity name and vehicle tokens match, replace.

Cross-name matching: when GEO uses a different entity name for the same vehicle (common with base-game slots), the script searches GEO entities with a compatible role. Examples:

Vehicle Fix / vanilla entity
GEO entity used for mesh
Vehicle
GER_medium_armor_entity
GER_medium_armor_1_entity
Panzer IV
FRA_heavy_armor_entity
FRA_heavy_armor_0_entity
Char B1 bis
GER_light_armor_entity
GER_light_armor_1_entity
Panzer II

Cross-name matching requires compatible equipment roles (base medium_armor → medium_armor_1, but not armored_car → light_armor) and strong token overlap.

Same-name slot fallback: when Vehicle Fix has no vehicle label but GEO assigns a geo_* mesh to the same entity name, the GEO slot assignment is trusted.

Kept from Vehicle Fix when GEO assigns a different vehicle to the same slot:

Entity
Vehicle Fix vehicle
GEO model
Result
FRA_heavy_armor_1_entity
ARL 44
M4A3E2 Sherman
Keep ARL 44
FRA_medium_armor_1_entity
Somua S35
M4A4 Sherman
Keep S35
FRA_medium_armor_2_entity
SARL 42
M4A2 Sherman
Keep SARL 42
ENG_medium_armor_2_entity
Comet
M4A4
Keep Comet
ENG_light_armor_1_entity
Matilda
M3 Stuart
Keep Matilda

4. Scaling

When a GEO replacement is applied:

final_scale = geo_entity_scale × 1.2

GEO models are larger than vanilla but smaller than Vehicle Fix scaling. The 1.2 multiplier brings GEO models up to Vehicle Fix visual size.

5. Assets copied from GEO

For each accepted replacement, the script copies:

  • GEO mesh definitions into gfx/entities/_geofixed_meshes.gfx
  • GEO model files (.mesh, textures, .anim) referenced by those meshes
  • Required animation definitions into gfx/models/units/tanks/_geofixed_animations.asset

Texture copying handles naming mismatches and shared texture families:

  • geo_panzer1_a.mesh → geo_panzer1a_* textures
  • geo_panzer4_g.mesh → shared geo_panzer4_* textures
  • geo_b1bis.mesh → geo_b1_* textures (mesh name differs from texture prefix)
  • geo_type97_chiha_track_* and geo_38t_e_track_* shared track textures
  • geo_accessories_* shared accessory textures

GEO entity parsing prefers _geo*.asset definitions over vanilla units_tanks.asset overrides, so base-game slots like GER_heavy_armor_entity correctly resolve to geo_tiger_mesh (Tiger I / Panzer VI).

A GEO WW2 vehicle plan CSV (3d model plan – シート.csv) is included for reference when validating nation/vehicle slot assignments. This is from the google sheets linked in Kakheti Arsenal discord.


Key replacements

Entity
Vehicle
GEO mesh
Final scale
GER_light_armor_0_entity
Panzer I
geo_panzer1_a_mesh
0.96
GER_medium_armor_entity
Panzer IV
geo_panzer4_g_mesh
0.84
GER_medium_armor_0_entity
Panzer III
geo_panzer3_e_mesh
0.96
GER_medium_armor_2_entity
Panther
geo_panther_d_mesh
1.71
GER_heavy_armor_0_entity
Grosstraktor / Neubaufahrzeug
geo_ndfz_mesh
1.2
GER_heavy_armor_entity
Tiger I (Panzer VI)
geo_tiger_mesh
1.08
GER_heavy_armor_2_entity
King Tiger
geo_tiger2_mesh
1.2
FRA_heavy_armor_entity
Char B1 bis
geo_b1bis_mesh
1.2
USA_medium_armor_0_entity
M3 Lee
geo_m3lee_mesh
1.2

43 replacements total. Full machine-readable details: merge_report.json


Regenerating

python3 merge_geo_models.py

The script expects Vehicle Fix, GEO WW2, and the vanilla HOI4 install at their default Steam paths (configured at the top of merge_geo_models.py).


Load order

Enable this mod instead of Vehicle Fix and GEO WW2. Do not run all three together.


Credits

  • Vehicle Fix: Fixed Vehicle Models All DLC (Workshop ID 2909181066)
  • GEO WW2: GEO World War 2 Models Mod (Workshop ID 3132985068)