Qhimm.com Forums

Miscellaneous Forums => Scripting and Reverse Engineering => Topic started by: Satoh on 2009-01-09 02:02:00

Title: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-01-09 02:02:00
Does anyone have a program or import/export plugin for viewing FF8 PC models?

First off, I have looked... for a long time... even to the point of reading almost every post with FF8 or FFVIII in the title...

I know Qhimm had something at some point, and there was a program on a site link somewhere for the battle models, but the archive is corrupt when I download it, and the previous versions are File not Found...(I think it was a Russian site)

The only links I can find are links to other threads, links to dead downloads, or dead links to other sites...
In short, everything seems dead...

Qhimm, if you're around and read this, I would very much like to know how you ripped the FF8 models and if possible, a link to the tools to do so...

I really don't want to have to learn to read a file format in hex, and then learn to program an exporter myself... (not just for this anyway... not when I know other people have done it already)

Also, I tried extracting them with GardenEight and opening them in Mirex's Biturn(Several versions), but they came out with extremely messed up geometry, and some of the textures were wrong, so I couldn't use that...

Please, I really would like your(anyone's) help.

Thank you for your time.


I should note, that I am going to try decoding files in hex and writing exporters on several other types of files... but I still have a long way to go... and I would much prefer the FF8 models sooner than... 5 years from now... X_x... If it turns out I will need to decode them myself... I suppose it can't be helped... but I already am planning far too many model hacks...

FF9 Battle/Field models (I know there's been some work but I can't find any useful programs/info...)
Megaman Legends 2 PSX models
Metal Gear Solid 3 PS2 models
And a few other games but I'm sure you can tell, I have the next 50 years of my life blown all to hell already =P

(If anyone is interested in those games formats... and happens to know a little about file hex-editing shoot me a message... maybe we can start a project...)
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: FaustWolf on 2009-01-09 20:48:21
I'm not sure if it was Qhimm, halkun, or Cyb who posted pics of some ripped FF8 models a couple years back, but it was done somehow -- I remember seeing a beautiful screenie of the Ifrit summon in a model editor. I imagine the PC version will be tons easier to work with than the PSX version in this regard.

I don't believe the models were ever completely figured out though, or there was otherwise some problem hindering progress. Reminds me that I need to get around to studying the Chrono Cross model animation format, heh heh...
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Vehek on 2009-01-09 23:47:00
A battle model viewer was shown here:
http://forums.qhimm.com/index.php?topic=7524.0

Unfortunately, the version I found tends to put the characters' heads on backward.
I don't really know anything about the format, but the PC battle model format is apparently very similar to the PSX's.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-01-10 00:46:47
Not too worried about a backward head... I'm gonna reanimate them anyway (Mwahahahahaha!!! Necromancy!!)

If this truly works, then you have my great great thanks Vehek.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Vehek on 2009-01-10 01:20:26
It only seems to be a viewer though. No apparent export capability.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-01-10 01:36:01
I'm gonna try to run it through a decompiler as soon as I find info on how they work and where to get a decent one.... hopefully there will be some info on the file structure in there that one of my associates can write a blender script to import.... Faust know's whom I mean...

If nothing else I may have info on the MCH field models.... I'll have to test it when I have my external HDD (which has my FF8 files) connected...

EDIT: Alright, Faust contacted me with this on another forum(Either way, I either missed it or somehow just didn't find it...), and the field model part does in fact work! This may have been posted here or elsewhere, I'm not certain, but as I have fount it to be working, I shall post the pertinent portion!

Quote
Title: Re: Model Enhancement/Reconstruction [FFVIII]
Post by: Alkor on 2008-06-22 15:59:17


1) Download: _http://rapidshare.com/files/124242233/FF8_Edit.7z.html
2) unrar it all
Then
1) Open Garden. Open - Decompile data files - name it. Then wait. When it stop go to:
"ur folder with Garden"\ff8\data\eng\FIELD\model\main_chr

There will be files such us .mch this is battle and field models of main chars.

U can open it with Biturn.

Ok, so the only problem with this, is that there are no NPC characters, only main characters... (as implied) Which means NPC's must be stored in some other file... since this worked so swimmingly, I figure we should focus on Field models for now...

(A note about certain models... Some of the bone info on Rinoa, Seifer, Laguna, Irvine, etc. characters with dangling hair or capes or coats it seems, the bones are a bit off... for me it isn't a huge deal since I can fix the models later.... The main point is that the majority of the verts ARE in the right places.)


My task now, is to figure out where the NPC's are...




Side info on why I want them...
I am in the process of planning a Garden/SeeD MMORPG where each player is a student, and the main FF8 characters are major quest NPCs/Admins
You would get hired(via quest NPC) to go on missions, or (if you are not a SeeD) exams. Occasionally the Training Center might break down and monsters overrun Garden(Mob invasion weekend) Replenish health by sleeping in the dorm... Eat famous hotdogs....
Toward the end of the game, the FF8 tie-in chapters begin, and Squall becomes the new Garden leader, etc...

Also, if I could somehow get the source for Triple Triad Gold, I'd integrate that into the game... Sound like fun? I think so anyway...

Anyway, to even TRY to do this, I would need lots of NPC's, like Cid, Kadowaki, Edea, and lots of random Garden students... (none of which do I have, though I have the FF8 mains in the Galbadian uniforms, so that's a step in the right direction....)

If I discover anything about NPC's I'll report it here, until then, I hope some of you who are reading but not posting will do some research too  :wink: :-D

Thanks again to Faust and Vehek.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Vehek on 2009-01-10 03:00:54
NPCs are stored in chara.one of the field archives (as in the individual locations) or something like that.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-01-10 03:53:09
That's what I thought myself... this isn't the first game I've seen with .ONE's thrown in... however... do we have any way to decompress .one's? Garden doesn't do it from my experience...

I suppose this may be where I unfortunately have to turn to Cygnus....(hex editor) I really hope that isn't the case... :|

Got some people helping out with .DAT decrypting though, so maybe we'll get some progress in that.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: FaustWolf on 2009-01-11 00:29:23
Wowza! :mrgreen:  Just did some some investigation of the FF8 PC (as in Personal Computer version) battle models, which appear to be labeled with the c0mXXX.dat convention, with "XXX" representing the character model number I suppose. I'm going to link to what I believe are three examples of battle models:

http://www.megaupload.com/?d=86TZWUV2
c0m120 would be Raijin's battle model for reference (the dark-skinned guy with the kickass beat-'em-up staff or whatever his weapon is called).

I'll go through what I've found out so far -- halkun probably knows way more because he used FF8 UV maps to teach me how to interpret the Chrono Cross UV Maps to begin with.  :lol:

