Jump to content

[PC] Ubisoft's .mmb model files (2d/2.5D? type games)


Recommended Posts

Posted (edited)

Hello, i'm looking for a way to export the mmb file models from games that use Ubisoft's snowdrop engine, I know there's tools that can achieve this already (noesis script for Tom clancys the division) but there are certain mmb files from 2D games with this engine that can't be read by these scripts, I will attach some samples of these files, i have already tried to reverse engineer the model loading functions using IDA but it's too complex for me to do, i'm sure someone with experience can do this tho..i would be very grateful...

i only need exporting to any format really (maya, blender, anything), i don't even need the textures on the model just want the object itself without textures

thanks

 

 

mmb_samples.zip

Edited by notpies
Posted
4 hours ago, shak-otay said:

Hello and thanks for the "working sample". But it's too small to draw any conclusions, imho.

thank you for the reply, unfortunately thats the only model file in the game that can be opened by the TCTD script, all the other models are in the other mmb format, so i really didn't expect to get much out of that sample, i can however upload more of the other mmb samples (the ones that i need them to load) if those i uploaded are not enough, the only thing that i know works with the TCTD script is the bone name and ID reader, so maybe that's a start

  • Engineers
Posted

ok,

prp_pushpulldestroytest_bucket.mmb has about 135 objects with maybe bounding boxes defined:

group1|floorAndObjects53plane
# 0x7ef: verts= 4
 -1.343468 -0.220959 0.001076
 1.072262 0.224435 0.001076
 1.351039 -0.135603 0.001738
 0.001076 1.218122 1.207865

group1|leftSideWallAndObjects54plane1
# 0x8a6: verts= 4
 0.732678 -0.170821 0.003166
 1.078642 0.175142 0.003166
 1.078805 0.905660 0.002160
 0.003166 0.173881 0.172982

group1|leftSideWallAndObjects18plane1
# 0x95d: verts= 4
 0.359302 0.030990 0.001916
 0.670671 0.342360 0.001916
 0.704139 0.514986 0.186675
 0.001916 0.156494 0.155685

[...]

group17|leftSideWallAndObjects29plane_4
# 0x6959: verts= 4
 -1.637227 -0.043439 0.008500
 -1.391622 0.184675 0.008500
 1.637416 -1.514424 0.070618
 0.008500 0.147115 0.122802

bink_meshplane.mmb

# 0x9f: verts= 4
v -9.599998 -5.399999 0.000000
v 9.599998 5.399999 0.000000
v 11.014533 0.000000 0.000000
v 0.000000 11.014533 9.599998

The following values should define the plane, obviously

# 0x12b: verts= 4
v 9.599998 -5.399999 0.000000
v 9.599998 5.399999 0.000000
v -9.599998 -5.399999 0.000000
v -9.599998 5.399999 0.000000

 

Couldn't find similar for the bucket, only v 32767.000000 32767.000000 32767.000000

but lots of word indices. Maybe they form 2D meshes?

 

Posted
10 minutes ago, shak-otay said:

ok,

prp_pushpulldestroytest_bucket.mmb has about 135 objects with maybe bounding boxes defined:

group1|floorAndObjects53plane
# 0x7ef: verts= 4
 -1.343468 -0.220959 0.001076
 1.072262 0.224435 0.001076
 1.351039 -0.135603 0.001738
 0.001076 1.218122 1.207865

group1|leftSideWallAndObjects54plane1
# 0x8a6: verts= 4
 0.732678 -0.170821 0.003166
 1.078642 0.175142 0.003166
 1.078805 0.905660 0.002160
 0.003166 0.173881 0.172982

group1|leftSideWallAndObjects18plane1
# 0x95d: verts= 4
 0.359302 0.030990 0.001916
 0.670671 0.342360 0.001916
 0.704139 0.514986 0.186675
 0.001916 0.156494 0.155685

[...]

group17|leftSideWallAndObjects29plane_4
# 0x6959: verts= 4
 -1.637227 -0.043439 0.008500
 -1.391622 0.184675 0.008500
 1.637416 -1.514424 0.070618
 0.008500 0.147115 0.122802

bink_meshplane.mmb

# 0x9f: verts= 4
v -9.599998 -5.399999 0.000000
v 9.599998 5.399999 0.000000
v 11.014533 0.000000 0.000000
v 0.000000 11.014533 9.599998

