1. Are you planning to upload your awesome tool to Hive? Please review the rules here.
    July 9, 2018: The rules for the Tool Section have been revised. Please be sure to read the revisions.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still haven't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. Lead your forces to battle in the 15th Techtree Contest. The call is yours, commander!
    Dismiss Notice
  5. The reforging of the races is complete. Come see the 14th Techtree Contest Results.
    Dismiss Notice
  6. It's time to choose your horse in the race - the 32nd Modeling Contest Poll is up!
    Dismiss Notice
  7. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Matrix Eater 3D Model Editor

Submitted by Retera
This bundle is marked as approved. It works and satisfies the submission rules.
The Matrix Eater

With support from the community, I've been working on this tool for years. More so, I became a user of it, much to the dismay of the people who asked for the best and brightest features, because I have hardly added any features in favor of just using the program how it is.

What does the Matrix Eater do?

You can think of the Matrix Eater as an alternative to Magos's Model Editor or MdlVis, but I usually use all three of them in conjunction.

The Matrix Eater is visually like a multi-geoset version of Oinkerwinkle's Vertex Modifier from years ago, but it has the purple icon on the View Controller window which lets you move and edit Pivot Points also.

In addition, if you do Tools > Mirror and mirror a selection that includes pivot points, it will mirror the animation data. So you can make a Portrait model that faces the opposite way, or something, and still animates correctly.

