Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Model Formats

Experienced Elementalist
Joined
Nov 28, 2007
Messages
235
Reaction score
261
Now a development :thumbup1:

I'm exploring the new ELU model formats with RadierZ and GunZ 2 - and releasing source as I go!!


Current Source

Download: x1nix-elu-mesh-demo.zip (only v5011 ELU models supported at the moment)




Original Post
Has anyone taken a look at the updated ELU formats?

I'm trying to find the time to look through the client for clues (it's a debug client?) but I could only find vertex information last time I went through with a hex editor, and wasn't sure if anyone else had gotten further?

Strings are now variable length, material info is now part of a separate xml file, and it looks like duplicate values have been indexed. That's all I have at the moment :sleep:

Next step is some face info
 
Last edited:
DRGunZ 2 Creator
Loyal Member
Joined
Jan 21, 2007
Messages
4,493
Reaction score
161
Phantom* should be looking into them to try and make an importer (at least for GunZ 2). Not sure about RaiderZ (but they use the same file system)

The only thing I can say is that everything in the .mrf files won't be messed with till there is a packer made. So only the stuff in the server files, and the main directory of the RaiderZ client is useful.
 
DRGunZ 2 Creator
Loyal Member
Joined
Jan 21, 2007
Messages
4,493
Reaction score
161
Phantom* <-- his name has the asterisk
We need an encrypt/pack tool so we can change stuff in the client. Have you tried talking to Kyhoh?
 
Experienced Elementalist
Joined
Nov 28, 2007
Messages
235
Reaction score
261
I'd just like to take a look at the models. I'm sure I can figure out enough of the format to do that :):

That chicken (and other creatures from the NPC01/NPC02 folders) use an older format (500C) than some of the other models (500F), so I'm looking at the newest version first..

I'm still testing my script on other models at the moment.. so this isn't a dev quite yet!

Edit (with a better example)

x1nixmzeng - Model Formats - RaGEZONE Forums
 
Last edited:
Experienced Elementalist
Joined
Nov 28, 2007
Messages
235
Reaction score
261
Strange i thought u cud just use the same exporter as gunz, afterall it is ELU... Nevermind lol

They use later ELU versions. Here are some examples:

  • Blender scripts support 5004, 5005, 5006, and 5007
  • Earliest model is 5002 (the dove from the church intro, fyi)

Now, from 5007 (not the same as previous 5007) to 500F

The major difference is that the data has been indexed to avoid duplicate values - and I'm sure there is some new armature to go with their new Physx wizardry.
 
Newbie Spellweaver
Joined
Jul 3, 2011
Messages
5
Reaction score
0
I've been looking around and haven't seen much discussion on the newer elu formats.

Have you made any progress since then?
Maybe you could share what you have found so far :)
 
Experienced Elementalist
Joined
Nov 28, 2007
Messages
235
Reaction score
261
I can now parse the entire format for some new ELU versions, but haven't had much time to expand on it much.

I started writing a model viewer, which can read and render the first mesh with it's texture, although it's lacking XML parsing, etc.

When I get time, I'll get it reading every meshes, then look to have it supporting other versions - and somewhere inbetween post a dev demo :)

x1nixmzeng - Model Formats - RaGEZONE Forums

My current code for reading the world matrix might be interesting. Not quite sure how I ended up with such a twisted matrix!

Code:
	float *tmpf = (float *)malloc(sizeof(float) * 16);
	eluFile->Read(tmpf, sizeof(float) * 16);

			
	v->worldm[0 ] =-tmpf[0 ];
	v->worldm[1 ] = tmpf[2 ];
	v->worldm[2 ] = tmpf[1 ];
	v->worldm[3 ] = tmpf[3 ];

	v->worldm[4 ] =-tmpf[8 ];
	v->worldm[5 ] = tmpf[10];
	v->worldm[6 ] = tmpf[9 ];
	v->worldm[7 ] = tmpf[11];

	v->worldm[8 ] =-tmpf[4 ];
	v->worldm[9 ] = tmpf[6 ];
	v->worldm[10] = tmpf[5 ];
	v->worldm[11] = tmpf[7 ];

	v->worldm[12] =-tmpf[12];
	v->worldm[13] = tmpf[14];
	v->worldm[14] = tmpf[13];
	v->worldm[15] = tmpf[15];
 
Newbie Spellweaver
Joined
Jul 3, 2011
Messages
5
Reaction score
0
Looks like you've got the geometry all figured out.

I don't suppose you could post or send a breakdown of one of the formats? (I'm assuming they're similar).

I started with 0x5011 but didn't get very far after the matrix at the beginning.
Or maybe it shares similar patterns with the older formats?
 
Last edited:
Experienced Elementalist
Joined
Nov 28, 2007
Messages
235
Reaction score
261
I'm posting some source I wrote to test my ELU loader. It's my most recent code and should actually be useful (as it's not written in Pascal :wink:)!

A work-in-progress, so feel free to contribute or leave me some feedback :):

(Also, could a mod move this into the development section?)
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Jul 3, 2011
Messages
5
Reaction score
0
Nice, I didn't even notice those 3's in the faces section and just thought it was a bunch of random stuff, though these are some odd dwords in each face entry.

The 4th dword in the file seems to be number of objects in the file, where said object could be a mesh or a bone, though I'm not sure if there's a way to distinguish just how many bones are there.

Anyways I re-wrote the code in python and tossed it into my batch exporter.
 

Attachments

You must be registered for see attachments list
Last edited:
Experienced Elementalist
Joined
Nov 28, 2007
Messages
235
Reaction score
261
Don't assume faces always use 3 (triangles) - I know I've done that.. but it's bad - and bones are determined by the mesh name.

Also, where do you host your batch exporter (and welcome to RaGEZONE?) ?
 
Newbie Spellweaver
Joined
Jul 3, 2011
Messages
5
Reaction score
0
lol ya, though I assume most MMORPG's use tri's (cause it's easier to render? Don't know, but that's all I've seen so far). My internal structures and export scripts can handle an arbitrary number of vertices per face though.

Bones determined by mesh name...not too clear what that means.

I notice every bone after the first one has another bone name, which refers to a previously defined bone. Is this how they're linking things together?

I don't host the converter anywhere. It's in a mediafire folder and I've put a link to it on xentax (tutoral section, Sanae 3D)

It is mainly an instructional tool for beginners to learn how to figure out a format without having to deal with export scripts or understanding the functions required to read and unpack binary data. I wrote it when I first wrote a converter for a simple format and then figured I need to standardize my methods.

All you need is to write a plugin for your format, type in some definitions so the engine can recognize it, and then throw your models at a batch file. Might be useful for getting the overall outline of the format, but then you'd have to move on to more dedicated tools for the "advanced" stuff.

Currently supports export in OBJ and MQO format, though I never finished writing the OBJ material file. I still need to export it to a format that can render normals properly, and I haven't even done bones yet since I don't understand them enough to be able to make something out of it.
 
Last edited:
Back
Top