The following values should define the plane, obviously

# 0x12b: verts= 4
v 9.599998 -5.399999 0.000000
v 9.599998 5.399999 0.000000
v -9.599998 -5.399999 0.000000
v -9.599998 5.399999 0.000000

 

Couldn't find similar for the bucket, only v 32767.000000 32767.000000 32767.000000

but lots of word indices. Maybe they form 2D meshes?

 

hmm..yeah its probably 2d meshes, not 100 percent sure

btw the game the models are from is: https://tcrf.net/South_Park:_The_Fractured_But_Whole (just for more context)

  • notpies changed the title to [PC] Ubisoft's .mmb model files (2d/2.5D? type games)
Posted
5 hours ago, shak-otay said:

ok,

prp_pushpulldestroytest_bucket.mmb has about 135 objects with maybe bounding boxes defined:

group1|floorAndObjects53plane
# 0x7ef: verts= 4
 -1.343468 -0.220959 0.001076
 1.072262 0.224435 0.001076
 1.351039 -0.135603 0.001738
 0.001076 1.218122 1.207865

group1|leftSideWallAndObjects54plane1
# 0x8a6: verts= 4
 0.732678 -0.170821 0.003166
 1.078642 0.175142 0.003166
 1.078805 0.905660 0.002160
 0.003166 0.173881 0.172982

group1|leftSideWallAndObjects18plane1
# 0x95d: verts= 4
 0.359302 0.030990 0.001916
 0.670671 0.342360 0.001916
 0.704139 0.514986 0.186675
 0.001916 0.156494 0.155685

[...]

group17|leftSideWallAndObjects29plane_4
# 0x6959: verts= 4
 -1.637227 -0.043439 0.008500
 -1.391622 0.184675 0.008500
 1.637416 -1.514424 0.070618
 0.008500 0.147115 0.122802

bink_meshplane.mmb

# 0x9f: verts= 4
v -9.599998 -5.399999 0.000000
v 9.599998 5.399999 0.000000
v 11.014533 0.000000 0.000000
v 0.000000 11.014533 9.599998

The following values should define the plane, obviously

# 0x12b: verts= 4
v 9.599998 -5.399999 0.000000
v 9.599998 5.399999 0.000000
v -9.599998 -5.399999 0.000000
v -9.599998 5.399999 0.000000

 

Couldn't find similar for the bucket, only v 32767.000000 32767.000000 32767.000000

but lots of word indices. Maybe they form 2D meshes?

 

i was fiddling around with the game's code and managed to make a logger for the mmb file reader buffer, don't know if anything useful will come out of it, did it with 4 samples, including the one that works with the TCTD script for comparison (sample 3 is more complex, however i know some more info about it), i also zipped some decompiled code that may help a bit (it contains read funcs that can be viewed on the mmb read logs too)

i have tried to get the models to be view for so long i might even pay for whoever can give me a script for this

dumps.zip

  • Like 1
  • Engineers
Posted (edited)

Did you sum up the bytes logged?

For prp_template_fartkourinspect.mmb, which has a size of 285 bytes I counted 280, so 5 missing? (Maybe I miscalculated...)

See, you skipped the header (signature?)? 4D4D428B

Then the file size to follow: 0x11D

Would be nice if you could give it more structure, the 64 bytes as a matrix,

and the string "temp|spmPlanar1" (with preceding 0F 00, which is the string length, 15)

for example.

In the following sequence 12 12 4 12 the 4 confuses me (while the 12 bytes represent vectors each, imho).

Edited by shak-otay
Posted
9 hours ago, shak-otay said:

Did you sum up the bytes logged?

For prp_template_fartkourinspect.mmb, which has a size of 285 bytes I counted 280, so 5 missing? (Maybe I miscalculated...)

See, you skipped the header (signature?)? 4D4D428B

Then the file size to follow: 0x11D

Would be nice if you could give it more structure, the 64 bytes as a matrix,

and the string "temp|spmPlanar1" (with preceding 0F 00, which is the string length, 15)

for example.

In the following sequence 12 12 4 12 the 4 confuses me (while the 12 bytes represent vectors each, imho).

turns out the game has another read function and i have seen it uses it for the magic/header and some other stuff, ill redo the logging while hooking that func too, give me a moment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...