HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

WorldWatcher's Arsenal

02-04-2005, 12:55 AM#1
Guest
As some of you might know (well basically only Oinker and Blink), I am developing a modeling tool that is based on an XML presentation of mdl (and other) files.
I completed the first steps - which included writing the parser to and from XML, and writing a small GUI. I attached a screenshot below to give you an idea.

It will be an mdl editing tool, like Oinkerwinkle's ones, so I'll try to make them complementary, focusing on stuff for which there is a high demand and no tool available yet.

Possible features include:
* Automatic validation of an mdl file. This checks whether the mdl is wellformed - not only syntax, but content too. It will, for example, check whether every object has a pivot point, the object_ids are strictly rising by 1, etc.. It will notify the user, giving him the option to attempt to automatically correct the error.
* An easy to use tree view, to edit your model. Much easier than always having to find the right parts in a mdl file. Together with the automatic validation, this should make the tedious task of notepad mdl editing a lot quicker/less errorprone.
* Tons of low level operations for adding, modifying and removing geosetanims, ribbonemitters, cameras, sequences, hero glow and the like. Different operations on geosets and bones will be available too.
* An editable 2d view, to which you can easily add vertices and faces.
* A slow 3d view, which enables you to view your progress. Changes to the 3d view aren't live for the moment.
* Merging two or more geosets within the same model to one.
* Splitting geosets within a model to different geosets, based on the bones. E.g. split a geoset into the vertices of the “Head� bone and the vertices of the rest.
* Operations to reduce poly count, like removing double vertices and faces(exported 3dsmax/gmax models sometimes have those, if you fuse two meshes into one and don't weld the vertices at the same location).
* Repository files, xml files in which you can save parts of or whole models, to easily fetch those parts again later on. For example, you could save the head of a dwarf in it, and fetch it a week later to geomerge it on the head of a footman. This will come with a GUI for easy use.
* Reducing mdl file size by using less decimals for points, reducing polycount(with possible disastrous effects) and merging geosets and the like.
* Last but not least, and probably the most important, high level operations to produce animations. Animating stuff is the major problem in wc3 modelling, especially for the people without 3dsmax5. Especially with this I'll need help, since it isn't very easy to make an easy to use interface for making animations. I'll first try to make my 3d view to render existing animations, so those can be viewed. This should already be a big help when editing the mdl tree. After that I could try to define some high level primitives on different parts of the models(like “stretch arms�). But I don't think the results of that will be that great.
* Automatic geosetmerging, based on some expert rules. No guaranteed results though ^^ And in the line of that, random model generation from the repository, based on some constraints. Maybe that's too funky.. We'll see.

Expected bugs:
I didn't test the parser extensively. So, I expect bugs to pop up once in a while. I only tested it with about 10 models. Note that the only places where comments are allowed are after a “Geoset {“ line and after a “ParentId x,� line. (At first, I didn't want to allow comments, but I made it compatible with war3fileconverter and dex script export mdls).

Known problems:
XML filesize. MDL's are already large. My XML representation is even bigger because of the tags. In the demo they are about twice the size of their mdl equivalents. In a future version, I will probably shorten all tags to about 1 letter(e.g. "g" instead of "Geoset") which will make them about 50-100kb larger than the mdl files. Especially for Repositories this is a problem. If you want to store 100 complete models in them, they are quickly around 50MB. So it is better to just store separate parts in them – like the geometry of a geoset, or a ribbonemitter, or something.

By now, you probably think:
“What's the reason of this post? Your program can only load a model, scale it, add some vertices and faces, view its geosets 3d and convert it to some stupid xml presentation. Boohoo.�

Well, first of all, I would like to know whether there are people who have other specific ideas for additional features. Especially stuff that you do in your every day mdl editing life.
Second, I would really like to know which of the above features can wait, and what features should be implemented as soon as possible. My wc3 modding life is limited to about 4 hours/day, and that's already too much. Luckily I'm not much of a sleeper. I'm also planning my own project, and helping on two other ones. Basically, I will be able to spend about 1-2hours on writing this program every day. In short, all the above features will be implemented one day, but it will take a while. So, I would like to implement the most useful/high demand stuff first.

