READ THE RULES: Click here

Follow us on Facebook: https://www.facebook.com/xentax/ :)

Soul Calibur 3 Modding

Post questions about game models here, or help out others!
User avatar
zaramot
double-veteran
double-veteran
Posts: 714
Joined: Wed Jan 05, 2011 12:41 pm
Has thanked: 39 times
Been thanked: 765 times

Re: Soul Calibur 3 Modding

Post by zaramot » Tue Sep 09, 2014 9:10 am

Some news about progress. So, now I'm importing meshes, all geometry data with bones at once. But, as you see all parts are lying on the floor, now we moved to next part of model import :) As sir Fatduck said, the game is using "matrix palette skinning" so we need to figure out this somehow :( I'm asking about help with this, how it's implemented? What should we do, to transform vertices to proper position?

Image
Making model-import scripts, PM

fatduck
mega-veteran
mega-veteran
Posts: 315
Joined: Wed Aug 02, 2006 10:07 pm
Has thanked: 10 times
Been thanked: 93 times

Re: Soul Calibur 3 Modding

Post by fatduck » Tue Sep 09, 2014 1:46 pm

I don't have any file or 3dsmax atm so I can't check the BoneID things.
But the use of "matrix palette skinning" is to minimum the use of bones.
So each mesh part possibly had it's own bones group!
Try to see if you can found any "Mesh info" of different parts!?
No more Fatduck, no more FatImporter, Byebye everyone!

User avatar
zaramot
double-veteran
double-veteran
Posts: 714
Joined: Wed Jan 05, 2011 12:41 pm
Has thanked: 39 times
Been thanked: 765 times

Re: Soul Calibur 3 Modding

Post by zaramot » Wed Sep 10, 2014 2:42 pm

Don't know about "Mesh info" and it's own bone group for each mesh, can't find anything like a bone-map inside model file. But it would be much more easier if we knew how to turn bone indices like this 0x54/0x58 to correct ones (for example 0x54 it's bone index 4). Then, I'm sure we could find bone groups, if only game is using them
Making model-import scripts, PM

User avatar
zaramot
double-veteran
double-veteran
Posts: 714
Joined: Wed Jan 05, 2011 12:41 pm
Has thanked: 39 times
Been thanked: 765 times

Re: Soul Calibur 3 Modding

Post by zaramot » Thu Sep 11, 2014 9:52 am

Hi guys! I have progress with skinned meshes :) SC3 is using bonemap, and those bone id's is almost solved now
You do not have the required permissions to view the files attached to this post.
Making model-import scripts, PM

fatduck
mega-veteran
mega-veteran
Posts: 315
Joined: Wed Aug 02, 2006 10:07 pm
Has thanked: 10 times
Been thanked: 93 times

Re: Soul Calibur 3 Modding

Post by fatduck » Sat Sep 13, 2014 8:23 am

Here is some info for the file format:

Code: Select all

struck Header {
  dword                 Resource_ID             //0x0B1C0E09
  word                  unknowm                 //Ver Minor ?
  word                  Version                 //0x102
  word                  num_Bone_Group
  word                  num_Bone
  dword                 offset_0_4              //I name it as offset row 0 column 4
  dword                 offset_1_1
  dword                 offset_1_2
  ...
  dword                 offset_4_2
  dword                 offset_4_3
}

Max bones for skinning is 32

It seems like there are 2 pieces of "Mesh info" in the .unk format!
your way to the Bones-Group /Bone-map(whatever you call it) seem to be missing something.
And you have no way to map the geometry-part with these bone-map! Right?

Your way:
offset_3_1 is offset_Bone_Map

Code: Select all

struct General_Header (
  byte                  ID
  byte                  Count
  byte                  Extra1
  byte                  Extra2
  <data>
)
struct Bone_Map_block {
  dword                 Unknown
  dword                 Unknown
  dword                 Offset
  dword                 Offset
  struct Bone_Map_Info {
    struct Info {                               //Loop until Block-end
      byte              ID                      //1 = Block-end, 7 = Bone indices, 5 = group? without offset data
      byte              Count
      byte              Extra1
      byte              Extra2
      *dword            offset_data
    }
  }
}
eg: in sig2.unk(Total 23 info) first bone-map info @ 0x770
Type 5 ??
Type 1 block end: 0x7C8
Type 4 offset:0xF0C
Type 7 28 bone indices(use up 32 byte)
Type 6 offset:0x13C0
Type 8 offset:0x1400
Type 9 offset:0x1440
Type B offset:0x2580

