mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-07 17:43:51 +00:00
Closes the WOB <-> universal-format round trip, mirroring what --import-obj does for WOM. Workflow now works end-to-end for buildings: asset_extract # WMO -> WOB (open binary) --export-wob-obj # WOB -> OBJ (universal text) ... edit in Blender / MeshLab / Maya ... --import-wob-obj # OBJ -> WOB (back to engine format) --validate-wob # confirm consistency Mapping handles: - Each OBJ 'g name' starts a new WOB group; faces under it become that group's indices. Default 'imported' group catches faces before any 'g' directive (raw OBJ files from non-DCC sources). - Per-group dedupe table on (pos, uv, normal) triples — each WOB group has its own local vertex array, so the global OBJ index pool gets remapped per group. - '_outdoor' suffix stripped + isOutdoor flag set, mirroring --export-wob-obj's naming convention. - Doodad placements recovered from the # doodad ... comment lines --export-wob-obj writes; round-trip preserves them via re-parse. - UV V flipped back (1.0 - v) so the round trip is exact. - Per-group bounds + global bound radius computed from positions. Verified: WOB(2 groups, 7 verts, 3 tris, 1 doodad) -> OBJ -> WOB(2 groups, 7 verts, 3 tris, 1 doodad). validate-wob clean, info-wob shows the same counts. Materials and portals don't survive the OBJ trip (no semantic equivalent) — that's documented. |
||
|---|---|---|
| .. | ||
| asset_extract | ||
| auth_login_probe | ||
| auth_probe | ||
| blp_convert | ||
| dbc_to_csv | ||
| editor | ||
| asset_pipeline_gui.py | ||
| backup_assets.sh | ||
| diff_classic_turtle_opcodes.py | ||
| gen_opcode_registry.py | ||
| generate_ffx_sdk_vk_permutations.sh | ||
| m2_viewer.py | ||
| opcode_map_utils.py | ||
| validate_opcode_maps.py | ||