mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-07 09:33:51 +00:00
feat(wom): add WOM3 multi-batch format for material-aware models
WOM1/WOM2 had a single mesh with one texture, which lost the multi-submesh structure of complex M2 models (body+hair+eyes+armor each need different textures and blend modes). WOM3 adds a Batch array: each batch has indexStart/indexCount + a textureIndex into texturePaths + blendMode + flags. Loader is fully backward compatible: WOM1/WOM2 files still load, and WOM3 with no batches block falls back to a single full-mesh batch. fromM2 now extracts batches with materials, and toM2 emits matching M2 batches so the renderer can draw them correctly.
This commit is contained in:
parent
00c078a9af
commit
b736c6b2e1
3 changed files with 124 additions and 30 deletions
|
|
@ -20,14 +20,17 @@ Novel file formats for custom WoW zone content. No Blizzard IP.
|
|||
|
||||
## WOM — Wowee Open Model (binary)
|
||||
- Extension: `.wom`
|
||||
- Magic: `WOM1` (0x314D4F57) for static, `WOM2` (0x324D4F57) for animated
|
||||
- Magic: `WOM1` (0x314D4F57) static, `WOM2` (0x324D4F57) animated, `WOM3` (0x334D4F57) multi-batch
|
||||
- Layout: magic(4) + vertCount(4) + indexCount(4) + texCount(4) + bounds(28) + name + vertices + indices + texPaths
|
||||
- WOM1 Vertex: position(vec3) + normal(vec3) + texCoord(vec2) = 32 bytes
|
||||
- WOM2 Vertex: + boneWeights(4) + boneIndices(4) = 40 bytes
|
||||
- WOM2 Bones: boneCount(4) + [keyBoneId(4) + parentBone(2) + pivot(12) + flags(4)] × N
|
||||
- WOM2 Animations: animCount(4) + [id(4) + duration(4) + speed(4) + per-bone keyframes] × N
|
||||
- WOM2/WOM3 Vertex: + boneWeights(4) + boneIndices(4) = 40 bytes
|
||||
- WOM2/WOM3 Bones: boneCount(4) + [keyBoneId(4) + parentBone(2) + pivot(12) + flags(4)] × N
|
||||
- WOM2/WOM3 Animations: animCount(4) + [id(4) + duration(4) + speed(4) + per-bone keyframes] × N
|
||||
- Keyframe: timeMs(4) + translation(12) + rotation(16) + scale(12) = 44 bytes
|
||||
- Backward compatible: WOM1 files load without bone/animation data
|
||||
- WOM3 Batches: batchCount(4) + [indexStart(4) + indexCount(4) + textureIndex(4) + blendMode(2) + flags(2)] × N
|
||||
- WOM3 blendMode: 0=opaque, 1=alpha-test, 2=alpha, 3=add, 4=mod, 5=mod2x, 6=blendAdd, 7=screen
|
||||
- WOM3 flags: bit 0 = unlit, bit 1 = two-sided, bit 2 = no z-write
|
||||
- Backward compatible: WOM1 files load without bone/animation data; WOM3 falls back to single-batch when batches block missing
|
||||
|
||||
## WOB — Wowee Open Building (binary)
|
||||
- Extension: `.wob`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue