Join also our Discord channel! Click here.

Soul Calibur 3 Modding

Post questions about game models here, or help out others!
User avatar
mariokart64n
ultra-veteran
ultra-veteran
Posts: 542
Joined: Sun Jun 05, 2005 12:00 pm
Location: Ontario, Canada
Has thanked: 30 times
Been thanked: 175 times
Contact:

Re: Soul Calibur 3 Modding

Post by mariokart64n » Fri Apr 17, 2020 5:04 pm

Sorry for the bump;

Recently I dusted off my old script for SC3 and realized alot more work was required for me to import models correctly

So I spent a week documenting as much as possible of the mesh binary so that I might have a better chance identifying the mesh info.

I created this flow charted to outline an overview of the blocks and there order presented throughout the model binary.
*The Arrows indicate a offset within a block that jumps to another block

Image

Here is my structure for the header block;

Code: Select all

struct HEADER {
	uint32	filetype;
	uint8	unk001;
	uint8	unk002;
	uint8	unk003;
	uint8	unk004;
	uint16	table1_count;
	uint16	bone_count;
	uint32	unk005;
	uint32	unk006;
	uint32	unk007;
	uint32	unk008;
	uint32	unk009;
	uint32	bone_addr;
	uint32	tex_file_addr;
	uint32	table1a_addr;
	uint32	table5_addr;
	uint32	table4_addr;
	uint32	table7_addr;
	uint32	unk016;
	uint32	table1_addr;
	uint32	table2_addr;
	uint32	table3_addr;
	uint32	table6_addr;
	}
To give a broader overview; table1 is the mesh table, and it does a typical thing that SC2 did which it presents mesh data as either static or skinned.
Skinned data requiring local bone indices of course which are important for deforming the mesh back to world space.

Theres a lot of ridiculous jumping from table1 to to geometry block, alot of the table subs, table1a - table1d mostly just contain a single offset to the next table.... anyways my maxscript is VERY messy lol

But here is the current script (it needs fixing)
[maxscript]_vmp_imp__by_mariokart64n.zip

I'm having 2 problems at the moment that I've been unable to resolve;
1.) direction of the mesh faces cause the mesh to have flipped cases all over
2.) for some reason the lips are distorted

Image
Image
*(manually corrected flipped faces to emphasize the lip issue)


I can live with the flipped face issue, but the face being distorted is a real problem, and looking at zaramot and fatducks screenshots I'm thinking my method of transforming the mesh to world space is flawed.

If anyones still interested in this game, please have a look at the script and give your thoughts

line #1205 in my maxscript shows how I'm transforming the vertices to world space, it works for everything except the lips on the face

Code: Select all

tfm = matrix3 1
tfm.row4 = vert2 / wt
tfm*=boneArray[table1a[mesh_object].indices[(bit.shift bi -2) + 1] + 1].transform
vert+= tfm.row4  * wt
You do not have the required permissions to view the files attached to this post.
Research: [DOA2U] [DOA5U]

User avatar
Scorpio21
ultra-n00b
Posts: 1
Joined: Sat Apr 25, 2020 4:08 pm

Re: Soul Calibur 3 Modding

Post by Scorpio21 » Sat Apr 25, 2020 4:11 pm

nice it'll be cool if kratos was in sc3

User avatar
NicotineCaffeine
ultra-n00b
Posts: 7
Joined: Fri May 29, 2015 5:42 pm

Re: Soul Calibur 3 Modding

Post by NicotineCaffeine » Sat Jun 27, 2020 7:44 pm

I read the thread only now, mostly becouse i thought it was stopped with sc2, anyway, fixing the faces issue it should be easily done with 3ds max. You can use the tool that turns the faces or you could try the option that tries to fix them entirely (but usually doesn't work very well) or you can try with milkshape the option that turns all the faces on the same direction (face to front) usually that works perfectly... for one side of course. Then you'll have to hide them and do the same on the other side. I had to do that when i used a tool made by another dude here for ripping the models from Dark Alliance and Champions of Norrath games.
By the way your vmp plugin works only for 3ds max 2019? I have the 2016 version and it fails to open/run when i try.
(p.s. the pmd plugin works fine for example)

Post Reply