Second bone-map info @ 0x7C8
Type 5 ??
Type 1 block end: 0x7FC
Type 4 offset:0xF38
Type 6 offset:0x1450
Type 8 offset:0x1490
Type 9 offset:0x14D0
Type B offset:0x2600
But then you don't know the bone-map for this one?


Now my way:

Code: Select all

offset_3_4 is offset_Info_Table
struct Group_Offset {
  dword                 offset_Bone_Info
}
struct Bone_Info {
  byte                  Type
  byte                  num_ofs
  byte                  unknown
  byte                  Index                   // for type 0, this is bone index, type 1  act as num_bone_index
  <bone_index>
  <Info_offset>
}
struct Info {
  dword                 type?
  dword                 offset
}
struct Info2 {
  byte                  type
  byte                  block_size
  byte                  unknown
  byte                  unknown
  <data>
  ...                   //until a data 0x0805 was found, the next one is offset_Mesh_List
}
struct Mesh_List {
  byte                  unknown
  byte                  unknown
  byte                  unknown
  byte                  Type                 //0x30 mesh, 0x60 end list
  dword                 offset_MeshData
  dword                 unknown
  dword                 unknown
  dword                 unknown
  dword                 unknown
  dword                 unknown
  dword                 unknown
}
see my log file.(Not 100% correct, something skipped)
You do not have the required permissions to view the files attached to this post.
No more Fatduck, no more FatImporter, Byebye everyone!

User avatar
zaramot
double-veteran
double-veteran
Posts: 714
Joined: Wed Jan 05, 2011 12:41 pm
Has thanked: 39 times
Been thanked: 765 times

Re: Soul Calibur 3 Modding

Post by zaramot » Sun Sep 14, 2014 8:45 am

Some news, now I'm parsing at once entire character's models, with all meshes+in correct position. But, still have issues with some parts - now I'm almost at 100% sure, some bones should be transformed in different way than others. That's why they are divided into bone-groups in skeleton section!? So, now main issue is skeleton!
You do not have the required permissions to view the files attached to this post.
Making model-import scripts, PM

fatduck
mega-veteran
mega-veteran
Posts: 315
Joined: Wed Aug 02, 2006 10:07 pm
Has thanked: 10 times
Been thanked: 93 times

Re: Soul Calibur 3 Modding

Post by fatduck » Tue Sep 16, 2014 1:41 pm

I think I found the reason why some the meshes don't look right(deformed)!
It's because the bone's rotation is not right!!!
error2.jpg
you see those meshes in red color, they should be eye-ball and the jaw
and they are kind of 90 degree rotated!

Now is the time back to basic to figure out the bones structure again!
You do not have the required permissions to view the files attached to this post.
No more Fatduck, no more FatImporter, Byebye everyone!

User avatar
zaramot
double-veteran
double-veteran
Posts: 714
Joined: Wed Jan 05, 2011 12:41 pm
Has thanked: 39 times
Been thanked: 765 times

Re: Soul Calibur 3 Modding

Post by zaramot » Tue Sep 16, 2014 3:46 pm

Yes,we need to figure out bone structure :( All bones are divided into groups (last byte of each bone), 03 it's face, 07 chest, clavicle rolls etc. I rotated jaw and eyes, by adding to base rotation, first 3 floats in bone section! It appears those values matters, some kind of end position, or bind pose?!
You do not have the required permissions to view the files attached to this post.
Making model-import scripts, PM

fatduck
mega-veteran
mega-veteran
Posts: 315
Joined: Wed Aug 02, 2006 10:07 pm
Has thanked: 10 times
Been thanked: 93 times

Re: Soul Calibur 3 Modding

Post by fatduck » Tue Sep 16, 2014 8:54 pm

Got it right, finally.

the vertex position should be:
accumulated = pos0 * matrix0 * weight0;
accumulated += pos1 * matrix1 * weight1;
accumulated += pos2 * matrix2 * weight2;
...

Now my problem is tri-strip face'S direction and missing geometries(Can't found all then mesh info)

zaramot, are you still your using "offset_Bone_Map" method to get all the geometries!
You do not have the required permissions to view the files attached to this post.
No more Fatduck, no more FatImporter, Byebye everyone!