You again:
“Damn, all that work for wc3 mdl files! By the time this is finished, wc3 modding is dead.�
This program can easily be extended to other model formats, instead of just wc3 ones. So, if you decide to move on to another game, I could extend the program to the new model format if I feel like it. If I don't feel like it, you could write the parser yourself, and still use the program by performing operations on the xml file. The xml presentation is likely to be extended and generalized in the long run.


So, about the screenie: at the left there will mostly be info. In the center there are two things. There is the view on the current operation(“scale model� in this case) above. The editable tree representation will come here too. On the right, there is either the 2D or the 3D View.
I will upload a stand-alone executable one of the next days, when the program got a bit more functionality. So, please tell me what to add first.
02-04-2005, 01:50 AM#2
luckyownz92
Sweet screenie all this sounds awesome too. You going to get help with this ? If OinkerWinkle and Blinkboy help this thing will be almost better than 3dsm :P (yeah right)
02-05-2005, 04:55 PM#3
Guest
Quote:
Originally Posted by WorldWatcher
* Merging two or more geosets within the same model to one.
* Splitting geosets within a model to different geosets, based on the bones. E.g. split a geoset into the vertices of the “Head� bone and the vertices of the rest.
* Operations to reduce poly count, like removing double vertices and faces(exported 3dsmax/gmax models sometimes have those, if you fuse two meshes into one and don't weld the vertices at the same location).[...]
* Last but not least, and probably the most important, high level operations to produce animations. Animating stuff is the major problem in wc3 modelling, especially for the people without 3dsmax5. Especially with this I'll need help, since it isn't very easy to make an easy to use interface for making animations. I'll first try to make my 3d view to render existing animations, so those can be viewed. This should already be a big help when editing the mdl tree. After that I could try to define some high level primitives on different parts of the models(like “stretch arms�). But I don't think the results of that will be that great.

These are the most appealing functions to me. Automatic geoset merging above else (exept animations, of course, but i'm referring to the immediate future :P); the optimizing option sounds intresting too, it would help to reduce the filesize (btw: do you think is possible to automatically detect and remove useless materials, animations, eventobjects?)
The 3d view, on the other hand is not REALLY needed, at least for now - the wc3viewer is still good enough, but that's just my opinion.

I'm really concerned about the space problem you mentioned, though. Or will the converted mdx files return to the normal filesize?
02-05-2005, 06:12 PM#4
divine_peon
Quote:
Originally Posted by WorldWatcher
You again:
“Damn, all that work for wc3 mdl files! By the time this is finished, wc3 modding is dead.�
who cares about that? i think you're doing a good job. and for the newbs at wc3 modding like me, it's a great help! keep it up!

and by the way, ww, i'm just interested. what course have taken up in college?
02-05-2005, 06:27 PM#5
flamesforzuljin
woaw im defenitly looking forward to this....

keep it up.
02-06-2005, 12:40 PM#6
BlinkBoy
hmm it looks like you have progressed since the last day we spoke, i hope you fixed the JDK lil error, anyway are you going to add 3 portals for left, top, front views? i think that would help in setting the animations, also i found the formula to turn quatertions into Wc3 Hermite.
02-06-2005, 06:49 PM#7
Guest
@luckyownz92
I might get some mdl related help from Oinkerwinkle and Blink, but I'll probably code the entire program myself.

@Nasrudin
Thanks for the feedback. I'll make sure the geoset merging and splitting is done this week.
For the optimisation thing: It is already able to remove all double faces and vertices. I'm experimenting with vertices that are "near" to each other too. I'll probably write a weld operation that welds all vertices that are within a certain threshold of each other.
I like the "remove redundant stuff" idea. It is easy to detect redundant stuff in the model, as long as I know the rules to detect it. For example, making code for
"If a material is never used, remove it" is very easy, since it is obvious that a Material x is only used when there is a "MaterialId x," line in the mdl. It would actually be about two lines of code. There are numerous other rules I could make like this, both for removing redundant code, or for detecting/correcting errors. Please share those that you already encountered yourself.
The filesize only matters for the XML presentation. You can save it back to mdl(you dont even need to see any xml) and it will have the same filesize as a regular mdl. So it won't cause any problems for regular models. But for the repository it is a problem, since that will be entirely in XML.

@BlinkBoy
The JDK lil error for the 100kb file i sent you is not a real error. It is a message that you have to install the Java Runtime Libraries in order to execute the program. But not everyone is going to install a JDK and the 3D API I use for it(300MB), so I made a standalone executable. Which is an horrid 6MB(3.5MB without the 3D view - so I might remove the 3D view until it is really needed), which is much for a demo that only does some basic stuff. That's the reason why I didn't upload it yet. All classes I need for it are already in it now. The size of the program won't raise a lot anymore. So I rather wait till the end of this week - the program should have some useful features by then. Blink, get on msn though, if you want it already - I could use someone to get some first impressions and maybe some feedback on the current UI/functionality.
For the 2D View, you'll probably be able to choose from a droplist between front, left, right and top, and switch between them. But since Oinker made that already(vertex modify), it does have low priority.


Please keep the suggestions coming. Nasrudin was the only one who actually gave some feedback on what features to include next.
02-07-2005, 02:04 PM#8
BlinkBoy
Quote:
Originally Posted by WorldWatcher
@luckyownz92
I might get some mdl related help from Oinkerwinkle and Blink, but I'll probably code the entire program myself.

@Nasrudin
Thanks for the feedback. I'll make sure the geoset merging and splitting is done this week.
For the optimisation thing: It is already able to remove all double faces and vertices. I'm experimenting with vertices that are "near" to each other too. I'll probably write a weld operation that welds all vertices that are within a certain threshold of each other.
I like the "remove redundant stuff" idea. It is easy to detect redundant stuff in the model, as long as I know the rules to detect it. For example, making code for
"If a material is never used, remove it" is very easy, since it is obvious that a Material x is only used when there is a "MaterialId x," line in the mdl. It would actually be about two lines of code. There are numerous other rules I could make like this, both for removing redundant code, or for detecting/correcting errors. Please share those that you already encountered yourself.
The filesize only matters for the XML presentation. You can save it back to mdl(you dont even need to see any xml) and it will have the same filesize as a regular mdl. So it won't cause any problems for regular models. But for the repository it is a problem, since that will be entirely in XML.

@BlinkBoy
The JDK lil error for the 100kb file i sent you is not a real error. It is a message that you have to install the Java Runtime Libraries in order to execute the program. But not everyone is going to install a JDK and the 3D API I use for it(300MB), so I made a standalone executable. Which is an horrid 6MB(3.5MB without the 3D view - so I might remove the 3D view until it is really needed), which is much for a demo that only does some basic stuff. That's the reason why I didn't upload it yet. All classes I need for it are already in it now. The size of the program won't raise a lot anymore. So I rather wait till the end of this week - the program should have some useful features by then. Blink, get on msn though, if you want it already - I could use someone to get some first impressions and maybe some feedback on the current UI/functionality.
For the 2D View, you'll probably be able to choose from a droplist between front, left, right and top, and switch between them. But since Oinker made that already(vertex modify), it does have low priority.


Please keep the suggestions coming. Nasrudin was the only one who actually gave some feedback on what features to include next.

well ok, i hope to find you out over there at 8:00 pm as always, i hope i don't get lost around playing AoM.
02-08-2005, 07:03 PM#9
Guest
I was thinking also at the possibility to remove bones, eventOBJ, etc judging from the animations. Sometimes deleting some parts of a geoset (ie footman's sword) one or more bones become useless. Same thing for animations, expecially with morphing units. Let's take for example the demon hunter: i want to convert it in a rogue and i don't need the demon form. Most users (like me) just delete the alternate animations, but the model still probably have about 100 kb of useless lines. If there's a way to check what mdl parts are used by animations that could be a great optimizing option.
02-13-2005, 06:43 PM#10
Guest
@Nasrudin:
Yes, that's possible.


Anyway, this is discontinued here because i dislike the policy on this site. I won't be visiting here anymore. I will look for another place to post progress.
02-14-2005, 01:48 AM#11
luckyownz92
Bye Bye WorldWatcher we will miss you gl on your project. Can a mod close this since WorldWatchers gone