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. gigaboss000

    gigaboss000

    Joined:
    Nov 22, 2013
    Messages:
    1
    Resources:
    0
    Resources:
    0
    Your tool really useful i use it a lot and have adding normal DecayFlesh feature in mind? Tried to duplicate last frame of death animation(It about 30k frame) and moving main bone in same (-z) every frame If you adding DecayFlesh to Matrix Eater be great (choose Death animation(copy last frame of animation) for DecayFlesh animation > type number for how many duplicate frame > choose main bone (that is connect all bone) > type number of moving animation (-z) each frame(only first frame is not moving))
     
    Last edited: Nov 28, 2017
  2. Gyrosphinx

    Gyrosphinx

    Joined:
    Apr 30, 2007
    Messages:
    1,742
    Resources:
    6
    Models:
    6
    Resources:
    6
    Great program! Definitely renewed my interest in making models.
     
  3. maxxxus

    maxxxus

    Joined:
    Aug 25, 2015
    Messages:
    140
    Resources:
    0
    Resources:
    0
    how do you fix the bug?
     
    Last edited: Feb 2, 2018
  4. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    928
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    Which bug are you having?
     
  5. dtnmang

    dtnmang

    Joined:
    Apr 20, 2010
    Messages:
    520
    Resources:
    9
    Models:
    3
    Maps:
    2
    Tutorials:
    4
    Resources:
    9
    Waiting for next update... :oops::oops::oops: (almost 1 full year now)

    [​IMG]
     
  6. Kyrbi0

    Kyrbi0

    Joined:
    Jul 29, 2008
    Messages:
    8,043
    Resources:
    1
    Models:
    1
    Resources:
    1
    He's been having a lot of trouble with the code-base. The rapid updates haven't helped either.
     
  7. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    928
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    I graduated from college and have been working full time, and then the code mostly turned into mush. To be honest, if I want to get modeling work done, I typically redownload this Tool link from this page instead of using the "up-to-date" build from the codebase at this point, because it is a stable working program. I am un-inclined to post a release until I no longer feel this way about my work. In order to support select by faces and select by vertex group, the new version saw an almost total rewrite of the very basic functions of the program. I'd say it's at 90%. Move/rotate/scale and all of those work correctly, and some stuff like cloning and other things can actually be hit by "undo" now instead of being bugged in that regard. And, you can copy/paste geometry and nodes between models. But it comes at a really heavy cost. Some features that used to work, don't anymore. For example, at least for a while, "Mirror X" would create multiple mirror lines for differing types of data. For example, if you were selecting Faces and Nodes, then there would be one mirror line for faces and one for nodes. It was just a total oversight in how I attempted to organize the code -- but it means that one simple "mirror" operation can totally wreck the model.

    It's bugs like this that are just really, really annoying as a user. I wouldn't feel good publishing it when it's like that. So, I've been planning to just keep working for a few years, hopefully get draw-from-scratch functionality for mesh, and the ability to edit animations like MdlVis, and then when I have a new program that is actually legitimately better I'll probably come back and post it. But that's a long way off, still.

    Edit: If you scroll up through this thread a bit, you find a picture of the program that looks like a more or less working build. That build got modified further to support dockable dyanmic windows. Initially, I really loved this new windowing system that I started using, but it lends itself towards an entirely new program. I want to use the new windowing system, and make something a lot better, but the old code was rickety and falling apart when I tried to inject it in. Sometimes now I would save a model, and it would save a different one of the windows instead and become internally confused. And it didn't really tell me. When I have the time to fix it, I think it could become something very great, but I guess my attempt to update that system was the "straw that broke the camel's back" in the sense that it was after this point I went back to just using the release from a year or two ago to get things done.

    Edit: Here's a video of the features that I unveiled to some friends about a month ago that are in store for the next Matrix Eater release:

    Edit:


    Edit: I'm just some guy who wrote the Matrix Eater, and I'm aware that not every feature idea that I have is the best use of my time that could be spent developing the tool you guys want to have. I would be excited and interested to hear back from you guys about which features highlighted in the "Why No Updates?" video are things you would like, and which trouble you.

    Edit: My ideal release would feature the "Track View - Dope Sheet" from the Matrix Eater Max video (spoiler above), the Material Editor window from the same, as well as the Set Keyframe Mode, also in that video. However, I have yet to add these.
     
    Last edited: May 11, 2018
  8. Kyrbi0

    Kyrbi0

    Joined:
    Jul 29, 2008
    Messages:
    8,043
    Resources:
    1
    Models:
    1
    Resources:
    1
    Glad to hear from you again on this matter.

    Insofar as you are a busy guy & having trouble marshalling the time/motivation to complete it, I wish you only the best & assure you of my/our patience.

    However, insofar as you simply feel like it's an inferior product with no value... I must respectfully disagree. I am already a huge fan of what you presented there, warts & all. Yes the program-breaking bugs should be squashed. But for everything else, there's Mastercard just slap a big ol "X" on the button (and/or a pop-up saying "this function does not currently work/is not currently implemented"), and ship it out! Plenty of companies do that (having a later, 'stable' version and a newer, 'WIP/testing/coolstuff' version simultaneuosly). I see no reason (aside from the 1st paragraph) why you should feel bad about doing the same.

    Personally, I'm a fan of almost everything you showed, especially the various methods of fetching models. Tabs is SUPER. Moveable windows is pretty dang cool & I can see the utility, but.... If it's breaking things I don't mind it being taken out.

    (For the "which window is saving" issue, can you just include a little pop-up that confirms? "You are saving Rifleman_Portrait.blp?" kinda deal? Maybe also have the active window be highlighted a bit more obviously in some way?)

    For the "can't remember the window you had/preferences you used", that's annoying, sure. Closing a window & not being able to get it back. But not user-killing. I don't know what it would take to get that to work.

    I will again admit: I'd love to see just one big perspective window, with the geosets made editable selectively (like you have it, but maybe just a straight list instead of by-Node (or both: preferences!), and have the texture have toggled visibility (so you can be looking at vertices, then hit a hotkey & see them wrapped, then switch back with the same key). This would fix the missing "visible but not editable" bit, perhaps. However, I realize that that basically means "copy MDLVis" since that's all of what they do. Lol.

    Anyway, either way, don't feel too bad about it. It's looking great overall, and we know you can't do everything.


    (also I apologize: I have no idea how hard the things I've suggested are, so feel free to ignore)
     
  9. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    928
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    I'm very interested in your response. I might edit this post with even more when I get home from work. The biggest difference I see in our ideas/goals is actually the tabs. I was thinking of eliminating them, and switching to the World Editor paradigm of viewing one thing at a time, but having multiple "open" that you can swap between in the Window menu. So, just like when you have two maps open, and can switch between, you could have two models open. This would mean that I could do "Window -> Front" to open the Front view for editing, etc. And, these views could be placed in user chosen areas, and would remain there when swapping to open new files. Only downside would be clicking 2x to open the Windows drop-down, then choose a file, as a way to swap between active models. It's a two-click change, instead if aof a one-click tab system
     
  10. Kyrbi0

    Kyrbi0

    Joined:
    Jul 29, 2008
    Messages:
    8,043
    Resources:
    1
    Models:
    1
    Resources:
    1
    I like the Tabs, but that doesn't sound bad either.

    And if you're ever worried about 'adding clicks', consider the power of simply hot-keying those actions. So "Window" might be 'W', which opens an arrow-key-traversable dialog box List of the open models.
     
  11. Marcraft22

    Marcraft22

    Joined:
    Aug 9, 2012
    Messages:
    25
    Resources:
    0
    Resources:
    0
    Hi people,
    It happens I need a marine-like model with the footman animations for my map, specially the 'defend' one. I've used the AnimTransfer app (with the default War3 marine model as base), the result looks great in the model editor but it doesn't work in the world editor, no matter what I do the model can't be seen ingame.
    Does anyone have any ideas?
     
  12. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    928
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    Hi Marcraft22,

    I spent some time and investigated what it would be like to do what you're saying with my unreleased updated version of the Matrix Eater.
    In general, with these new updates, it seemed like this mostly was working. So, after I get a few more bugs out, I'm going to have to get a copy of this new stuff to you guys.


    PS: I'll attach a copy of the model created in the video, but it was about 6 minutes to make it, as you can see.

    Edit: For those who might appreciate the entertainment value, this video was how I first responded the first time that I got the Matrix Eater to render character animation, which was the first animated 3d model rendering code I have ever put together:
     

    Attached Files:

    Last edited: May 30, 2018
  13. Austrulex

    Austrulex

    Joined:
    Jul 26, 2017
    Messages:
    58
    Resources:
    0
    Resources:
    0
    This program is amazing but it boggles me why it has not been fully approved yet and not universally used!!! Thank you for making this!
    Anyway I would like to make a suggestion, would it be possible to add a function that reduces the polygon count of a model in order to reduce it's size?
    Thanks again
     
  14. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    928
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    One of the reasons that it is not universally accepted is probably that 6 years ago when I started writing it I was a high school kid who knew JASS and how to make MDL models with Oinkerwinkle's tools and I just started writing it after a year long programming class in high school because I wanted it.

    So, for example, BlinkBoy closed the original Matrix Eater thread and basically said, "If you want to do this rightly, use a parser generator like JFlex." The way it parses MDL models is still that code from high school, so it is written how you would write it in Warcaft III JASS, or maybe vJASS. It is just many, many "if" statements, like "if nextLine == 'Geoset' then parseGeoset() else if nextLine == 'GeosetAnim' then parseGeosetAnim()" and it just goes on like that. It's pretty impossible for a programmer to respect that because of how human ego computer programming works. Now that I've been to college to become a software engineer because I got inspired by what computers could do via this program, I'm pretty sure that this way it loads MDL files is about a thousand or a jillion times slower than JFlex or other parser generators. I never cared enough to fix it, because despite all that other stuff, it works.

    If you want to support the future of this program, checkout this topic:

    Tool Idea: Magos + MdlVis + Matrix Eater combined
     
  15. Regno

    Regno

    Joined:
    Sep 16, 2016
    Messages:
    91
    Resources:
    0
    Resources:
    0
    When I try to transfer an animation to another, this error keeps popping up for me, any way to fix this?

    (These two models are customs, and both anime so they arent made by blizzard or anything at all.

    Unknown error occurred:
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.rangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at com.matrixeater.src.Geoset.getMatrix(Geoset.java:180)
    at com.matrixeater.src.Geoset.updateToObjects(Geoset.java:531)
    at com.matrixeater.src.MDL.read(MDL.java:633)
    at com.matrixeater.imp.AnimationTransfer.doTransfer(AnimationTransfer.java:361)
    at com.matrixeater.imp.AnimationTransfer.actionPerformed(AnimationTransfer.java:352)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

    Image: https://i.imgur.com/Qs97i6j.png
     
  16. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    928
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    This means that one of the two models has a Geoset with a "VertexGroup" block where a Vertex is assigned 0 as the group number, but then the Matrices block that this 0 is supposed to index into is empty. You can fix it in Notepad in like 20 seconds in the MDL if you know which Geoset has the out of bounds VertexGroup. But a lot of people seem to be having this problem lately, I was also asked about this on Discord and fixed a model for a friend rather than writing a general fix in the Matrix Eater code. So, I need to upgrade the code to accept models which have invalid vertex groups IDs in this way.

    Edit: Somebody reminded me that "Edit Animations" to change lengths will destroy your model if you make an animation shorter. This bug is fixed in the next version I am working on, but if you download any Matrix Eater version that is currently available as of this posting, then your version will also have this bug.
     
  17. Marcraft22

    Marcraft22

    Joined:
    Aug 9, 2012
    Messages:
    25
    Resources:
    0
    Resources:
    0
    Hi Retera, I was in my finals so I couldn't answer before.
    Thank you very much for the result, it is exactly what I was looking for :D
     
  18. Regno

    Regno

    Joined:
    Sep 16, 2016
    Messages:
    91
    Resources:
    0
    Resources:
    0
    I see! Can I add you on Discord as well? My name is null#2675

    edit: Found you, sent a FRQ!
     
  19. eejin

    eejin

    Tool Moderator

    Joined:
    Mar 6, 2017
    Messages:
    153
    Resources:
    1
    Tools:
    1
    Resources:
    1
    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 war3patch.mpq (which was removed in 1.29), but still functions nonetheless.
     
  20. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    928
    Resources:
    26
    Models:
    18
    Tools:
    2
    Maps:
    6
    Resources:
    26
    Thanks! Oddly enough, you can undo in the UV editor, but only by going to the main window and clicking on Undo. So, the functionality exists, but is annoying to use. I got the idea from 3ds max 5 when I was a kid for making it that way.