The program understands the MDL format in its entirely, and has support for MDX that is newer and slightly less tested. If it spits out a broken MDX, then save as MDL and convert to MDX using other software. It can do this for you, if you go to View -> Use Native MDX Parser and turn it off, then it uses MDLX converter instead of its own code to convert to and from MDX ( so it's less likely to have any bugs ).

If you use File -> Import it can be like magic and do what you need, or break things. This new version includes pictures along with names to try to show you what part of the model you're looking at. The general idea is that it takes literally everything from a new model, dumps that into the interface alongside the model you already have open, and gives you choices of how to combine them and which new components to include. You can mash "leave all" a bunch and only include an attachment point, or you can import a grunt onto a dragon complete with animations and have an animated orc dragon rider. You just have to micromanage the little buttons and tell the pelvis of the grunt, and everything below it, to attach to the dragon's main body root.

Which version is this?

This is the official upload of the latest version of the Matrix Eater.

If there is anyone using an older version of the Matrix Eater, please stop using it and use this one. Until now, the program was only shared on forums here and there from links which were often broken and pointing to outdated versions.

If this one cannot do what an old version does, please comment on this upload and tell me why so I can fix it.

I really wanted to revamp this program and add new features and write a tutorial before I uploaded it onto the Hive, but I just haven't had time recently, and I want to stop sitting on this updated version because it has several internal fixes that should make it less likely to save buggy MDX models and so I feel the community deserves this new version in case anybody is using the program -- regardless of whether I end up getting the time to improve it to match up with my dreams or not.


I didn't check the box for Linux because I haven't tested it on there for a while, but if you're a Linux user and you want to run it on Linux, just run the JAR. Theoretically it should work, if you have a Warcraft install folder on the linux machine. I've tested that before and it seemed to work.

The real source code the program on Github is this Eclipse workspace:
GitHub - Retera/JWC3: Retera's Java WC3 libraries.

There is a similar one but it is way older and out of date.
Contents

Matrix Eater 3D Model Editor (Binary)

Reviews
eejin
A great tool for editing meshes and animations. There is a lot of functionality there and this tool surely makes editing models a lot easier! Having an undo option in the UV editor would be nice. The program also gives an error that it is missing...
  1. Remixer

    Remixer

    Joined:
    Feb 19, 2011
    Messages:
    1,597
    Resources:
    52
    Models:
    19
    Packs:
    1
    Maps:
    31
    Template:
    1
    Resources:
    52
    Yes, thanks it helped.
     
  2. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    926
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    I need to do more debugging for initGL stuff because generally debugging the graphics code is a headache.

    But please do not make stabs in the dark guessing how to load the MPQs. You have to do this for other old bad software but Matrix Eater is open source and you should be able to download the code and type in a different folder if you want to change where it loads MPQs.
    But to save the headache, I set "View -> Change Game Directory" to be a command to let YOU CHOOSE where to load the Warcraft 3 MPQs from because you need to be able to configure this, sometimes.

    In general, I discovered that whether deliberately or not the Hive has a server that serves all MPQ game files. If people are willing to allow Matrix Eater on the internet, this would actually be a huge advantage now that Blizzard messed up the game with CASC, since I could just make the Matrix Eater download the necessarily textures and such from the Hive while it's running so that it doesn't need MPQ configuration. But then it would require always having the internet, which might annoy some users.

    This stuff is getting annoying enough that the next version will probably have an installer or something where you can choose setup stuff like "Load MPQ Files from Hive" or "Load MPQ Files from MPQ" and maybe even "Load MPQ Files from CASC" if we get there but I'm not promising that I or the open source community is going to be there any time soon. DrSuperGood worked on some CASC Java stuff but he said it's not working yet. He also coded it with Java 10 so he's envisioning that if I was going to use it I would have to make the Matrix Eater require Java 10 instead of Java 8 like it requires right now. In general, if I was going to sell this program, I probably should rewrite it in C++ and make it an EXE so that users do not have to install Java. However, I'm not making any money off of it, and rewriting it in C++ would take me longer than writing it in Java, and writing it in Java took me years, and uses Java libraries written by Hive users like DrSuperGood and oger-lord that would take me even longer to find equivalent stuff in C++. I played with some C++ in Visual Studio and after using gcc it just stressed me out and was annoying and I went back to Java.
     
  3. Kyrbi0

    Kyrbi0

    Joined:
    Jul 29, 2008
    Messages:
    8,043
    Resources:
    1
    Models:
    1
    Resources:
    1
    That's... Tough. Using the Hive seems a great solution, except I'd hate to require the Internet (which is crazy, because it's been years since I modded away from my home computer which is always Internet'd). Perhaps as an option? Options never hurt. : )
     
  4. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    926
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    Well, you raise a good point. After I added 3D into the Matrix Eater, I stopped focusing on support for Matrix Eater without 3D, and I'm pretty sure running it without 3D stuff totally doesn't work now. So, I might run the risk of a similar problem with the internet stuff if I wasn't careful, and then if the Hive site changed, it would be an issue.

    Maybe I could host my own MPQ data service on my personal server, and use that for the Matrix Eater. But maybe people would not like that and feel that it was a shady "calling-home" design, even if I was trying to do it to make the software easier to use. I'm not sure whether I would like a software that behaved like that if someone else offered it to me. That's something for me to think about.
     
  5. Remixer

    Remixer

    Joined:
    Feb 19, 2011
    Messages:
    1,597
    Resources:
    52
    Models:
    19
    Packs:
    1
    Maps:
    31
    Template:
    1
    Resources:
    52
    I think that locating the MPQs from a folder works just fine (as long as it is easy, I just couldn't find the button to do so, perhaps include a 'Locate MPQs' button on the UV wrapping window).

    As a side note, when is saving in .obj format becoming an option? If it is I mean.
    Also, would it be possible to get an option to open an .obj file and then save it as .mdx file? For example 'Open and convert into .mdx' option?
    Would make it easier to work meshes in for example Blender and then just convert them using your tool.

    PS: when you open an .obj file and try to 'save as' it, the proposed file name is [InsertModelNameHere].obj, instead of [InsertModelNameHere].mdx/mdl, even if you click on 'save as .mdx file'.
     
  6. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    926
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    I used a pre-written OBJ parser that I dumped into the code without bothering to learn how OBJ is formatted, and it did not include an OBJ writer. Also, I want to be as compliant with Blizzard as possible (while still accomplishing my WC3 modding goals) and I have no interest in converting WC3 models into other games. As such I have no intention of creating an OBJ writer at this time, because it's not something that I personally would use, but the program is open source and if somebody wants to code one in I'd be happy to merge their pull request on github or whatever. Thus far, nobody has actually ever asked to do that so I haven't built up experience giving access to others to be contributors to the project on GitHub, but I'd be happy to do that if anyone ever wanted to.

    Although the MDX is not immediately generated when you open an OBJ, opening an OBJ and then saving as MDX should work, right? I did that in the past to confirm that the OBJ parser was working. It is also supposed to convert PNGs to BLPs when you do that.
     
  7. Remixer

    Remixer

    Joined:
    Feb 19, 2011
    Messages:
    1,597
    Resources:
    52
    Models:
    19
    Packs:
    1
    Maps:
    31
    Template:
    1
    Resources:
    52
    Don't know about the texture changes as I do them manually, but yes, the model is converted properly.
     
  8. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    926
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    Okay, interesting. So you're just hoping it would do that conversion immediately / more quickly?

    Also, thinking about this Matrix Eater project again, I made a video today about the current state of my software codebase for the next version of the Matrix Eater that I am working on:

     
  9. Remixer

    Remixer

    Joined:
    Feb 19, 2011
    Messages:
    1,597
    Resources:
    52
    Models:
    19
    Packs:
    1
    Maps:
    31
    Template:
    1
    Resources:
    52
    Interesting video.

    Yeah, well I find software like Blender to be pretty ultimately superior to Magos, or MDLVis, or even your program right now (I don't think it should surprise anyone). The only issue is the file type. Now with your tool one can open .obj file (that Blender can export) and then save it as .mdx file for example.

    There is quite a lot of time spent on conversion however. First I need to create the model in Blender, export it as .obj, open it as .obj in your program, save it as .mdx, open it in magos as .mdx, import textures, save it as .mdx, open it with MDLVIS (as only has the texture view and UV wrapping of WC3 softwares) (this part is crucial, as something happens to the UV wrapping in the conversion, and the texture is messed up, slight nudge to the vertexes in MDLVIS fixes the problem), then save it as .mdx and finally I can import it into Warcraft.

    So in a nutshell:
    Blender->Matrix->Magos->MDLVIS

    So I'd appreciate anything that would bring convenience to the conversion work, as it is away from the actual modelling (so I am excited to hear about your texture/UV wrap manager in the tool). So anything would be appreciated, even a 'Open and convert' would help or a multi-select 'Convert to MDX' would be really amazing, so I wouldn't need to open a model, just so that I can save it in different format.

    In any case, your tool is very helpful (mandatory) and seems to be getting better.
     
  10. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    926
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    I have on multiple occasions taken my codebase and done things like:
    "for each file in folder XXX:
    --If the file is MDX, convert to MDL, linearize animations, run my own version of MDX squisher, convert back
    --If the file is BLP, convert to tga, use command line version of BLP lab to convert back with additional compression to reduce file size
    "

    Something like this was how I made "build3" which was a 100 MB playable installation of Warcraft 3. I was thinking that I should make a way to write plugins with the Matrix Eater so that the average user would have something like Warcraft III's Trigger Editor, but where the available options were things like "Open Model" and "Convert to MDX" and "Add clickable menu item to Plugins" or something.
    If you freeze frame my previous video at 11:11 you can see that there is an option in "Windows -> Views -> Matrix Eater Script" that uses Java's Nashorn parser to run JavaScript code that is able to interact with my existing matrix eater codebase, so you could potentially hack the program while it was running or fix data corruption in a model while it's still open, or do something like the scripting mentioned above. But I tried to use it after setting it up and it was a big pain. Recently for fun I made a basic WC3 JASS interpreter using ANTLR (which is Java, so it would be compatible with the Matrix Eater codebase) so I am highly tempted to use this in combination with jasshelper in a future update of the Matrix Eater, so that you could script some model code with a language so similar to JASS that after I make functions and globals, then jasshelper will allow you to use structs and libraries in your Matrix Eater plugins.
    But that's a very far-off idea, right now if you want to convert 1000 models from MDX to MDL you can just download my code and type a "for" loop in Java directly into the codebase and it will only require maybe 4 lines of code. That's what I currently do.

    Edit:
    If you think you'd be willing to learn enough Java to try to do this, you can check out the Scripts folder in my codebase:
    Retera/JWC3

    I have used this on multiple occasions for things like generating the Bonus Mod abilities into a .w3a file, making a bunch of screenshots of a model rotated 45 degrees per screenshot, so that it was like a "turntable", and other things like this. I do not officially support those programs because I wrote them in 10 or 20 minutes and forgot how they work. But there might be some interesting examples there. The Matrix Eater codebase lately includes Unit Data read/write code as well as MDX/MDL read/write, BLP read/write (from DrSuperGood's code), and MPQ reading (although not writing, but you could use JMPQ if you needed this, which I have never tried to use but I think is used by Wurst).

    It's also worthy of note that Ghostwolf gave me a list of bugs in the oger-lord MDX parser that I'm currently using. Basically there are about 12 model features that if you use them will disappear, even just by opening your model in the Matrix Eater and saving it back to MDX. My MDL parser that I wrote myself is not like this, and uses more text parsing so that it will do everything in its power to retain the contents of the model file, even when it does not understand them.

    So, for example, when I do batch conversion of the entire WC3 game's MDX files to MDL and back via the Matrix Eater codebase, there are a notable percent of models which fail or become corrupted. I always address issues when I find them, but it's not like I got my code from Blizzard or anything, so the only MDL/MDX converter that you can actually trust in all cases is the one called YobGul's, which uses a hacked version of the RoC game.dll file to convert between the formats, so that it has an unparalleled understanding of the MDL/MDX format when you convert between them. But that program is very buggy because it's such a hack, so, sometimes we give up certain things in return for ease of use.

     
    Last edited: Oct 28, 2018
  11. HerrDave

    HerrDave

    Joined:
    Dec 23, 2013
    Messages:
    1,051
    Resources:
    163
    Models:
    135
    Icons:
    20
    Skins:
    8
    Resources:
    163
    MdlVis user here - I went to check this program out as an alternative.

    Unfortunately after I was greeted with a page of errors and the program asking me if I had installed Warcraft 3 correctly, I found that the program couldn't play the animations of any of my Mdx models :\

    Somehow I think I took a wrong step somewhere, what's going on?
     
  12. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    926
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    Nope, that sounds about like how it works. It's just that bad.
    The one that plays animations hasn't been published yet. This version is buggy and requires a pre 1.29 installation, ideally.

    The only thing that's really any good about the version of this program that is available here as a binary is the "Import" feature.
    It's really time I should post the updated one. And also innovate on the installation process.
     
  13. HerrDave

    HerrDave

    Joined:
    Dec 23, 2013
    Messages:
    1,051
    Resources:
    163
    Models:
    135
    Icons:
    20
    Skins:
    8
    Resources:
    163
    I am upsetti ;~;
     
  14. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    926
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    Yeah. Matrix Eater is a hobby project coded by a high school kid after 1 year of his first Java programming class. I want a better one, honestly.

    Edit: The tool you are looking for is Matrix Eater Max:
     
    Last edited: Nov 15, 2018
  15. Callahan

    Callahan

    Joined:
    Mar 28, 2004
    Messages:
    1,433
    Resources:
    117
    Models:
    99
    Icons:
    11
    Packs:
    2
    Skins:
    1
    Maps:
    3
    Tutorials:
    1
    Resources:
    117
    can't you weld vertex with this tool?
     
  16. Hermit

    Hermit

    Joined:
    May 29, 2013
    Messages:
    1,291
    Resources:
    3
    Models:
    2
    Icons:
    1
    Resources:
    3
    When I use the Matrix Eater to move an entire model (like the Frost Wyrm is moved in this video - around 6:50), all attachments and particle emitters are left behind in their original position. Am I missing something or is it a bug?
     
  17. Quinten

    Quinten

    Joined:
    May 24, 2016
    Messages:
    366
    Resources:
    1
    Maps:
    1
    Resources:
    1
    very likely a bug
     
  18. dtnmang

    dtnmang

    Joined:
    Apr 20, 2010
    Messages:
    520
    Resources:
    9
    Models:
    3
    Maps:
    2
    Tutorials:
    4
    Resources:
    9
    You will need to enable selection of attachments and particle emitters (pivot points) and select them along with the mesh perhaps?
     
  19. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    926
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    This is not a bug, it was deliberate. The particle emitters and attachments are not "Parents of active geosets", they are technically children of the bones to which the geosets are attached, or children of the parents of those bones. So, because I was being as literal as possible with the "Only show parents of active geosets" button, it only will show:
    1. Bones to which the geoset(s) are attached
    2. Helpers and bones that are parents of those bones
    This means that while the "Only show parents of active geosets" button is active, attachment points and particle emitters will NOT have their "pivot points" be modified. In order to modify the pivot points of these extra nodes, you must select them individually and separately while the "Only show parents of active geosets" box is toggled to the OFF state. Otherwise they will not be shown, will not be selected, and will not be modified.

    The new work-in-progress Matrix Eater uses a node tree view (similar to how Magos displays nodes) where you can toggle the root and all children on/off in one click. This allows you to show only 1 root in a model while merging (such as arthas + frostwyrm) and this method will then allow you to only edit frost wyrm attachments in a combined model -- once I release the newer version.

    Edit: The Troll Batrider model is the only one that I have ever seen in my 15 years that has an Attachment point as a parent of mesh in the skeleton. So maybe the specific Attachment point that is a parent of a bone in the Batrider model will be modified when using "Only show parents of active geosets" button. But that attachment point generally causes model corruption if you do a Matrix Eater import on the Batrider because of a design flaw in the import function. So, if you were going to work with that model, it would probably be wise to fix Blizzard's mistake and link the bone back to the skeleton instead of to an Attachment point -- even though it is legal for the game's rendering engine to be a child of an attachment point.
     
  20. Hermit

    Hermit

    Joined:
    May 29, 2013
    Messages:
    1,291
    Resources:
    3
    Models:
    2
    Icons:
    1
    Resources:
    3
    Thank you for clearing that up (I guess some of us are just stupid) and keep up the good work.