[FF8 steam]Character importer

  • Thread starter Thread starter Shunsq
  • Start date Start date
Status
Not open for further replies.
For ff8 can you just import a whole model? I've oblyever worked ff7 stuff. Im able to get quite a few really good ff8 models if so
 
Tsunamix, today it is not possible to import whatever you want to ff8,there is no tool.That is why i'm creating this tool.What i gave you is a new model of selphie,not the original.
 
Yeah okay. I've never even looked at modding ff8 before but I poayes mainly because on my travels to find ff7 models I have come across many ff8 models too. If you manage to get it going then I'll point you to the ones I found to help out a little
 
If you don't mind, can you share tool/source read data in mch fie?
I stuck at putting bone to right position and exporting animation.
m81oNCe.png
 
Hello red_evilspirit,
I used python in blender to import mesh, create a skeleton and import animation from mch an chara.one file. I don't intend to share my code for the moment, i'm still working on it.
But if you want to do your own import-export script :
-Read description of the format in the qhimm wiki:http://wiki.ffrtt.ru/index.php/FF8/FileFormat_MCH
-Gather data on skeleton format from Vehek:https://www.ff7catalog.com/threads/8883/. Search for his posts on qhimm you will learn a lot.
-Gather data from Xentax ( xna lara forum):http://forum.xentax.com/viewtopic.php?f=16&t=10810

The mch format only holds mesh information and rest-pose data for one character. In each field you have a chara.one file which holds the information about animation for main characters and mesh+animation for NPC.

MCH format for skeleton is not the same as in the chara.one format. You need both files to rebuild the animation. The MCH format holds the length of the bones. The charaone holds the rotations of the bones.
 
Hey Shun! it's been a while and I see you're still on FF8 stuff (and you're doing geat as well! )

Can't wait to see how this is going to evolve..

Hopefully my newly acquired 3D skills will be of any use for creating a HD mods or something sooner or later  :)
 
kaspar - you and I both!!

It would be really nice to be able to import models with more polys.

Keep it up Shunsq!  I can't wait to be able to give the characters a REAL overhaul :)
 
Good to see you back kaspar!
I'm not showing anything because right now the code is a bit useless. I can import new model into the game but on screen all the vertices are messed up because of "fixed point precision" of the engine. Google the term on the net. In modern game, or even ff7 if i'm not wrong,the vertices are "floating point precision". That means that a fixed number of coordinates are allowed on screen . If my vertex is at coordinate (20.233 pix; 123.3 pix) then it will be snapped to (20 pix; 123 pix). That is the "shaky" effect of old psx games. Some emulators fix that issue (see PGXP).I would like something similar i could inject with dlpb tools.

My other issue is the size of the ram of ff8. I can increase the texture size to 256×256 (twice the actual size) but the new texture overlaps with other textures. So i tried to build a code that stores the textures somewhere else in memory. But the problem is still the same.
 
Good to see you back kaspar!
I'm not showing anything because right now the code is a bit useless. I can import new model into the game but on screen all the vertices are messed up because of "fixed point precision" of the engine. Google the term on the net. In modern game, or even ff7 if i'm not wrong,the vertices are "floating point precision". That means that a fixed number of coordinates are allowed on screen . If my vertex is at coordinate (20.233 pix; 123.3 pix) then it will be snapped to (20 pix; 123 pix). That is the "shaky" effect of old psx games. Some emulators fix that issue (see PGXP).I would like something similar i could inject with dlpb tools.

My other issue is the size of the ram of ff8. I can increase the texture size to 256×256 (twice the actual size) but the new texture overlaps with other textures. So i tried to build a code that stores the textures somewhere else in memory. But the problem is still the same.
Aali released his source - and they've been working on it and chatting about it in the FF7 dev area of discord.  Aali was able to crate a modpath for the (lower resolution is icon.tex) - iconfl00.tex, iconfl01.tex, iconfl02.tex, iconfl03.tex for the english version and make an external folder path interceptor for the textures.  If you could do something like this with your models, then you might be able to get the functionality you're looking for.  Would Kalderasha have anything to add to this topic?
 
Not really, if I understand Shunsq correctly then the game use int var to calculate the 3D. So the function needs to be rewritten with float or double precision. I probably said this but it might be a good idea to ask Kaldaien on steam if he has an idea how to deal with this. He seems to be very competent with working on graphic interfaces and with the source of Aali's driver he may have more possibilities to hack the game.
 
I write script like this, is it right ?
Code: [Select]
Code:
 bs.seek(animofs, NOESEEK_ABS) animCount = bs.readShort() framCount = bs.readShort() boneCount = bs.readShort() coordinatesOffset = bs.readBytes(6) gido = [] for i in range(0,boneCount):  byte1 = bs.readByte()  byte2 = bs.readByte()  byte3 = bs.readByte()  byte4 = bs.readByte()  rotation1 = (byte1 << 0x02) | ((byte4 & 0x03) << 0x0A)  rotation2 = (byte2 << 0x02) | ((byte4 & 0x0C) << 0x08)  rotation3 = (byte3 << 0x02) | ((byte4 & 0x30) << 0x06)  xyz = {   "x": rotation1,   "y": rotation2,   "z": rotation3  }  gido.append(xyz)
when i dump 'xyz', all number is really big :(
 
Last edited:
Hello red,
Sorry for the late reaction,
Your reading program is ok for chara.one file. The rotations are written on 12 bits, which give you a max angle of 4095 for each rotation.
For some reason blender understands that 4095 equals 180 degrees. That means  2048 is 90 deg and so on.
In my code i don't do any conversion to radians or degrees. I read the raw value and apply it to the bone rotations in pose mode.

On the contrary the data is different in the mch file.
The mch only contains the bone hierarchy, their length and a T pose.
I still have big issues to find a code that creates a good T pose for all characters.Today i extract 2 bytes for each rotations then i convert to degree, then to euler angles.

Just so you know, you don't need the T pose to anim the character. That means that even if the  T pose is a total mess, the bones will magically anim perfectly in posemode.
 
Status
Not open for further replies.
Back
Top