User avatar
zaramot
double-veteran
double-veteran
Posts: 714
Joined: Wed Jan 05, 2011 12:41 pm
Has thanked: 39 times
Been thanked: 765 times

Re: Soul Calibur 3 Modding

Post by zaramot » Thu Sep 18, 2014 12:35 pm

Last four bytes of each bone, contain info about bone groups, bone id, bone parent and first byte is often just 0, but for some bone groups - this first byte is bone-child. I think, those bone groups should be multiplied to bone child matrix,rotation or position, I think that this solve the issue.
So, for now we have two major problems:
1) Face direction, models needs more time to fix
2) Some bone groups transformation (main ones:0x07 - chest/boobs rolls/twists, 0x0B-hair)
But, despite all of this, now we have fully rigged SC3 models

Thanks A LOT to Fatduck, without his help this wouldn't be possible! :)

Image
Making model-import scripts, PM

User avatar
porimac
VIP member
VIP member
Posts: 109
Joined: Wed Sep 08, 2010 4:46 pm
Location: Japan,Kanagawa
Has thanked: 63 times
Been thanked: 13 times

Re: Soul Calibur 3 Modding

Post by porimac » Fri Sep 19, 2014 5:08 pm

deleted
Last edited by porimac on Sat Nov 01, 2014 6:09 pm, edited 1 time in total.

Doronetty
advanced
Posts: 49
Joined: Thu Jun 03, 2010 11:05 am
Has thanked: 24 times
Been thanked: 3 times

Re: Soul Calibur 3 Modding

Post by Doronetty » Wed Sep 24, 2014 1:44 pm

Please make script!
P.S: Or (better) tool like Greed Xplorer with SC3 support and models converter :P

Byros
ultra-n00b
Posts: 2
Joined: Sun Jun 12, 2016 2:10 am
Has thanked: 2 times
Been thanked: 2 times

Re: Soul Calibur 3 Modding

Post by Byros » Mon Aug 29, 2016 2:37 am

This thread is absolutely great!

You can use this updated version of OLK Explorer (V 0.04), as it tries to detect additional file types
within Soulcalibur III for PlayStation 2:

https://8wayrun.com/attachments/ps2-sc3 ... zip.46681/

OLK - Container file, same as version 0.02
PKG - Package file, same as version 0.02
VMP - Most character, weapon & stage 3D models are detected.
VXT - Texture bundle (Images)
MMP- PS2 sound container.
UNK - Any other file type.

Notes:
When used for PS2 Soulcalibur II game assets, most files will be detected as .UNK just as OLK Explorer version 0.02
VMP - Detects most 3D models that contain the header (09 0E 1C), might still miss some others.
MMP - Seems to properly detect MMP sound container files among PS2 Soulcalibur II & Soulcalibur III versions. (No playback)
VXT - Seems to detect images that contain the header (03 04 04), still missing those with (02 04 04) or any other header.

It should enable to identify file types much faster within ROOT.OLK

Image files within ROOT.OLK > File 3
Stage files within ROOT.OLK > File 5
Character & weapon files within ROOT.OLK > File 7


Image
Image

duduric
ultra-n00b
Posts: 1
Joined: Tue Aug 09, 2016 4:08 am

Re: Soul Calibur 3 Modding

Post by duduric » Mon Aug 29, 2016 4:52 pm

Awesome... is the source code of this tool / format specification for .OLX files available somewhere?

I have been trying to parse SC3 models but I'm rather new at this and got stuck , only managing to get some random armor parts from the .vmps . The file format is very complex. I PMed zaramot and FatDuck but got no answer... :(
I'll try getting back at this someday

Byros
ultra-n00b
Posts: 2
Joined: Sun Jun 12, 2016 2:10 am
Has thanked: 2 times
Been thanked: 2 times

Re: Soul Calibur 3 Modding

Post by Byros » Tue Aug 30, 2016 3:10 am

I've haven't found the source code for OLK Explorer, I guess it would be most helpful.
the original coder Cypher35 is nowhere to be found :(

And just as you say, the format from Soulcalibur III seems different and more
complex than the one in Soulcalibur II.

I also tried to reach via PM some members of this thread, but as of yet I haven't been successful.

Hopefully as time goes by someone will notice, and perhaps more information will be shared regarding the format for
characters, weapons, and stages.

If I find anything on *.OLX files I'll let you know,
There also seem to be within ROOT.OLK, other still unidentified file types such as *.vtb & *.lpb

Post Reply