The model header, read byte-by-byte (sorry, I'm a hexplorer, not a programmer :lol:) appears thus:

Model Header: 0x34 bytes long.


#S #S #S #S S1 S1 S1 S1 - S2 S2 S2 S2 S3 S3 S3 S3
S4 S4 S4 S4 S5 S5 S5 S5 - S6 S6 S6 S6 S7 S7 S7 S7
S8 S8 S8 S8 S9 S9 S9 S9 - SA SA SA SA SB SB SB SB
EF EF EF EF


S1: Section 1 offset relative to header, Unknown
S2: Section 2 offset relative to header, Something suspected of containing a UV Map and Vert Pool
S3: Section 3 offset relative to header, Something suspected of containing a skeleton
S4: Section 4 offset relative to header, Unknown
S5: Section 5 offset relative to header, CAN BE DUPLICATIVE OF S4!? It's slightly possible that it's a UV map too.
S6: Section 6 offset relative to header, Unknown
S7: Section 7 offset relative to header, Unknown, but has an 8-byte header that seems to be an ASCII tag.
S8: Section 8 offset relative to header, Unknown but has a structured subheader.
S9: Section 9 offset relative to header, 8-byte header, then AKAO tag -- sound data!?
SA: Section 10 offset relative to header, leads directly into an AKAO tag or duplicative of SB.
SB: Section 11 offset relative to header, The Texture!!
EF: End of File!

So it appears that the model files themselves contain the texture(s) and also some sound data(!?). What really, really confuses me at the moment with regard to the model file header is that some pointers in the table are duplicative! Apparently, there's enough room for dec11 or 0x0B sections, but not all of them are always used. Sometimes there's a need for two AKAO (sound data) sections, for example, but if not, the slot normally attributed to the second sound section is just given to the texture section. Anyone know what's up with this? Is this a common practice?

I suppose I might as well dump what I know about the last section of the model -- it's a Classic .TIM, and I wouldn't be surprised if you ran it through PSicture and achieved readable results if you stripped off the header. Note that models use a number of 128x128 textures depending on how detailed they are I guess. Raijin uses 2 textures, but there's another model in the linked .RAR that appears to use 5(!!) textures.

Texture format:
Header of (4+#T*4) bytes

#T #T #T #T T1 T1 T1 T1 - T2 T2 T2 T2 ... ...
EF EF EF EF


Where...
 #T = Number of Textures applied to the model.
 T1 = Offset to the first texture relative to the section header
 T2 = Offset to the second texture relative to the section header
 ... etc
 EF = End of File! relative to the section header

Each .TIM seems to be either identical to or extremely reminiscent of what I call a "Classic .TIM" in this Compendium wiki. (http://www.chronocompendium.com/Term/TIM_Textures.html)       

Big thanks to X-Dina for the models; he could provide way more for further investigation, probably.


Since I don't actually own FF8 PC, the best I can do is properly detail the section subheaders, so others will know what to avoid hitting accidently when they try trial-and-error experiments.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Vehek on 2009-01-11 02:57:45
http://forums.qhimm.com/index.php?topic=6961.msg86856#msg86856
Apparently, the PC battle models are identical to the PSX battle models.

I could never get those programs in that thread to work.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: FaustWolf on 2009-01-11 04:38:28
Oh snap. Okay. Yeah, I can test these then, just a matter of nabbing enough free time. :lol: Once I finish some odds and ends from the Chrono Cross model project over at the Chrono Compendium, I'll move straight into this I guess.

Any qhimm regulars interested in helping us with a massive FF8 model project to make these babies viewable once and for all? For one thing, I think we'd need someone to code the model reader/Blender plugin because the person who did that for Chrono Cross is extremely strapped for time.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Cazador on 2009-01-28 11:02:18
I would be happy to help in anyway I could. I don't think I could handle programming the reader but I would be happy to help with the models, I'm not great, but I'm getting it down. Just let me know when you have a program :)
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: koral on 2009-01-28 16:09:34
I thought that the FF8 Battle Models had been fully decoded and understood?

IIRC the FF8 battle data was vastly different from the Field models, and polys appeared to be randomly three or four vertex-constituted. The thing with FF8 was that its bone-skinned character system made it difficult to plot bone orientation without reading in some animation info too.

I could try give a hand and check that battle file Faust posted and see if I can cook up a viewer for it, but no promises  :wink:
Most of my free time gets spent on the Crises-Core data investigation, something I'm determined to help bring into the lime-light a little as it's been ignored for all these years.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-01-29 00:47:31
pardon me, but, years?

It hasn't been out THAT long has it?

Either way, I would love to add any Crisis Core info you have uncovered to my list. I too am interested in the Crisis Core models, but I don't have any way to get the information off the UMD...

I'm also too afraid to replace my PSP's OS... while it may be more powerful if I do... I'm afraid of owning a $120 brick...

If we get any breakthroughs on either VIII or IX, I'd be happy to help you with Crisis Core...
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: koral on 2009-01-29 02:33:42
it certainly seemed like years  :-P (dirge of cerberus anyway, FF8 most definitly)

you don't have to do anything funny with your PSP, or anything at all for that matter.
When the CC viewer eventually manages to load Characters properly you could always ask here for someone to send specific characters to you via pm or email or something (for "personal non-commercial use" ofcourse). Just let me know when the time comes, I'll be happy to oblige  :wink:

but its good to hear from you x-dina, because you've convinced me you're still interested in the FF8 battle model files.
I'll try my best to see what I can do to help :-D
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-01-29 05:23:40
Thanks, any help is greatly appreciated.

If it seems like I don't post, it has nothing to do with loss of interest.

I'm a college student, and I have other obligations aside from that as well. Unfortunate as it is, this has to take back burner a lot...


Wait... there's a CC viewer? Why wasn't I told of this XD!?

Seriously, either I missed some obvious thread or it simply got pushed down before I saw it...

So, does this viewer load characters at all? And if it can, does it export!?  I can always reposition bones so long as the basic vertex assignments are correct...(I am a 3D modeler by trade...)

Speaking of, I noticed in your thread you mentioned textures, are there character textures in some workable format? I'd love to get my hands on even just that...
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: koral on 2009-01-30 23:28:59
I was just wondering, what exactly do you need from the FF8 Battle models? I've done some noseing around and it seems like:

A - it only consists of monsters and bosses (none of the main characters, except the "hypnotised" rinoa)
B - skeleton data will NOT be easy to decipher at all, especially if you consider just how many battle-models there are

So if there's anything in particular you're after, then I could focus on only those models instead.

I'm totally in the same vain as FaustWolf though, that it would be really cool to see both the Field AND the Battle model formats fully understood and documented (just for the sake of completeness), but the way the data is so spaced out, unless there really was a NEED for all the understanding (mods etc) it really isn't worth the time.

Its quite a dated game, and although i love it to bits (rinoa's one of my all time favs) it really isn't worth squandering over the Battle model data considering that the main characters and NPCs are located elsewhere.

I've an open mind though, so if anyone can convince me otherwise then I might reconsider  :wink:

Oh, and that CC-File-Viewer is something i cooked up whilst trying to understand all those raw data files.
It can only view Textures so far, I will add an export option in the next release (due to popular demand) but I can already export out the textures for myself.
If there's anything in particular you need just let me know, "I'll be here..."  :lol:
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: mirex on 2009-02-03 12:45:22
Hi, I'll add what I know.

- there is no specification of FF8 model format. Neither in-battle nor in-field(map) models.

- there have been some tries to decode FF8 format but with no final result. There were some viewers but no exporter.

- someone called "Kvaks" has created a "FF8 battle model viewer" or "Gerakl character editor", it was published at site kvaks.narod.ru. Site is still up, but viewer links are down. I have downloaded it back then, so here it is ( not original but smaller version of archive, original contained lots of models but it was 16mb, so I have removed most of models and now its 600kb to download ) : http://mirror.mypage.sk/kvaks.narod.ru/dir.php . It can view models and animate them. No export possibility. Author did not reply my e-mails back then.

- because there is no known specification, Biturn can't view most of ff8 models. It can read field models but with incorrect bone setup and no animation. It can read some things from battle models, but not much, usually only textures, few polygons, one object and rest is mess.

- Qhimm showed some screenshots but haven't released any program or specs so far

- if you'll be able to decode ff8 files I'll be happy to add ability to read it into Biturn, so it can be exported to various other formats. It will take some time as I'm busy with other projects. I think I have published all I know about the both battle and field 3D model formats in the forum threads below. If not and you're willing to continue on working on the formats post me a Personal Message and I'll sum you up all my info.

Some more reading (which I already posted in other threads):

http://ffab.mypage.sk/viewtopic.php?t=34 "ff8 mch file"
http://forums.qhimm.com/index.php?topic=2518.0 "Cracking" FFVIII model data"
http://forums.qhimm.com/index.php?topic=3694.0 "FF8 3D battle models update"
http://forums.qhimm.com/index.php?topic=4797.0 "ff8 models"
http://forums.qhimm.com/index.php?topic=5586.0 "Final Fantasy VIII Model Switcher?"
http://forums.qhimm.com/index.php?topic=6354.0 "FF8 model progress"
http://forums.qhimm.com/index.php?topic=6961.0 "FF8 Field Models"
http://forums.qhimm.com/index.php?topic=7524.0 "FF8 Models?"
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: koral on 2009-02-03 15:38:05
you're doing it just to annoy me, aren't you mirex?  :-P

Quimms post was basically the Holy Grail of the [MCH] FF8-Field Model specification:

Pretty much all of the main characters have their own .mch files which are referenced in the actual field data files (rather than having to include the entire model in each field it's used). Other character models reside in the chara.one files found in the field files. Also, all animation data resides in the chara.one files, even for main character models. The animation data (found in the beginning of each model block in the chara.one files) is pretty much the only part of the model format that still eludes me; I have decoded the vertex data, face data, skeleton data and texture mapping data. Once I've understood the format of the animation data, I might compile a document on it, or write a small program to read the models. (just pleeease don't bug me about it ;) )

Until then, here's a basic layout on the .mch files:
  • Index block, 64 DWORDs. Contains the offsets of each texture in the file, then a 0xFFFFFFFF, then the offset of the model data.
  • Texture data. Standard TIM format.
  • Model data header, 8+8 DWORDs. Contains counts and offsets of different types of model data (skeletal joints, vertices, unknown, faces, unknown, vertex-to-bone links, 3 x unknown).
  • Skeletal joint data. 64-byte blocks of mostly zeros, contains a 1-based parent index and a bone length value. Probably a bunch of skeletal deformation data used in-game, but whose values are initially stored as zeros.
  • Vertices. Blocks of 4 shorts, the first three being x-, y- and z-coordinates and the fourth unused.
  • Faces. Huge blocks containing vertex indices, color data (unused), edge data (I think), texture mapping data and texture ID. Faces can be 3-point or 4-point polygons, decided by the first DWORD (actually it's a PSX GPU command ID).
  • Vertex groups, or "limbs". These decide which vertices are connected to which skeletal node. Groups of 4 shorts, with the index of the first vertex, the number of vertices and the bone ID (1-based) to which they belong.
Teaser image of a decapitated Squall
[/list]
Side notes: The animation data somehow stores the internal rotations for the model's skeletal nodes using 4 bytes per node. I'm speculating that the format would be one which a PSX could handle, in line with the lazy programmers theorem. Any ideas?

Also, the battle model format is vastly different from the normal field model format. I haven't even been able to find any vertex data in it, I'm almost suspecting it's compressed or something.

BitTurn didn't show anyone properly except Cloud and Zack, so thanks to quimm, I was able to make my own viewer and see what Rinny really looked like in FF8:

File: d024.mch = low-poly rinoa in blue-dress
(http://img523.imageshack.us/img523/8127/rin2hu0.th.jpg) (http://img523.imageshack.us/my.php?image=rin2hu0.jpg)
(quite blocky and definitly low-LOD, never meant to be seen close-up like this)

File: 0d25.mch = high-poly rinoa in blue-dress
(http://img237.imageshack.us/img237/2366/rin1nt5.th.jpg) (http://img237.imageshack.us/my.php?image=rin1nt5.jpg)
( better, but her neck came out wrong thanks to experimental bone rotations)

My programming skills were even more rusty in those days so I couldn't get alpha to show up, but other than that everything was there in place. But I left it at that because I really didn't care as much about the other characters :-P

The biggest issue was (and still is) that the bone-rotation data isn't in the MCH file. If only those rotations could be found, then these MCH Field-Models would be practically perfectly viewable and documented. I think quimm hinted that the animation data is inside the chara.one files, so it shouldn't be too difficult to wade through.


Battle models are another can of worms, but I believe the bone-rotations are there in those DAT files otherwise that "Battle-Model-Viewer" wouldn't have been able to show as many models as it does.
I'd be happy to try look for it, especially now that you have openly declared yourself again to the "long-forgotten cause for FF8 model viewing".

CC has my priority though, the FF7 universe is far more intriguing to me than FF8 :lol:
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: mirex on 2009-02-05 14:40:06
Hi Koral, sorry about the misunderstanding, I have forgotten few things from back then. I did not want to offend anyone if that happened. Now I see that Qhimm did post quite a specification for field models.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: koral on 2009-02-05 15:44:59
mirex you have no reason to apologise!  :?

It was joking when I said I was "annoyed", because you just brought to our attention again the fact that FF8 is really not very well documented anywhere.
Even quimm's post isn't very easy to find, so there's no doubt people would naturally miss it and assume it wasn't documented at all.
You just forgot, who would be offended by that?  :wink:


I'm not sure if this is the best place to ask, but I will anyway:

will you (ever) work on Biturn again?
It would be cool if it could view some of the Crises-Core files, but you did say you were strapped for time so its no biggie really.

Its just that I don't think my CC-File-Viewer viewer is the "best" file-viewer in the world  :oops:
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: mirex on 2009-02-06 10:36:09
Ah, then I take my apology back  :-P . I'm still getting a little confused by language barrier, you know.

With Biturn its like I don't plan to work on it, at least not in 2009. But if there would be someone who wants Biturn to read/write some data and that making it work would not take me long time ( there would be precise specifications and enough test data ) then I would gladly update Biturn.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-02-07 18:38:47
Aha! I missed stuff while I was in the Bahamas...

As for the FF8 models, the MCH is indeed field models for characters... Squall's has ALMOST perfect bone rotation in Biturn, (a few problems with shoulders, but easily corrected...

The problem in Biturn is that all of the assumed bone rotations are the same, so it tries to rotate the bones for Seifer into the same orientation as Squall, however, Seifer has more bones than Squall, and they are numbered differently... Causing a catastrophic mess...

Zell, however, has one less, so his bones also come out near perfect.

The c0m prefixed files are all enemies/enemy weapons (Seifer and his Hyperion gunblade are separate files.) The d#w and d#c prefixed files are weapons and characters respectively. (the # stands for sequential numbering, w apparently 'weapon,' c apparently 'character')

All of the models are in there, but only the enemy models load in kvaks' "editor"... occasionally I can load Squall or the gunblade, but with no textures.... otherwise it simply crashes...

If we could decompile that "editor" we could fix it seemingly easily... the only problems with it are A it loads all bone rotations backwards (which is why the hands, feet, and heads look backwards. It is in fact, all of the bones.



As for what I need of the battle models... I really only need to be able to export the geometry and texture mapping... if I can export the geometry properly, then I can apply my own skeleton... however, if I could export the geometry with the skeleton still mapped and weighted, the bone rotations wouldn't be important. I can fix the rotations in Maya, provided the bones are all weighted correctly.

As for the general populace, I would hope to eventually have proper animations/textures/bones/etc... but... whatever we get is what we will work with for now...

So, you have a model viewer for crisis core already? I don't care how crude it is, could I see a screenshot...? Or did you mean something else when you said file viewer?
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: koral on 2009-02-07 21:56:45
bahamas... wow...  :-)

I'm still struggling with the CC character geometry, but various kinds of textures are viewable and can be exported.
http://forums.qhimm.com/index.php?topic=8163.0
(I can't believe you didn't notice it  :-P)

I've been documenting all my findings in the first post there, so as soon as I can solve the character-mesh format, there should be enough of a specification for mirex to maybe add in support for them into Biturn (*fingers crossed*)
This is the post which summarises best what I've so far acomplished and what I have yet to do: http://forums.qhimm.com/index.php?topic=8163.msg98757#msg98757


Now, onto FF8

I didn't realise that character battle data were also present, because it now gives me new motivation to try pull the Rinoa battle-model out too! Everything else would probably follow :-D

Bones are the biggest problem, for both battle and field models.
If only we knew where and how the bone-rotation data for MCH files were stored, then it would be easy for either mirex or myself (or anyone else interested) to make those characters perfectly displayed and export-able.

I'd prefer to start from "scratch" rather than try decompile anything  :-P
mirex has posted a bunch of useful links and FaustWolf's post above is handy enough.

Could you tell me which battle files would be worth me starting with?
I have FF8 on my PC so its not a problem with the data, but I don't really have any idea which file is supposed to be who, and I prefer not to stare at ugly monsters while trying to render them  :wink:
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-02-07 22:23:25
Having just now looked over your viewer... I'm very tempted to switch over to CCFF7 now... I wouldn't be disappointing anyone if I did that, now would I? *glances around*

Sorry, I just got back and don't have patience right off to read through all of it, but I'm guessing your machine enemies work because they have no bones/no bone geometry deformation...(Also I'm way too tired to try to make sense of offsets and such right now...)

It may not be the "Best program in the world" but as far as I'm aware it IS the best Crisis Core model viewer around. Unless there's another kvaks out there I don't think you've got much competition...

I didn't, however, see a download link<- Bah, I missed the first line XP... I'ma look over it again... in truth just having the textures that you've obviously succeeded in getting would make me a happy little model-thief(as in ripping... don't take that wrong...) for a good while.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Lucleonhart on 2009-02-08 12:59:34
Well,i think i am the only person here which would love the ff8 model viewer more than anything from ff7... jeah, shame on me. *g*
So keep on the good work! :)
Hope any body will be capable to "repair" Kvaks program, to get that fully working... :(
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: JWP on 2009-02-15 00:37:53
I started to have another look at the FF8 battle models yesterday, I've nearly re-coded my extractor for the PSX .dat models.
It's fully working but I'm still working on the directory parsing code. I'll release the source code and a .exe when it's done.

I also had a look at the geometry data again and I'm pretty close to getting all the data sorted out thanks to the battle model viewer.
I've basically found out the structure of the geometry (how to get all the triangle/quad structures) and where the texture coords are, I've just got to figure out the rest of the values.

Also here's a log from my PSX extractor which shows the .dat file offsets in the PAL version of the file FF8DISC1.IMG
at the moment it only finds the monster files but I'll see what I can do about finding the weapon models.
EDIT: managed to extract some more files and updated log.

File found at offset 0D82C000-0D832038  name: Dummy
File found at offset 0D832800-0D84FA20  name: GIM52A
File found at offset 0D850000-0D867938  name: Blobra
File found at offset 0D868000-0D8832C0  name: Thrustaevis
File found at offset 0D883800-0D895308  name: Geezard
File found at offset 0D895800-0D8A6CF8  name: Belhelmel
File found at offset 0D8A7000-0D8BDB24  name: Glacial Eye
File found at offset 0D8BE000-0D8D4614  name: SAM08G
File found at offset 0D8D4800-0D8EB710  name: GIM47N
File found at offset 0D8EB800-0D903C58  name: Mesmerize
File found at offset 0D904000-0D916AEC  name: Buel
File found at offset 0D917000-0D9342A8  name: Sphinxaur
File found at offset 0D934800-0D951A08  name: Sphinxara
File found at offset 0D952000-0D96B15C  name: Snow Lion
File found at offset 0D96B800-0D980880  name: Anacondaur
File found at offset 0D981000-0D9997EC  name: Grat
File found at offset 0D999800-0D9B3390  name: Cockatrice
File found at offset 0D9B3800-0D9CE2D4  name: Caterchipillar
File found at offset 0D9CE800-0D9DCA68  name: Red Bat
File found at offset 0D9DD000-0D9F7EA8  name: Blitz
File found at offset 0D9F8000-0DA0F80C  name: Fastitocalon
File found at offset 0DA10000-0DA203C8  name: Fastitocalon
File found at offset 0DA20800-0DA35798  name: Gesper
File found at offset 0DA35800-0DA4BC88  name: Creeps
File found at offset 0DA4C000-0DA6EEA4  name: Hexadragon
File found at offset 0DA6F000-0DA87AB0  name: Blood Soul
File found at offset 0DA88000-0DAA2B9C  name: Elastoid
File found at offset 0DAA3000-0DABD288  name: Armadodo
File found at offset 0DABD800-0DACD4F4  name: Bite Bug
File found at offset 0DACD800-0DAE39F0  name: Jelleye
File found at offset 0DAE4000-0DB0A014  name: Tri-Point
File found at offset 0DB0A800-0DB1C06C  name: Turtapod
File found at offset 0DB1C800-0DB344A0  name: Wendigo
File found at offset 0DB34800-0DB4B854  name: Gayla
File found at offset 0DB4C000-0DB77214  name: Gerogero
File found at offset 0DB77800-0DB98E8C  name: Death Claw
File found at offset 0DB99000-0DBB9B4C  name: Tri-Face
File found at offset 0DBBA000-0DBD768C  name: Grand Mantis
File found at offset 0DBD7800-0DBF45A0  name: Krysta
File found at offset 0DBF4800-0DC0435C  name: Lefty
File found at offset 0DC04800-0DC14AF4  name: Righty
File found at offset 0DC15000-0DC3C4EC  name: Blue Dragon
File found at offset 0DC3C800-0DC5A554  name: Forbidden
File found at offset 0DC5A800-0DC6CC8C  name: Bomb
File found at offset 0DC6D000-0DC95B4C  name: Abyss Worm
File found at offset 0DC96000-0DCBDAA0  name: Ochu
File found at offset 0DCBE000-0DCD9940  name: Adamantoise
File found at offset 0DCDA000-0DD01254  name: Chimera
File found at offset 0DD01800-0DD1E3D8  name: Malboro
File found at offset 0DD1E800-0DD4125C  name: Iron Giant
File found at offset 0DD41800-0DD63CD0  name: Behemoth
File found at offset 0DD64000-0DD85374  name: T-Rexaur
File found at offset 0DD85800-0DDADD98  name: Ruby Dragon
File found at offset 0DDAE000-0DDCA7A8  name: Grendel
File found at offset 0DDCA800-0DDD8BF8  name: Vysage
File found at offset 0DDD9000-0DDE4E40  name: Cactuar
File found at offset 0DDE5000-0DDFE318  name: Tonberry
File found at offset 0DDFE800-0DE1D640  name: Torama
File found at offset 0DE1D800-0DE33318  name: Funguar
File found at offset 0DE33800-0DE4B81C  name: Imp
File found at offset 0DE4C000-0DE5EE94  name: PuPu
File found at offset 0DE5F000-0DE7D0D4  name: Ifrit
File found at offset 0DE7D800-0DE97988  name: Minotaur
File found at offset 0DE98000-0DEB1554  name: Sacred
File found at offset 0DEB1800-0DEC46A0  name: Base Leader
File found at offset 0DEC4800-0DEEBEE0  name: Cerberus
File found at offset 0DEEC000-0DF1947C  name: Diablos
File found at offset 0DF19800-0DF48A38  name: Bahamut
File found at offset 0DF49000-0DF58DA8  name: NORG Pod
File found at offset 0DF59000-0DF60380  name: Garden Faculty
File found at offset 0DF60800-0DF92714  name: Odin
File found at offset 0DF92800-0DF9EC38  name: G-Soldier
File found at offset 0DF9F000-0DFB1EA8  name: Elite Soldier
File found at offset 0DFB2000-0DFBE5F8  name: Wedge
File found at offset 0DFBE800-0DFD1654  name: Biggs
File found at offset 0DFD1800-0DFEB498  name: Fake President
File found at offset 0DFEB800-0DFF7C0C  name: Guard
File found at offset 0DFF8000-0E017ED4  name: NORG
File found at offset 0E018000-0E028AFC  name: Esthar Soldier
File found at offset 0E029000-0E040600  name: Esthar Soldier
File found at offset 0E040800-0E0451FC  name: Right Orb
File found at offset 0E045800-0E04A1FC  name: Left Orb
File found at offset 0E04A800-0E053840  name: Gunblade
File found at offset 0E054000-0E079BB8  name: Tonberry King
File found at offset 0E07A000-0E09701C  name: Jumbo Cactuar
File found at offset 0E097800-0E0AA13C  name: Seifer
File found at offset 0E0AA800-0E0BDE08  name: Seifer
File found at offset 0E0BE000-0E0CFD90  name: Seifer
File found at offset 0E0D0000-0E0EB4EC  name: Edea
File found at offset 0E0EB800-0E11BF60  name: Propagator
File found at offset 0E11C000-0E15B740  name: Ultima Weapon
File found at offset 0E15B800-0E18C640  name: Elvoret
File found at offset 0E18C800-0E1B8DB8  name: X-ATM092
File found at offset 0E1B9000-0E1D5170  name: Iguion
File found at offset 0E1D5800-0E1FED24  name: Gargantua
File found at offset 0E1FF000-0E226DA4  name: Granaldo
File found at offset 0E227000-0E23CF9C  name: Raldo
File found at offset 0E23D000-0E26D760  name: Propagator
File found at offset 0E26D800-0E29DF60  name: Propagator
File found at offset 0E29E000-0E2C2F7C  name: Oilboyle
File found at offset 0E2C3000-0E2DDEDC  name: Edea
File found at offset 0E2DE000-0E30D290  name: BGH251F2
File found at offset 0E30D800-0E339370  name: BGH251F2
File found at offset 0E339800-0E368254  name: Abadon
File found at offset 0E368800-0E37828C  name: Abadon
File found at offset 0E378800-0E394390  name: Mobile Type 8
File found at offset 0E394800-0E3A17EC  name: Left Probe
File found at offset 0E3A1800-0E3AE89C  name: Right Probe
File found at offset 0E3AF000-0E3BB414  name: Paratrooper
File found at offset 0E3BB800-0E3DE438  name: Trauma
File found at offset 0E3DE800-0E3F1354  name: Droma
File found at offset 0E3F1800-0E421F60  name: Propagator
File found at offset 0E422000-0E45A9A0  name: Adel
File found at offset 0E45B000-0E46507C  name: Rinoa
File found at offset 0E465800-0E4AA080  name: Omega Weapon
File found at offset 0E4AA800-0E4C84A8  name: "Sorceress"
File found at offset 0E4C8800-0E4EC00C  name: "Sorceress"
File found at offset 0E4EC800-0E528890  name: "Sorceress"
File found at offset 0E529000-0E5389E8  name: UFO?
File found at offset 0E539000-0E54E510  name: Fujin
File found at offset 0E54E800-0E567580  name: Raijin
File found at offset 0E567800-0E5A2430  name: Ultimecia
File found at offset 0E5A2800-0E5E36D8  name: Griever
File found at offset 0E5E3800-0E5E83E0  name: 
File found at offset 0E5E8800-0E62D700  name: Ultimecia
File found at offset 0E62D800-0E632470  name: Helix
File found at offset 0E632800-0E67624C  name: Ultimecia
File found at offset 0E676000-0E676008, parts: 0
File found at offset 0E676800-0E6769CC, parts: 2
File found at offset 0E677000-0E68CDA0  name: Seifer
File found at offset 0E68D000-0E69DBA4  name: Slapper
File found at offset 0E69E000-0E6C367C  name: Red Giant
File found at offset 0E6C3800-0E6F4CF8  name: Elnoyle
File found at offset 0E6F5000-0E726B88  name: Tiamat
File found at offset 0E727000-0E74B574  name: Catoblepas
File found at offset 0E74B800-0E757CCC  name: Wedge
File found at offset 0E758000-0E76ACF4  name: Biggs
File found at offset 0E76B000-0E78046C  name: Fujin
File found at offset 0E780800-0E799650  name: Raijin
File found at offset 0E799800-0E7AEE4C  name: UFO?
File found at offset 0E7AF000-0E7C4FE0  name: UFO?
File found at offset 0E7C5000-0E7DAC00  name: UFO?
File found at offset 0E7DB000-0E7EF8A0  name: UFO?
File found at offset 0E7F0000-0E7F9190  name: Gunblade
File found at offset 0E7F9800-0E805C6C  name: Base Soldier
File found at offset 0E806000-0E8195B4, parts: 7
File found at offset 0E819800-0E82CC40, parts: 7
File found at offset 0E82D000-0E8362FC, parts: 8
File found at offset 0E836800-0E83FD8C, parts: 8
File found at offset 0E840000-0E849BE8, parts: 8
File found at offset 0E84A000-0E853E78, parts: 8
File found at offset 0E854000-0E85DC18, parts: 8
File found at offset 0E85E000-0E867EA8, parts: 8
File found at offset 0E868000-0E871B34, parts: 8
File found at offset 0E872000-0E8860A8, parts: 7
File found at offset 0E886800-0E89A740, parts: 7
File found at offset 0E89A800-0E8A29EC, parts: 5
File found at offset 0E8A3000-0E8AB1EC, parts: 5
File found at offset 0E8AB800-0E8B39EC, parts: 5
File found at offset 0E8B4000-0E8BC1EC, parts: 5
File found at offset 0E8BC800-0E8D2468, parts: 7
File found at offset 0E8D2800-0E8DAB00, parts: 8
File found at offset 0E8DB000-0E8E36D0, parts: 8
File found at offset 0E8E3800-0E8EBF38, parts: 8
File found at offset 0E8EC000-0E8F46CC, parts: 8
File found at offset 0E8F4800-0E908B6C, parts: 7
File found at offset 0E909000-0E913058, parts: 8
File found at offset 0E913800-0E91D968, parts: 8
File found at offset 0E91E000-0E928138, parts: 8
File found at offset 0E928800-0E932908, parts: 8
File found at offset 0E933000-0E948E04, parts: 7
File found at offset 0E949000-0E9518B0, parts: 8
File found at offset 0E952000-0E95A9A8, parts: 8
File found at offset 0E95B000-0E9639E4, parts: 8
File found at offset 0E964000-0E96C9D0, parts: 8
File found at offset 0E96D000-0E9759E0, parts: 8
File found at offset 0E976000-0E98900C, parts: 7
File found at offset 0E989800-0E99C724, parts: 7
File found at offset 0E99C800-0E9A7790, parts: 8
File found at offset 0E9A7800-0E9B29AC, parts: 8
File found at offset 0E9B3000-0E9BE120, parts: 8
File found at offset 0E9BE800-0E9C9974, parts: 8
File found at offset 0E9CA000-0E9DF6F0, parts: 7
File found at offset 0E9DF800-0E9E85B8, parts: 8
File found at offset 0E9E8800-0EA05EE0, parts: 10
File found at offset 0EA06000-0EA1AD88, parts: 7
File found at offset 0EA1B000-0EA2FF74, parts: 7
File found at offset 0EA30000-0EA389EC, parts: 8
File found at offset 0EA39000-0EA4EF94, parts: 7
File found at offset 0EA4F000-0EA6509C, parts: 7
File found at offset 0EA65800-0EA6D2EC, parts: 5
File found at offset 0EA6D800-0EA82378, parts: 7
File found at offset 0EA82800-0EA972C0, parts: 7
File found at offset 0EA97800-0EAA04DC, parts: 8
File found at offset 0EC00000-0EC213C8, parts: 2
File found at offset 0ECAC800-0ECBB4AC, parts: 4
File found at offset 0EE5B800-0EE60890, parts: 4
File found at offset 0EEDB000-0EEE53C0, parts: 4
File found at offset 0F01B800-0F0297A8, parts: 4
File found at offset 0F074000-0F087730, parts: 4
File found at offset 0F0C8800-0F0D6414, parts: 4
File found at offset 0F5AD800-0F5BE304, parts: 4
File found at offset 0F665800-0F678348, parts: 4
File found at offset 0F6BA800-0F6CAB00, parts: 4
File found at offset 0F75B800-0F76FEE0, parts: 4
File found at offset 0F7A9800-0F7ACB1C, parts: 4
File found at offset 0F7C6800-0F7CDFE0, parts: 4
File found at offset 0F7F7000-0F7F879C, parts: 4
File found at offset 0F805000-0F8115A0, parts: 4
File found at offset 0FA5C800-0FA8484C, parts: 8
Found 143 Monster models.
Found 67 Unknown models.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: FaustWolf on 2009-02-15 18:38:14
Whoa, huge thanks JWP! Since I'm still dedicated to the Chrono Cross model project over at the Chrono Compendium for awhile, I'm going to reproduce what you wrote in a PM to me so everyone can see it:

Quote from: JWP
This is what I've managed to gather so far:

S1: Skeleton
S2: Geometry
S3: Animation (there's a subheader with no. frames)
S4: Unknown
S5: Unknown
S6: Unknown
S7: Monster Info section (I decoded a lot of this, see below)
S8: Suspected of being some sort of Battle Script (it contains text that's displayed in the battle)
S9: Some sort of sound data
SA: Some sort of sound data
SB: Texture

By the way, I believe that the duplicate pointers are because a section is unused (ie. zero length) so the section after ends up with the same pointer.


struct Item {
   BYTE id;
   BYTE amount;
};

struct Action {
   BYTE type; //??? 0x02 = generic magic
   BYTE animscript; //???
   BYTE id; //???
   BYTE unk;
};

struct MonsterInfo {
   char name[24]; //FF8 encoded - length might be less than this

   BYTE HP[4]; //HP = (HP[0]*x*x)/20 + (HP[0] + 100*HP[2])*x + 10*HP[1] + 1000*HP[3], where x = monster lvl
   BYTE unk0[24];

   Action RosterL[16];
   Action RosterM[16];
   Action RosterH[16];

   BYTE Unk1[4];

   BYTE Card[3]; //1st Byte = Card Drop, 2nd Byte = Carded into, 3rd Byte = Rarely Carded into, 0xFF = no drop/can't card
   BYTE Devour[3]; //Low, Med and High lvl Devour effect id's

   BYTE unk2[6];

   USHORT LowLvlDraw[4];
   USHORT MedLvlDraw[4];
   USHORT HighLvlDraw[4];

   Item LowLvlMug[2];
   Item LowLvlRMug[2];
   Item MedLvlMug[2];
   Item MedLvlRMug[2];
   Item HighLvlMug[2];
   Item HighLvlRMug[2];

   Item LowLvlDrop[2];
   Item LowLvlRDrop[2];
   Item MedLvlDrop[2];
   Item MedLvlRDrop[2];
   Item HighLvlDrop[2];
   Item HighLvlRDrop[2];

   BYTE unk3[20];

   BYTE ElemRes[8]; //These are how resistant the monster is to each element 0 = very weak
               //0 - Fire
               //1 - Ice
               //2 - Thunder
               //3 - Earth
               //4 - Poison
               //5 - Wind
               //6 - Water
               //7 - Holy
   BYTE StatusRes[20]; //Status resistances 0xFF = immune
               //0 - Death
               //1 - Poison
               //2 - Petrify
               //3 - Darkness
               //4 - Silence
               //5 - Beserk
               //6 - Zombie
               //7 - Sleep
               //8 - Haste
               //9 - Slow
               //10 - Stop
               //11 - Regen
               //12 - Reflect
               //13 - Doom (red timer) - command/doomtrain
               //14 - Slow Petrify? (white timer) - cast using doomtrain
               //15 - Float
               //16 - Confuse
               //17 - Drain
               //18 - Huh
               //19 - Huh
};
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: koral on 2009-02-16 19:26:46
wow, thanks a lot JWP and FaustWolf!  :-D
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: JWP on 2009-02-16 23:58:13
I'm going to release my dat reader, it's a bit buggy with the directories but it definately works for the PAL version of FF8, it should work on NTSC though. Let me know if you get any problems.
It works on the .IMG file on the root of the FF8 disk.

windows binary:
http://bin.mypage.sk/FILES/datread.exe (http://bin.mypage.sk/FILES/datread.exe)

source:
http://bin.mypage.sk/FILES/main.c (http://bin.mypage.sk/FILES/main.c)

note: it compiles on linux but I have no idea if it actually works.

usage:     datread.exe img outputdir [log]
eg.         datread.exe "C:\FF8DISK1.IMG" "C:\output\" "C:\logfile.txt"

THE OUTPUT DIRECTORY AND THE DIRECTORY THE LOG IS IN MUST EXIST (didn't really want to spend too much time fixing this issue so I left it as-is)

Feel free to modify the source any way you want but at least give me credit.
Thanks to Qhimm for the FF8 character encoding.

The output of the program is a separate directory for each dat file and within the dir, the whole .dat file and each of the separate parts of it (makes it easier to analyze), for the monsters, the animation section is also split up and placed in the /Animations dir.

EDIT: I've managed to view the geometry for 2 simple .dat models (080 (Right Orb)) and model 123 (which is the orb during Ultimecia's transform) all I need now is the bone rotation data from the animation and I should be able to view most of the models.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: JWP on 2009-02-22 18:54:42
Here's a basic outline of the geometry stored in the .dat (section 3 of the monster files) files for those that are interested:

the section starts with a list of groups:

LONG                                num_groups
LONG*num_groups             group_offsets

each group has this structure:
SHORT                              num_bones
{
    SHORT                          bone_id
    SHORT                          num_verts
    SHORT[3]*numverts       verts
} * num_bones
SHORT                              num_triangles (32 bit aligned, so when pointer reaches the address at end of bone structure do (pointer + 3) & 0xFFFFFFFC
SHORT                              num quads
--8 NULL BYTES--
{
    SHORT                          verts[3]
    SHORT                          UVcoord
    SHORT                          UVcoord1
    SHORT                          unk
    SHORT                          UVcoord2
    SHORT                          unk1
} * num_triangles
{
    SHORT                          verts[4];
    SHORT                          UVcoord1
    SHORT                          unk
    SHORT                          UVcoord2
    SHORT                          unk1
    SHORT                          UVcoord3
    SHORT                          UVcoord4
} * num_quads


skeleton data is discussed in this topic: http://forums.qhimm.com/index.php?topic=2518.0 (http://forums.qhimm.com/index.php?topic=2518.0)
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: G3nius on 2009-03-03 09:19:47
Hi all!
Recently I started to disassemble graphical part of FF8.exe (patch v1.2, PC version as you can see) at address 0x00446000 and founded the following:

1. function receives pointer to a buffer with data, pointer to an index buffer and index buffer size
2. data contains 0x20 bytes blocks with the following structure:

offs  length  type           comments
0x00   0x0c   GL_FLOAT[3]   xyz vertex coordinates
0x0c   0x04      unknown    I think, deprecated field that used with glVertexPointer and first parameter equal 0x04
0x10   0x04   GL_UNSIGNED_BYTE[4]   color
0x14   0x0c      unknown I haven't any idea about it
0x18   0x08   GL_FLOAT[2]   uv texture coordinates


I hope this will help you with researching of unknown parameters in models structure. Disassemly text you can find here: http://viiigine.com/downloads.php (http://viiigine.com/downloads.php)
Of course, I'll be happy if someone helps me in reversing & engine redevelopment.

PS I think KVaks reversed code that fill buffers
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Ultimecia on 2009-03-19 08:59:17
Hi there, I'm also trying to rip FFVIII stuff, but I'm only interested in textures for the time being.
I just managed to rip the chara.one file, and it contains only 16 images within it, according to two different programs: Bitmap Rip (http://mark0.net/soft-bitmaprip-e.html) and PSIcture. All of them looks like world map stuff

000- A very small Squall head
001- Yet another insanely small Squall, but this time it's his body
002- Small Ragnarok piece
003- Small Ragnarok 2
004- Ragnarok?
005- Yet more Ragnarok
006- No idea what it is
007- Small chocobo
008- Duplicate of #006
009- Duplicate of #007
010- Duplicate of #000
011- Squall's Garden uniform
012- Zell tiny little head
013- Zell's body
014- Selphie's body
015- Selphie's head

I'm looking for the NPCs textures, any clue yet?
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-03-20 05:04:40
we've had some progress with deciphering the models in chara.one or rather... Myrex did a while back,

I forget the process to decompress it, but you can actually view the models in it from biturn.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: koral on 2009-05-24 22:33:30
Um, I hope this wont be considered a necropost, but IMO this is the best place to discuss about FF8 models because of the large amounts of known information and links which have previously been posted here  :|

I have started to Wikify the MCH format specs onto the Wiki here: http://wiki.qhimm.com/FF8/FileFormat_MCH

There does seem to be a whole lot of (unknowns) interdispersed within each Model-data chunk, and possibly after it too, so there is still hope that initial bone rotations may be present within these MCH files.

I intend to unravel this mystery once and for all, and any help would be appreciated!  :-D
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Vehek on 2009-05-25 04:15:19
My guess on how the chara.one files work. Might be incorrect because I didn't do any disassembly or testing in-game.

Code: (Chara.one Header Hypothesis) [Select]
0x00: Number of PC and NPC models (32-bit). Might not count for calculating offsets.
0x04: First model's header (detailed below)

PC Model chara.one header:
0x00: Pointer to animation data? (32-bit)
0x04: Size of the animation data or whatever it is. (32-bit)
0x08: Size again.
0x0C: MCH number? (32-bit? Upper 16-bits might determine whether header refers to PC or NPC)
0x10: 4 bytes
0x14: MCH name? Not sure if used. (4 bytes)
0x18: 4 unknown bytes

NPC header:
0x00: Pointer to first TIM (32-bit)
0x04: Size of TIM & Model data (32-bit)
0x08: Size again.
0x10: MCH-type header possibly starts here. Offsets are relative to the TIM image.
After the model data pointer: 8 unknown bytes.

Both types usually end with the hex bytes "EE EE EE EE" after the unknown bytes, though there may be exceptions.

Edit: The next to last section (the section pointed to by the DWORD at 0x38 of the model data header) of the MCH model data looks similar to what I guessed to be the animation data in the chara.one files. So that might be the pose information.

Code: (Animation Section hypothesis) [Select]
Section Header:
WORD Number of animations

Animation Header:
WORD Number of frames
WORD Number of joints (Koral labeled them bones.)

In that old thread, Qhimm said the animations were stored using 4 bytes per node. By counting I think there might also be an additional 6 bytes per frame, but I'm not absolutely sure.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: koral on 2009-05-29 22:16:31
Thankyou for your input Vehek, I will look into that last section in MCH files pronto  :-)

Joints, bones, same thing  :-D
But I will rename everything to joints, because that is what they are technically. I just find them easier to visualise refering to them as "bones"

The bone pose information I have been using so far consists only of 3 rotation values (eular XYZ). I cannot recall what FF7 p models used, but I can imagine why Quimm might have suggested 4-bytes per rotation, the possibility of the rotations being stored as a quaternion value of 4 signed bytes instead of 3 shorts (or floats).

There seems to be a lot of redundant data everywhere in the format (between each face polygon for example) so an extra 6 bytes does not raise any alarm bells.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Vehek on 2009-05-30 08:31:28
I tried copying the possible pose data from the MCH over some animation data.
(http://i239.photobucket.com/albums/ff83/TtravelrKev/Final%20Fantasy/SquallPoseDataTest.png)
Did I do something wrong, is the format not quite the same, or is my guess wrong?

On chara.one, it looks like the MCH name section really is unused and the MCH Number part I listed determines which MCH to load.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-05-30 15:36:42
I can't say I know much of what you did, but from my experience looking at biturn, only Zell and Squall have compatible bone structures...

I hope that helps somehow...

EDIT: Also you may have accidentally copied one extra byte or something... I've done that more than a few times before.... it annoys me greatly.

I wish I could get your interest in another format I've been looking at... but that would be selfish of me.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Vehek on 2009-05-30 20:45:52
Well, I thought I copied over the right number of bytes, and I copied the data from Squall's model. It might just be that the MCH's animation data is unused for PCs.

On a different note, while Biturn can load Zell's model without a problem, FF8 doesn't seem to tolerate that very well when using Squall's animations and Zell's original number of bones.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Kung Fu Man on 2009-06-26 04:18:58
Sorry to bump this, but has any progress been made on this front for the battle models? I've gone so far as to try and rip the models forcibly with 3DRipperDX, though the game as it stands seems to dislike Vista. It confounds the hell out of me too because the models I'm interested in exporting are few and the viewer seems to handle them (somewhat) okay, but there's no way to get them from point A to point B.

EDIT: Well, got the game working on Vista, but the models can't be dumped with 3DRipperDX...oh well.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-06-26 11:39:11
No luck as yet, but rest assured, people are working on it. No guarantees on quick progress, but it will be cracked eventually.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Kung Fu Man on 2009-06-26 21:55:39
Well it does look like, from what I'm reading, some lesser form of import/conversion tool could be developed for the time being if the person is willing to do some fiddling with the model after an end result (it's more the beasties I'm hoping to give a rendered animated version, so "some assembly required" is of no consequence for me XD). Interestingly to this end the ones I'm after do appear fine in the viewer, save for the Iron Giant's unarmed hand being twisted 180 degrees.

Btw I'm sorry if any of that post comes across in an ungrateful tone (because I'm very much grateful for the work done), just stressed atm about other things.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-06-26 22:05:35
Well it does look like, from what I'm reading, some lesser form of import/conversion tool could be developed for the time being if the person is willing to do some fiddling with the model after an end result (it's more the beasties I'm hoping to give a rendered animated version, so "some assembly required" is of no consequence for me XD)

Well, I agree with the 'some assembly required' thing, as an avid modeler myself... but unfortunately the number of people who can program import/export stuff is even more limited than those who can read and decipher formats by their hex data...

Of which I can do neither with any proficiency...
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Kung Fu Man on 2009-07-16 13:51:32
Well had some luck. Of sorts.

http://planescape.piiym-net.com/irongiant.rar

What I did was use 3DVia Printscreen (http://www.3dvia.com/pros/3DVIA_PrintScreen/) on CharEdit itself. The result came out as you see up there. Unfortunately giving the thing bones is turning into somewhat of a pain in the...maybe I need a crash course in it.

If anyone's willing, I can go ahead and see if I can get any other models from it for them. They rip pretty well, just no bones, no animations and twisted elements stay, well, twisted.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-07-16 16:14:40
Well had some luck. Of sorts.

http://planescape.piiym-net.com/irongiant.rar

What I did was use 3DVia Printscreen (http://www.3dvia.com/pros/3DVIA_PrintScreen/) on CharEdit itself. The result came out as you see up there. Unfortunately giving the thing bones is turning into somewhat of a pain in the...maybe I need a crash course in it.

If anyone's willing, I can go ahead and see if I can get any other models from it for them. They rip pretty well, just no bones, no animations and twisted elements stay, well, twisted.

I clicked the link to the 3DVia printscreen program but it tells me that page is nonexistent. That, I should mention, is not the first time I've tried to get that program...

Can someone mirror the installer? Also can you save files in OBJ? I have Maya, and Max, but I think my Max is long since expired.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: obesebear on 2009-07-16 16:53:32
I am DEFINITELY going to explore using 3DVia Printscreen on these models.   It shouldn't be any trouble importing the files and twisting everything the correct way.  I'll have the Iron Giant Kung Fu Man uploaded converted to obj tonight (if all goes well) and will gladly upload it.

EDIT:
Unfixed Iron Giant.obj (http://www.mediafire.com/download.php?4nyzljz3dun)  Nice job Kung Fu Man!
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Vehek on 2009-07-21 17:47:09
By looking at the PSX version, I've gotten more information on the field model animation data. (They really are the same format in both PC and PSX.)
The game writes things to the skeleton bone data.

What I assume to be the rotations are copied to 0x0C of the corresponding bone's data.

Code: [Select]
Byte Numbers refer to bytes of each bone's four bytes in the animation data.

Short Rotation?1 = (Byte1 << 0x02)| ((Byte4 & 0x03) << 0x0A)

short Rotation?2 = (Byte2 << 0x02) | ((Byte4 & 0x0C) << 0x08)

short Rotation?3 = (Byte3 << 0x02) | ((Byte4 & 0x30) << 0x06))

or, more closely following the game's ASM:
Short Rotation?1 = (Byte1 << 0x02)| ((Byte4 << 0x0A) & 0xC00)

short Rotation?2 = (Byte2 << 0x02) | ((Byte4 << 0x08) & 0xC00)

short Rotation?3 = (Byte3 << 0x02) | ((Byte4  << 0x06) & 0xC00)
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-07-25 18:15:19
Has anyone done any looking into the character.one's?

I recently ran all of the ONE's through PSicture and found every NPC texture there is in FF8...

however as they all share similar names I can only dump one set of ONE textures at a time... and believe me it was NOT easy getting all the ONE's in the same place since they all have the same name and are each in a series of nested folders.... it was hell.... but I managed to do it by compressing them in an archive... IIRC...

Anyway what I really need out of them is the SeeD and SeeD Cadet models... granted all the other characters would help too... but my players will need someone to... idunno... play.

Also has anyone looked into battlefield models or where the Ragnarok model is? (I love the Ragnarok... it's so epic looking...)


(It only recently hit me that Koral left... I'm actually quite upset by that, moreso than I imagined I could be... I feel like I've lost a close friend even though I barely knew her... I wish I could at least say goodbye but she's already gone and I have no way to contact her... Does anyone know what happened?)

Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Vehek on 2009-10-09 19:31:29
I've been trying to import FF8 field models into Blender for the last two or three weeks. It hasn't gone as well as I hoped, probably because I don't really understand how to do it.

(http://i239.photobucket.com/albums/ff83/TtravelrKev/Final%20Fantasy/QuistisModelConversionAttempt.png)
(http://i239.photobucket.com/albums/ff83/TtravelrKev/Final%20Fantasy/ElloneConversionAttempt.png)

During this, I've concluded that what I called "Rotation1" is the Z-rotation.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-10-09 20:06:06
whoa whoa whoa! Don't say you haven't had much luck! I can tell the first one is Quistis!

You've obviously made some progress!

It looks like you're having a problem determining which verts are attached to which bones, how much weight they have, or some similar issue.

I have some very high hopes for all this now.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Vehek on 2009-12-30 22:31:54
In case anyone's wondering, I messed with my script too much and didn't keep backups, so I can't reproduce those results from before.  :oops:
I've attempted to recreate it, but I don't know how close I've gotten. I've fixed the misplacement of vertices though.

Current results:
(http://i239.photobucket.com/albums/ff83/TtravelrKev/Final%20Fantasy/Ellone_Model_attempt_2Dec09.png)(http://i239.photobucket.com/albums/ff83/TtravelrKev/Final%20Fantasy/Rinoa_model_export_Test_1.png)

I suppose it's working better skeleton-wise than my other version of the script, which uses Blender's Pose module.
(http://i239.photobucket.com/albums/ff83/TtravelrKev/Final%20Fantasy/ElloneAndRinoa_ExportTestPosebones.png)

However, the first method can only do one frame from one animation.


(I don't know much about 3D.)


Animation Test Image (http://i239.photobucket.com/albums/ff83/TtravelrKev/Final%20Fantasy/FF8_SavepointAnimationTest-2.gif)
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2009-12-31 02:45:34
It may or may not look like much to you, but it looks very promising in my opinion.

I can't say I remember too much about the state of the previous script... but this certainly looks like progress to my eyes.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Cyberman on 2010-01-07 22:34:58
In case anyone's wondering, I messed with my script too much and didn't keep backups, so I can't reproduce those results from before.  :oops:
I've attempted to recreate it, but I don't know how close I've gotten. I've fixed the misplacement of vertices though.

Current results:

However, the first method can only do one frame from one animation.


(I don't know much about 3D.)


The polygon placement looks about right actually. I believe that the models might have been permanently lit though.  The UV data should also be with the polygons as I remember something like that it was straight forward poylgon data from the PS1 GPU system.

Cyb
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2010-01-07 23:19:35
Oh how I wish I had he skill at spotting the relevant patterns for data structures like you guys have... Even with well documented headers I can't seem to make my bytes fit right... nonetheless find a vertex pool...

but regardless, I'm glad to see I'm not the only one still interested in getting a good look at 8's graphics.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Cyberman on 2010-01-09 15:50:52
Oh how I wish I had he skill at spotting the relevant patterns for data structures like you guys have... Even with well documented headers I can't seem to make my bytes fit right... nonetheless find a vertex pool...

but regardless, I'm glad to see I'm not the only one still interested in getting a good look at 8's graphics.
For me it's sort of like this, "I'm working on an LED luminary, how far is that half bridge from the OSMC 4.1XX, ok I have this AT91SAM7S dev kit is the JTAG drivers installed, I need to install YAGARTO to develope for the micro why is ECLIPSE CDT wiping out the ZYLIN CDT used with YAGARTO, we have 30cm of snow in the drive way. Ok which to do first" sadly that's just today. That didn't include eating getting up and the myriad of other things I think of in a single day etc.

I would spend more time on this stuff if I had more time I guess is the best way of looking at it.

The best way to look at graphics data is that it IS data. Data must be arranged in a uniform manner. Data must have certain information in it for it to function.  What does FF8 do? It has polygons textures, and a skeletal system. We know this by observing the game output.  So it must have UV data to map the texture. It must have a texture. It must have a list of vertex information. It must have a polygon list.  I believe FF8 used all quads I can't be positive because it's been almost 3 years and 9 months since I looked at it. Unlike FF7 it's all the same data type.  FF7 had a rather complex setup where it drew quads triangles and then textures. FF8 just does textures. Of course the reason why FF7 looks quite good still is because of the complex method of rendering.You are a bit further along than I was I was about where you were at the post on 2009-10-09 14:31:2.

Side ramblings, I have more FF9 data now. I suppose I should finish gathering the FF8 data as well. I need several hundred saves with detailed notes on them basically to verify what bit does what and when. One LONG boring play through.

I may put up a detailed CRC explanation as well (hmmm).

Erstwhile with the FF8 data I suggest taking a bit map and drawing on it while you render, the polygon data or while you traverse it.  This technique allowed me to find and understand  the UV data in FF7. IE you feed the UV coordinate data into a vector drawing routine and plot the UV drawing out on a bitmap. IF it looks right then you are probably correct in analysizing the data. Do note they do mirror the data. If you wish to get fancy you can also include numbering for each polygon drawn as well. I started doing that just to know what was done when. (I was nuts I admit).

IF you detail all of this better than I can remember good, if you have the time put it in the wiki (LOL) maybe Qgears will get FF8 functionality sooner than later.

Cyb
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2010-01-09 23:55:38
So what you're saying, is that once I have a potential vertex pool, I start plotting two of the coords per vertex in paint... If it starts to look like a model shape, I probably have the right stuff. If not I may be looking at something else entirely...

Is that what you're describing?

(And on the subject of busy life stuff... that I can fully understand... it isn't easy being a fulltime student with a part time job and no method of self-transport...)


However, I should note that I'm not simply working on FF8... I'm on FF9, both .hack series' and a number of other games on and off at any given moment, as well as being a 3D modeler for my own games... If I devoted all my time to one format... I'd probably be able to crack it at some point(or have a severe mental break).

However, my previous statement was referring mainly to the fact that I still can't get my headers to read properly even when they are fully documented...

When I read a header that tells me a file should start or end at a certain point in the data... I look at that part and it's either well after the end of the file or it is in some random spot after the file has already started... so instead I look at a relative point to the beginning, or end of that header, or the main header, or the end of the previous file, etc... but for some reason, even though I know the documentation is good, the headers don't seem to point me to where they should... (meaning I'm somehow reading them wrong...)



In any case... none of this helps the FF8 formats so I guess I'll stop.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Cyberman on 2010-01-10 19:31:53
So what you're saying, is that once I have a potential vertex pool, I start plotting two of the coords per vertex in paint... If it starts to look like a model shape, I probably have the right stuff. If not I may be looking at something else entirely...

Is that what you're describing?

(And on the subject of busy life stuff... that I can fully understand... it isn't easy being a fulltime student with a part time job and no method of self-transport...)


However, I should note that I'm not simply working on FF8... I'm on FF9, both .hack series' and a number of other games on and off at any given moment, as well as being a 3D modeler for my own games... If I devoted all my time to one format... I'd probably be able to crack it at some point(or have a severe mental break).

However, my previous statement was referring mainly to the fact that I still can't get my headers to read properly even when they are fully documented...

When I read a header that tells me a file should start or end at a certain point in the data... I look at that part and it's either well after the end of the file or it is in some random spot after the file has already started... so instead I look at a relative point to the beginning, or end of that header, or the main header, or the end of the previous file, etc... but for some reason, even though I know the documentation is good, the headers don't seem to point me to where they should... (meaning I'm somehow reading them wrong...)



In any case... none of this helps the FF8 formats so I guess I'll stop.

I'm now curious when I get time I'll dig through what's left of my FF8 experimentation.  I have to remember the media data as well. FF7 was much easier to deal with than FF8 and FF9 in that regards. In the mean time it will be a bit of time before I can have some useful data from my mad ramblings eons ago.

As for your interpretation of the headers, I believe if you can find the data on for example 15 different models, then compare the header information with regard to the information to the location of the data in the model section that will help. That's basically what I've always had to do. It's how I discovered that the model file in FF7 is actually a large number of files with character files having 16 weapon files (including blank ones) and the weapons were treated as part of the character's skeleton in animations. :D

If you plot the 3d data as you decribe you can get an idea. It also works with the UV data for the 3d data as well. That will get a few textures on your models. Also be aware of the way the PS1 renders quads and triangles. They are not obvious. In fact I suggest you read halkun's 'everything you wanted to know' document he wrote in regards to the organization of the GPU data. Follow carefully the use of the coordinates in the polygon. The PS1 renders the quads as 2 triangles. This is how I got them to work in data FF7 with quite good results. The same will go with the data likely in FF8. If you think about 2 triangles being rendered to make a quad. 2 points are adjacent. That's the big clue on how they rendered the data.  You will have your polys look like bow ties if you don't realize this. :D

UV data has coordinates in a bit map (texture).  If you take a blank bit map and draw the UV coordinates on it while traversing the associated polygons you can plot the triangles and polys on the bitmap as they are rendered.  This also helps when you have your quad coordinates not in order.

Cyb
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Vehek on 2010-01-11 03:03:55
FF8 UV data is one of the thing that's been at least partially documented before, and so far it mostly seems to work.

Example using my first method of applying rotations.
(http://i239.photobucket.com/albums/ff83/TtravelrKev/Final%20Fantasy/ElloneModel_textured_1.png)

I still need to figure out how to properly apply the rotations. Even this method is a bit off, more than this particular model shows. There are also some things I need to do for ease of use.

I admit I'm rather ignorant on how the PSX actually draws things.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Cyberman on 2010-01-12 01:29:39
Those gaping holes infer that the surface has the inverse normal it should have hmm you may have mostly triangles and those might be quads? This may indicate you are not traversing those particular vertexes in the correct order. The right foot looks slightly incorrect. It's better looking than my spaghetti was to be honest.

I found my old source code but it looks like the DFM file (form layout description language) got hosed. It seemed to do quite a bit it appears to have used GLPanel which... isn't on the net anymore :)

I remember I was moving to GLScene. However GLScene is vehemently Delphine in nature as well as not very well supported by BCB. I can't build the components essentially. (Puzzle).

Well anyhow it appears to be a similiar panel to what NeHe assistants used in the BCB examples. So I'll see what I can do with those variants.

The biggest problem is I am missing half the descriptor for my form.

Erstwhile as I said it looks like you have missordered some of the vertexs and that might be what is causing the 'holes' the rotation issues might be directly related although I doubt it. The foot appears to have been rotated the oposite direction. My mistake was not taking the vertex pool seriously enough. Maybe I can fiddle with the old FF8 model traversing code.


Cyb
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2010-01-13 02:48:02
I have some documentation about quads and strips pertaining to PS2 rendering, they may not help much, but I'm posting them here just in case they might be of use...

Quote from: Codeman
Synopsis
A triangle strip is a speed- and space-efficient way of storing a set of triangles on a computer, usually for computer graphics.

Detail
Take, for example, a modern graphics processor, capable of drawing millions of polygons per second. One of the major limiting factors is not the triangle-drawing ability of the processor; without triangle strips often the limiting factor is the data bus between the graphics processor and the memory storing the triangles1. Triangle strips reduce the memory bandwidth needed by a graphics processor by not transmitting redundant information. Each triangle is comprised of three separate vertices, but in many cases you can find a set of topologically connected triangles which share common edges. Triangle strips exploit this fact. So what does this mean?

Consider a simple square, which would be stored as two triangles:

0--1
| /|
|/ |
2--3
Thus, the square is made up of the triangles (0, 1, 2) and (1, 2, 3)2. A naive storage format for this square would just store both those triangles, costing 6 (2 x 3) vertices. Notice how in both of those triangles, the edge (1, 2) is specified. A triangle strip simply stores that square as (0, 1, 2, 3), where the two constituent triangles share the middle edge (1, 2). In a triangle strip of length N, there are (N-2) triangles; with each triangle being a vertex and its two previous vertices. This means the square is now stored in 4 vertices, and if we wanted to add another connected triangle (sharing edge (2,3) with triangle (1, 2, 3)) we only need to add an extra vertex:

0--1
| /|
|/ |
2--3
| /
|/
4
This is extremely space efficient; in a perfect strip each extra triangle costs us only another vertex.

If you imagine a typical polygonal mesh, for example a triangulated teapot, you can see that the majority of the triangles share edges with other triangles around them. This makes finding long strips of connected triangles relatively easy, and indeed such shapes can be stored very efficiently using strips.

Given an arbitrary polygon soup, finding the perfect set of triangle strips which represent it is a difficult problem. There is a potentially infinite number of different strips you could choose to represent an object, but for efficiency's sake the strips used must be as long as possible. In fact, this process (known as triangle stripping or sometimes stripification) in an NP complete problem. However, armed with some simple heuristics you can usually come up with a near-perfect solution. There are a number of GPL libraries around for performing stripification, including a particularly good one called Stripe.

As you've seen, strips are space-efficient; it takes less vertices to specify a mesh using strips. However, it is also speed-efficient. In rasterizing a triangle, a graphics processor has to perform a fair degree of calculations, particularly if it supports something like programmable vertex shaders. When rendering a strip, if the previous two vertices are cached, then after the first triangle has been drawn, the next only requires one extra vertex calculation.

There's another trick that can be used; normally there's a set up cost associated with starting a strip on modern graphics hardware. So reducing the total number of triangle strips is beneficial too - this can be achieved using degenerate (zero area) triangles. Given two strips, you can stitch them together by duplicating the last vertex of the first strip, and the first vertex of the second strip, and then concatenating them. Consider two separated squares:

0--1 4--5
| /| | /|
|/ | |/ |
2--3 6--7
These squares can be expressed as a single triangle strip (0, 1, 2, 3, 3, 4, 4, 5, 6, 7) with four degenerate triangles (2, 3, 3), (3, 3, 4), (3, 4, 4), (4, 4, 5). As the triangles have zero area (which is quick to detect), they usually cost very little to process, and in most circumstances these long concatenated strips are more efficient than lots of small strips3.

Any task involving large numbers of triangles can benefit from triangle stripping, for example collision detection, or ray tracing.

1.Indexing vertices and storing vertex data separately to topology information is another common way of reducing the bandwidth, which is compatible with stripping.
2.Usually triangles are stored with a consistant winding order, I ignore winding issues here for clarity. Where winding order is important (e.g. on graphics processors) note that every other triangle's winding order is opposite, and this is taken into account by the hardware.
3.Some specialist applications (e.g. the PlayStation 2's rendering system) store an extra piece of information with each vertex: whether that vertex and its previous two vertices should be considered a valid triangle. This allows an even more efficient way of stitching triangles together; you can simply concatenate strips together and ensure the first two vertices are not marked as valid triangles. For example, using an asterisk to mark valid triangles, the two squares can be expressed as (0, 1, 2*, 3*, 4, 5, 6*, 7*) using such a system.



also, as I don't think any of that mentions normals, it should be noted that most systems use clockwise vertex orientation as one type of normal (usually facing the camera) and counterclockwise numbering denoting a the other(usually reversed, with the invisible side pointed at the camera)


So most quads, being drawn as two triangles, will be half invisible. Since one triangle is drawn as

Code: [Select]
1. .2 and the next triangle being  .1(2)
3.                           2(3). .3(4)

Thus making triangle 2,3,4 counterclockwise and having an inverse normal.


Does any of that help? (If you already knew that, I apologize, I'm not trying to belittle you. I just get so few opportunities to really do anything helpful)
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Vehek on 2010-01-15 07:50:37
(http://i239.photobucket.com/albums/ff83/TtravelrKev/Final%20Fantasy/RinoaParty_GoodRotations_1.png)

 :-D

I don't actually know how what I did works, but I'm now very close to proper bone rotations. Still need to fix the other issues though.

Some issues

Hmmm, I've come a long way since I started, when it had no skeleton at all and was just a clump of parts stuck together. (Those are stages which I didn't show here.)


Edit: Didn't notice that the parts of the body (noticeably the hands) were flipped. I think I've fixed it in the script now.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2010-01-15 18:38:59
(http://i239.photobucket.com/albums/ff83/TtravelrKev/Final%20Fantasy/RinoaParty_GoodRotations_1.png)

 :-D

I don't actually know how what I did works, but I'm now very close to proper bone rotations. Still need to fix the other issues though.

Some issues
  • Gaps in UV
  • Textures don't show up in render (Need to associate it correctly or something.)

Hmmm, I've come a long way since I started, when it had no skeleton at all and was just a clump of parts stuck together. (Those are stages which I didn't show here.)


Edit: Didn't notice that the parts of the body (noticeably the hands) were flipped. I think I've fixed it in the script now.

I've never liked Rinoa as much as I do in this post...

What is that black line coming out of her thigh? a bone?

Also I think you have the bones in the waist reversed; the rotation looks correct, but the bones themselves have the wrong legs weighted to them. I think after you fix that you can probably start finalizing little details... It certainly looks near completion in that image sequence.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Grimmy on 2010-01-16 00:33:44
Actually it's the arms and hands also. Depending on your purpose once you get the mesh and the UV it's easy to fix the rest.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2010-01-16 01:05:17

Edit: Didn't notice that the parts of the body (noticeably the hands) were flipped. I think I've fixed it in the script now.

Sorry, I misunderstood that the first time I read it... you may ignore my comment about reversed bones...
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: mariokart64n on 2010-01-22 01:49:50
 :-o arg, we still can't get models from FF8?

I wonder, the PC game is dx8 or dx6 based?
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: obesebear on 2010-01-22 04:04:59
:-o arg, we still can't get models from FF8?

I wonder, the PC game is dx8 or dx6 based?
On the contrary, it is quite possible to get the battle models (eventhough they are somewhat twisted, it's easily fixed)  It is reportedly possible to also get the field models, but I have yet to do it or see it being done.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2010-01-23 06:13:48
:-o arg, we still can't get models from FF8?

I wonder, the PC game is dx8 or dx6 based?
On the contrary, it is quite possible to get the battle models (eventhough they are somewhat twisted, it's easily fixed)  It is reportedly possible to also get the field models, but I have yet to do it or see it being done.

Beg pardons, but if you can get battle models, could you explain how? I've tried a few programs but most fail miserably to even run at all...

Also, this thread is currently concentrating on the field models, so far what you see here is the progress... I haven't looked around the web in depth lately, but it seems from the sites I visit, that we're the only ones actively pursuing this... or at least the only ones on a site I've ever seen...

It's entirely plausible that some tiny unknown site is off doing this very thing, but they are just that... small and unknown to me.

In the end, any information you may have is a possible benefit.


And I completely forgot MK64 was even here... I was honestly quite surprised to see him... (here anyway... there are a few other modding/3D exploration sites I see him at regularly XD )

...I really need to learn to recognize headers... one of these days I'll get something done...
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: obesebear on 2010-01-24 19:35:02
On the contrary, it is quite possible to get the battle models (eventhough they are somewhat twisted, it's easily fixed)  It is reportedly possible to also get the field models, but I have yet to do it or see it being done.

Beg pardons, but if you can get battle models, could you explain how? I've tried a few programs but most fail miserably to even run at all...

Sure, this will be the quick version though because I have a lot of stuff to get done today.

Somewhere on this site you will find a link to a program that can display the battle models.  Try searching "FF8 Models" or something similar.   The post will say something about a guy from another site having success, but his program doesn't display them 100% (they are twisted).  When you click on the link and download his program, it comes with all of the .dat battle files, so you don't even need to go through the trouble of ripping them yourself.  I think the post may have been made by Mirex... but I'm not positive.

Then you will need 3dvia to rip them from his program (he doesn't have an export function).  After you download that you will have to google a program made by a guy that I think is called Koichi Senada.   His program uses 3DSMax to convert the 3dvia format to a .max format.  And from there obviously you can convert it to anything else.

Like I said, some of them are pretty badly twisted, but with a little 3D knowledge it's a pretty easy fix.

Proof  :-D
(http://i221.photobucket.com/albums/dd138/obesebear/odin.jpg)
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Satoh on 2010-01-24 20:57:28
I see... I hadn't thought about using 3dvia on kvaks...

Thanks for the heads up, I'll definitely be using that info for great justice.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: obesebear on 2010-01-25 02:01:30
Great!  I know nothing about the battle or field models, but if they are composed the same way, you might be best off waiting for Vehek to finish since he seems to be making leaps and bounds in progress, and his viewer will undoubtedly be better than KVAKS
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: mariokart64n on 2010-03-14 08:25:35
the models are very lowpoly.. I can't imagine it be that too hard to extract.
I think it's largely due to how old these models are.. they are outdated.. so whats the point cracking a heavily optimised/condensed format..

it just sucks that no reliable viewer has ever been made considering that FF8 is just one of those lagacy games

ohwell guess it's time to start re-modeling so of these characters right ;)
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: obesebear on 2010-03-14 19:32:17
the models are very lowpoly.. I can't imagine it be that too hard to extract.
I think it's largely due to how old these models are.. they are outdated.. so whats the point cracking a heavily optimised/condensed format..
I guess just to show we can.  All the information is there (I think) and Qhimm is supposed to be the mecha of 90's FF modding.

it just sucks that no reliable viewer has ever been made considering that FF8 is just one of those lagacy games

ohwell guess it's time to start re-modeling so of these characters right ;)
Well Vehek was making awesome progress, maybe he'll decide to take it back up.

I don't know about remodeling though... No one likes FF8 THAT much lol
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Timu Sumisu on 2010-03-15 05:08:11
giving the graphics a boost could be fun if 1. there were a tool to weigh the mesh to the bones, and 2. you could completely hack the gameplay to eliminate or otherwise make drawing enjoyable. (along with a rather long list of poor gameplaymechanics plaguing ff8)


 ;D
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Wutai Clan on 2010-08-27 10:31:52
I would love to see progress made on this game, I'm one of it's few fans. :)

Here is a tool that is capable of ripping 3d data directly from games, maybe it could help you, it offers a different method of getting data. (Ie, it hooks DX, when the model is drawn, it can dump that data directly, rather than bothering with figuring out the file format.. I've used this myself, it's not perfect, but it can get the models out of otherwise undocumented game formats.)

It basically takes a 3d screenshot.

3d Ripper DX
http://www.deep-shadows.com/hax/3DRipperDX.htm
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Tekkie.X on 2010-08-27 12:46:54
3D Ripper was only compatible with DX9 and 10 last I read, FF8 runs on what 6 or 7, it may be possible using other programs to work around it though.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: obesebear on 2010-08-27 15:37:04
I would love to see progress made on this game, I'm one of it's few fans. :)

Here is a tool that is capable of ripping 3d data directly from games, maybe it could help you, it offers a different method of getting data. (Ie, it hooks DX, when the model is drawn, it can dump that data directly, rather than bothering with figuring out the file format.. I've used this myself, it's not perfect, but it can get the models out of otherwise undocumented game formats.)

It basically takes a 3d screenshot.

3d Ripper DX
http://www.deep-shadows.com/hax/3DRipperDX.htm
One necro isn't terribly bad when it brings something new to the table.  2 is bad.  Definitely bad.  Locked. Warned.
Title: Re: FF8 Models, How did Qhimm rip them?
Post by: Seiferbk7 on 2019-03-19 15:50:19
https://imgur.com/a/TKmIiLv

how can i fix that? thx.