|
WoWs Model Exported
World of Warships 3D model Exporter
|
Vibe coded parser and glTF/GLB exporter for World of Warships ship 3D models.
File formats and organization: MODEL.md (ship mesh pipeline — GameParams, assets.bin, LOD, textures) and GEOMETRY.md (.geometry binary layout).
Install dependencies (Debian/Ubuntu):
Clone code:
Compile:
Reads the game files, in particular GameParams.data and assets.bin (via wows-depack), and stitches the model parts (.geometry vertices, .dds textures) together to export to .gltf/.glb format.
Hidden options (not shown in --help, but supported): -g / --gameparams and -a / --assets-bin to pass explicit paths to GameParams.data and assets.bin, this might be useful when working on unpacked resources (e.g. after extracting game all game files with wows-depack) instead of relying on auto-detection under -W.
export Kongo with all defaults:
export Kongo specific hull, no turrets, Level of Detail 2 (LOD is 0 to 4, with 0 being the highest level):
To visualize and inspect the model, you can load it in babylonjs sandbox, or locally, you can use blender or f3d:
Lists all ships found in GameParams.data, with optional filtering by nation or type:
Can be combined to export all ships to gltf (requires ~40GB):
Parses one .geometry file, prints its structure, or exports it as GLB.
wows-geometry exposes a C++ API for embedding ship export into your own tools. The main entry point is wows_stitch_export_ship() from inc/wows-model-exporter.h.
Full API reference: wows-tools.github.io/wows-model-exporter
wows_stitch_export_ship handles everything: auto-detecting GameParams.data and assets.bin under game_dir, resolving hull and turret models, loading HP_ transforms and BlendBone corrections, decoding geometry, merging, texturing, and writing the GLB. Errors are printed to stderr; Python is initialised and finalised internally.
| Field | Default | Description |
|---|---|---|
gameparams_path | "" | Path to GameParams.data; auto-detected from game_dir if empty |
wows_assets_bin_path | "" | Path to assets.bin; auto-detected from game_dir if empty |
hull_upgrade | "" | Hull upgrade name substring (e.g. "HullB"); empty = latest |
with_turrets | true | Include turret / mount geometry |
with_textures | true | Apply DDS albedo textures |
max_tex_size | 2048 | Maximum texture dimension in pixels |
lod_level | -1 | LOD level; -1 = auto-select highest triangle count |
exclude_damage | true | Strip damage/crack render sets |
Python 3 and all other dependencies are already linked into wows-geometry.
If you need finer control (custom merge logic, streaming parts, etc.) the building-block functions used internally by wows_stitch_export_ship are also public: wows_stitch_find_hull_geoms, wows_stitch_geom_to_model, wows_stitch_merge_parts, wows_stitch_apply_textures, and the wows_assets_bin_* helpers in inc/wows-assets-bin.h.
To build and run tests with coverage (requires GCC):