HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

MDX Format

07-18-2002, 10:05 PM#16
Guest
just wanna keep my eye on this thread

hey guys great work figureing that shit out! keep it up soon we ll be able to change what ever we want ;!)

-twisted out
07-19-2002, 06:16 AM#17
Guest
Okay, if .mdx -> .3ds is possible, isn't theoretically possible that you could import at least the geometry of a custom unit (and perhaps texture too)? Granted, the animation wouldn't work, but it would be neat to see something like this. Even if animation isn't completely understood, perhaps custom units (until a real fix is figured out) could take on the animations of an existing unit? Just throwing some ideas out there.
07-19-2002, 06:52 AM#18
KMK
The best you could do, simply, is modify the vertex positions in an existing model and put those new positions in the mdx file with a new skin. The model would have to be similar, like an exaggerated version or something. The other option is a unit that is completely static, I don't know whether warcraft will accept it.
Other than that, or editing an mdl file you'll probably have to wait for an mdx exporter.

KMK
07-25-2002, 02:01 AM#19
Sypher
TiCaL Software

Go to this site and look in there discription of MDX format. There Importer dosen't work for me but, it says some stuff about the format so you mite be able to use that.
07-25-2002, 03:22 AM#20
weaaddar
WRONG Thats Kingpins MDX this is war3 mdx...TOTALLY DIFFERENT.
07-28-2002, 04:47 AM#21
Sypher
Yeah I kinda figured it was different, but hey, I tryed.:D
08-03-2002, 06:08 PM#22
Nub
It's been a while, I've been screwing with the MDX files for a bit and have some questions/comments etc.

In the MODL chunk I think KMK's format details might be one long off as viewing the signpost MDX, it is laid out as follows:

struct MODL {
long nbytes;
ASCII name; (0x150 bytes)
long ???; (0)
float BoundsRadius;
float MinExtx, MinExty, MinExtz;
float MaxExtx, MaxExty, MaxExtz;
long BlendTime;
}

but in KMK's format details, there are supposed to be two unknown 0-valued longs between name and MinExtx...

there also seems to lack an entry in there for NumGeosets and NumBones? anybody know what that's about?
08-03-2002, 06:36 PM#23
Guest
This might be off in left field, butaAs far as the bones field go, there shouldn't be any. Bones are for animation and as far as I know, the signpost doesn't move. So I think it's safe to say, that is why there is no bones entry in the signpost.mdx. As far as geosets, I have no idea. I was thinking geosets could be the number of "extras" in the .mdx (corpse, other forms of the unit, shines, sword swipes, etc...) and the signpost wouldn't have any of these either.

Anyway, I apoligize in advance if this is totally wrong. I'm sure someone more knowledgeable will respond soon :)
08-04-2002, 04:20 AM#24
KMK
Easily explained. The models I was looking at were units. Their bounds radii are located in SEQS and GEOS, and maybe other areas. They don't have a bounds radius value in MODL. Where ever you see long ???; (0) it could be a float for all I know or two shorts or four bytes. I just made the assumption that it was a long. As for not having a NumBones and NumGeosets, I assume that just means there are no bones or geosets.

Thanks for the info, hope this explains it.
08-12-2002, 10:46 PM#25
AquaDaishi
I have a questions about the OBJ structure in KMK's format...

1) I know that the type(in the format it's ???, but it's pretty obvious what it means...) of everything is, and everything loads fine into the program, except for the HELP stuff...

The problem is that the HELP is 0 in type, therefore a single test can't be applied to see if the current block of data is a HELP OBJ, since 0 is very common in the mdx. For the editor I'm writing I'm having to rely on educated guesses of common patterns that I've noted in OBJ things blocks.

For now my program works fine for editing mdx vertices(and saving too, as Nub has shown in the ingame screen shots!), but I'm unsure as to if there's one model in there that will slip past my educated guesses and throw the entire model of, and I would like to eliminate that possibility, any ideas?

-Fredric
08-13-2002, 07:02 AM#26
Nub
Also, do you have any idea of the layout of the PRE2 struct? There are _tons_ of possible configs for particles and I was wondering if you had found anything else out about it.
08-13-2002, 08:13 AM#27
KMK
Before the group of helpers you have 'HELP', isn't this enough. When you find HELP you grab the following objects as helpers until you come across a new tag, probably ATCH or PIVT.

What file have you seen the PRE2 struct?
08-13-2002, 08:58 AM#28
Nub
PRE2 is Particle Emitter, it's in a lot of hero models and the specific file I had trouble with is Doodads\LordaeronSummer\BannerOrc\BannerOrc1.mdx
08-13-2002, 02:34 PM#29
AquaDaishi
Well, now it works fine for everything I tried, thanks for the idea. :)

-Fredric
08-27-2002, 03:42 PM#30
Nub
PRE2 Struct (not entirely complete) a couple of flags I'm not sure about and I don't know if the other KP* have InTan and OutTan options as well.

Code:
PRE2
	long	nbytes;
	struct {
		long	nbytes;
		long	???;	(96;152;252;268;320)
		ASCII	name;	(0x50 bytes)
		long	objectid;
		long	parent; (0xFFFFFFFF if none)
		short	flag1;	(0x0001:None; 0x0090:Unshaded)
		short	flag2;	(0x0000:None; 0x0200:LineEmitter; 0x0008:ModelSpace)
		(KGRT)
		(KGTR)
		(KGSC)
		float	speed;
		float	variation;
		float	latitidue;
		float	gravity;
		float	lifespan;
		float	emissionrate;
		float	width;
		float	length;
		long	FilterMode; (0:Blend;1:Additive)
		long	rows;
		long 	columns;
		long	???;	(0:Head; 2:Both)
		float	taillength;
		float	time;
		struct {	(SegmentColor)
			float	Red, Green, Blue;
		} color[numsegments]
		byte	Alpha1, "2, "3;
		float	ScalingX, "Y, "Z;
		long	LifeSpanUVAnim1, "2, "3;
		long	DecayUVAnim1, "2, "3;
		long	TailUVAnim1, "2, "3;
		long	TailDecayUVAnim1, "2, "3;
		long	TextureID;
		long	???; (0)
		long	???; (0)
		long	???; (0)
		(KP2V)
		(KP2N)
		(KP2E)
	} particleemitters[numpes];

KP2V
	long	numentries;
	long	LineType;	(0:don't interp;1:linear;2:hermite;3:bezier)
	0xFFFFFFFF;
	struct {
		long	frame;
		float	visibility;	(0=>1)
	} visibility[numentries]

KP2E
	long	numentries;
	long	LineType;	(0:don't interp;1:linear;2:hermite;3:bezier)
	0xFFFFFFFF;
	struct {
		long	frame;
		float	rate;
	} emissionrate[numentries]

KP2N
	long	numentries;
	long	LineType;	(0:don't interp;1:linear;2:hermite;3:bezier)
	0xFFFFFFFF;
	struct {
		long	frame;
		float	length;
		if (LineType > 1) {
			float	InTan;
			float	OutTan;
		}
	} length[numentries]