well, I see, you've got some motivation!
Me, I don't have the time to finish the extraction tool so I'll leave here some H2O files and a short crash course on "How to use them":
BruteForce, use of H2O files explained (more or less)
-----------------------------------------------------
Understand how to use it and don't blame me!
(Please give a feedback on errors, if any, of course!)
Finishing the tool costs me too much time so I'll upload here
some intermediate H2O and log files for objects-m01_b.ivd
which should do the trick, too.
So you'll need objects-m01_b.ivd for this!
------------------------------------------
(Doesn't work for other .ivd files. This should be obvious, but some guys, well...)
The 631 H2O files in the zip are derived from the xbm file, that's why xbm_ is part of their names.
Looking into one of them you'll find a line like this:
0xdb0 3
So, yeah, each of these (first) lines will contain a face indices count of 3.
That's NOT a bug, it's, well, a workaround.
The good news: I'll show how to find the face index counts.
---------------------------------
example (.txt files are in the zip file)
-------
Code: Select all
- load objects-m01_b.ivd into hex2obj
- open "m01b xmb, params-log.txt" in notepad or any other text editor
- lines contain this;
<no of H2O file>, startAddrFIs, vertex count (at) vertex startaddr
- as an example I start with this entry:
504. 1d840, # 207 at 0x15ac74
- load the H2O file "objects-m01_b.xmb_504.h2o" into hex2obj
check for addr 15ac74 and count 207 in the editboxes of step 3
- now for the face indices
1) use 1d840 (address for step 1) for search in m01_b FIs.txt
(which you need to open in notepad, too)
The result is
426. 1d840 480 -> vCnt: 206
(Ignore the 426. It's just for numbering the lines here.)
2) enter the count 480 in hex2obj, step 1 editbox for count
(buttons at the right show 'Strip' and 'noPtC')
3) press Go1 button, scroll down in the lower left list box,
last line says: max face index: 207
4) perfect! Press mesh button - wow, a chair.
Enter 16 for UVpos in step 2.
Use File/SaveAs mesh to export as a wavefront obj file.
(It's point 1) to 4) here, don't confuse it with step 1/ step 3
in hex2obj, btw.)
------------------------------
yeah, now for a weird example, as there are many of them.
(Use the above as a guide in case you lost the overview somehow.)
I'll choose 459. 176c0, # 430 at 0x1144c4 from the ..params-log.txt file.
To speed up the procedure you could switch to 'PtCld' or 'Fake',
then press 'mesh' for a pre check of the object. This one looks uninteresting to me - well, next try:
486. 2d9c8, # 739 at 0x12f6b4
(486. in the ..params-log.txt file is the H2O number, so load that file into hex2obj)
Use 2d9c8 from step 1 (in hex2obj) for the search in m01_b FIs.txt (see point 1) above).
Result is:
Code: Select all
Notepad
---------------------------
Cannot find "2d9c8"
ok, manual search to be done, scroll down in that file 'till
-----------------------------
615. 2d9d4 1706 -> vCnt: 6140
This should be what we're searching for.
It's very important to use both params here, the address 2d9d4 AND the count 1706
(That's because the address is "off" some bytes in objects-m01_b.xmb for some unkn reason.)
Switch back to 'noPtC' in case it isn't active.
Change 2d9c8 to 2d9d4, replace 3 by 1706.
Point 3), see above gives us: max face index: 24573, what?
Reduce 1706 by 10, press Go1 (still wrong max face index)
and again (so 1686 now)
max face index: 739, perfect
Press 'mesh', interesting "wires"
----------------------------------
Attention:
- you may need to swap from 'Strip' to 'no Str' incase the meshviewer shows an ugly object.
- even if all parameters appear to be correct some sub meshes are spoiled for some unknown reason.
.
objects-m01_b.xmb_H2O.zip