• Check out the results of the Techtree Contest #19!
  • Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • Create a void inspired texture for Warcraft 3 and enter Hive's 34th Texturing Contest: Void! Click here to enter!
  • The Hive's 22nd Icon Contest: Creep Abilities is now concluded, time to vote for your favourite set of icons! Click here to vote!

Retera's Model Studio

This bundle is marked as director's cut. It exceeds all expectations and excels in every regard.
This is Retera's Model Studio v0.04 Public Beta. It is not finished! But it is something that works and is better than the Matrix Eater application, and is compatible with Patch 1.32.

Retera's Model Studio is the second evolution of the Matrix Eater project. It is a standalone MDL and MDX model editor. The project has diverged from the Matrix Eater that is available here on the Hive, and become a different program with features that do not totally overlap -- although my goal is for this to entirely replace the Matrix Eater.

Features:
  • Open and view MDL and MDX model files
  • CASC Data browser with double-click to view model, or texture, using JCASC from DrSuperGood
  • Attempts to support every single Warcraft III Patch up to and including Patch 1.31
  • MPQ Data browser seamlessly replaces CASC browser when using older patches of the game
  • 24 color "Team Color" menu will seamlessly swap to 12 colors when using an older patch of the game
  • Edit the model geometry (Select by Vertex, Select by Face, Select by Group)
  • Editor hotkeys that were not present in the Matrix Eater predecessor (QWER for edit mode, ASDF for select mode)
  • Control which Geosets are editable at one time
  • Animation Previewing (No particles or ribbons yet)
  • An "Open Internal" menu for loading game models quickly
  • Can open and save MDX to MDL or MDL to MDX using a converter that supports features such as ReplaceableId on Particle Emitters better than some alternatives
  • Includes a basic UV map editor
  • Multiple GUI themes available in the Preferences Window
Experimental Features:
  • Create a new blank model with basic planes and boxes
  • Can open BLP or PNG images for previewing (similar to Magos application)
  • Includes an Edit Textures menu to view the list of used textures, and quickly change used paths.
  • Quick Browse: Opening a new model in the Data Browser will close unsaved old ones (can be turned off in preferences)
  • Customizable layout, allowing you to draw components of the UI into different places
  • Window -> Reset Layout to reload the default layout
  • T-Pose edit mode, which can move mesh based on assigned bones in a more intelligent way
  • Cluster selection mode, similar to Group mode but using connected mesh rather than assigned VertexGroup
  • Animation edit mode, which can edit and modify animations (Warning: uses Hermite and Bezier by default, and inserts incorrect inward and outward tangents that will cause visual "vibrations" of nonlinear models in some cases, this is a fixable bug, needs more time)
  • Hive Browser is a feature that does not work and was added only as a UI mockup to discuss technology, and was included by accident in V0.01. It will be removed in V0.02, as to my knowledge, the required server technology for the hypothetical feature to work was not built.
Limitations:
  • Unlike Matrix Eater, this application cannot pin a Geoset to be visible but not editable
  • Unlike Matrix Eater, this application gives no indication of a node's name graphically in the 2D editing space
  • No user interface to control mounting system for MPQ/CASC hybrid loading system, so it will break again in Patch 1.32 or whenever Blizzard moves data once again
  • Inherits WC3 cached install directory information from Matrix Eater, which can be removed in the case of incompatibility and is located at C:\Users\<name>\AppData\Roaming\JWC3\user.profile
  • After running this application, configuration settings from the Matrix Eater application may become corrupted and not work correctly, causing strange white background errors (This application will not be affected)
Required for running Retera's Model Studio:
  • A Java SE Runtime Environment. A bundle is included with a Windows 64-bit EXE launcher but if you want the application to run on Linux or Mac then you must install the Java SE Runtime Environment separately.
  • The above statement means that if you are a 32-bit Windows XP user, the EXE application will not function (only tested with Windows 7 64-bit, and Windows 10 64-bit)
  • A valid Warcraft III Installation (only tested with Patch 1.22 through Patch 1.31)
Additionally bundled applications (main methods in the same Java application included as EXE files):
  • Includes the AnimTransfer EXE that was previously included with Matrix Eater, which will use the Retera Model Studio MDL and MDX parser, which has significant subtle improvements over the one in the Matrix Eater application thanks to contributions from Ghostwolf.
  • Includes the ObjectEditor EXE shown in YouTube videos that has custom folders based on unit race, and can be opened multiple times simultaneously and can select, copy, and paste multiple Units between two running instances of the software. (Known to have bugs, requires Windows Clipboard, fails on Linux)
  • BlpConv EXE that can be used to convert TGA to BLP using DrSuperGood's blp-iio-plugin on systems where Magos or BLP Lab are not working (although these two alternative tools are typically superior to mine)
v0.04.2b
  • Fixed a bug in "Edit/delete model components" reported by Hive user @Makkad (retains FaceFX chunks now)
v0.04.2
  • Tiny change requested by discord user VictorZ that allows "Rotate Type-In" to work in the Animation Editor. (The code for this was copied almost directly from the Twilac version of 0.05, so you should seriously probably just use 0.05!)

v0.04.1
  • Opening a file in a folder does not walk the directory tree of that folder
  • Scripts -> Skin Splice function added upon request from Vulfar
v0.04 for 1.32.10
  • Fixes the program to work with the new Warcraft III Patch 1.32.10 that changed the TFVS formatting for some reason.
  • Includes some really minor internal bug fixes over the previous version
v0.04:
  • Merged the version known as "Retera Model Studio Reforged Hack" to be the mainline version of the tool going forward (this version includes all of the fixes listed here)
  • Added support for Reforged assets and a bunch of bug fixes related to working with those
  • Added "Scripts -> Assign FormatVersion 800" to convert Reforged Classic Models to the legacy classic model format, as well as "Scripts -> Assign FormatVersion 1000" to convert legacy game client models to match the format used by the "Classic Graphics" of Reforged.
  • Added a "Reforged Graphics Mode" and "Classic Graphics Mode" in the data sources chooser panel
  • Added the "Model" tab which is buggy and unfinished
v0.03:
  • Changed the program to use Java 11. Had trouble exporting the JAR from Eclipse, so I changed it back to Java 8 for now.
  • Changed the program to use the latest version of DrSuperGood's JCASC, which requires Java 11 to use, then I modified his code so that it did not require Java 11 so that we could continue deployment in the previous fashion.
  • Changed the startup sequence to use a "data source chooser" view, which is also available in Preferences. This allows users to load CASC or MPQ data in a way that is intended to be straightforward and clear to the user, and for CASC data the user able to choose the locale to load from the game. Locales that are present in the CASC's list but have not been downloaded from Blizzard are shown in dark red. These dark red options won't work until you launch Warcraft III at least one time using that locale.
  • Changed the startup sequence to return the user to the "data source chooser" any time that the program crashes during startup, so that the user is always able to reconfigure their settings.
  • Changed the model previewer to include the rendering of Particle Emitters, so that users can have a better feel for how their models might look in-game. This is a nontrivial task that involves many hundreds of lines of code replicating the behavior of the game and it was only possible because of the works of Ghostwolf, which I translated nearly directly from JavaScript into Java.
    • "Squirt" mode particles will emit at random times when they should not because of a difference between my code and Ghostwolf's code (his does not have this bug).
    • Also, priority plane and layering are known to have issues.
  • Added a JSON parser that loads the "filealiases.json" data when using CASC. This file is used by the 1.30 and 1.31 clients to support removed legacy files inside the Warcraft III game, and it will now be supported by the Retera Model Studio when viewing models. This will fix missing textures in some instances when the textures were not missing in-game.
  • Changed the default application data folder to be named "ReteraStudio" instead of "JWC3". This change removes bad interactions with the "Matrix Eater" application where the "Retera Model Studio" and "Matrix Eater" would write clashing versions of the same data to the same settings file (see "AppData/Roaming/ReteraStudio" on your computer).
    • This will cause a reset of all user settings for the Retera Model Studio version v0.03.
    • If you wish to avoid a settings reset, copy your settings file from "AppData/Roaming/JWC3". However I do not promise backwards compatibility.
  • Fixed an issue with the Quick Browse option so that turning it off and on will work correctly.
  • Added a scroll bar to the "Change Animation Lengths (by Scaling)" popup. (Thanks Mythic!) This popup is now listed under the "Scripts" menu.
  • Added 3 new GUI Themes: HiFi, Acryl, and Aluminium. These are all from the JTattoo library. Also, the "Dark" theme was technically the "Noire" theme from the JTattoo library, and it has been renamed accordingly. Aluminium is now the default theme (this can still be changed in the Preferences Window).
  • Changed code in the BLP loading pipeline used for rendering models and icons that aims to avoid destruction of texture data that is beneath an alpha channel yet loaded on a model's surface regardless of the alpha channel. Previously visual artifacts were visible in some cases that were not in accordance with how the textures would display in the Warcraft III game.
  • Added an "Edit" button in the Time Bound Chooser panel, but it does not actually work yet and will be fixed in a future version.
  • Changed some code with the "X" button on the program and how closing model files functions, so that it should not be able to bug out and fail to close a model or fail to close the application in a way unexpected by the user.
  • Added a system in the 3D displays that compares the aspect ratios known to the application with the aspect ratios known to the graphics card that attempts to use this information to fix the renderer when used on desktops that have the UI Scale setting specified. This was tested on Windows 10 with the UI scale, and it still fails on multiple monitor configurations where the second or third monitor have differing UI Scale specified. However, it should always work correctly on the main display when previously it may not have worked correctly at all.
  • Added a Preferences option to disable rendering particle emitters, as well as a separate option to disable rendering particle emitters in the Editor view.
  • Changed the "Use Boxes for Pivot Points" option so that it also affects the 2D displays in the Animation Editor.
  • Changed the Right-Click mouse button not to do anything on the Outliner widget, so that it can popup an "Edit" option on a popup menu in a future version of the software.
  • Changed the code that converts program data to MDX at Save time, so that some models that previously would not save due to state corruption inside the Model Studio will now be able to save. There may be more similar bugs yet to be fixed.
  • Changed the SLK parser used to load Unit Data so that it should be able to load data from the Reign of Chaos and from Project Revolution, in case users wish to load that data using the new game data source choosing settings.
  • Changed the Unit Browser to reload its contents when the program data source is changed. Previously, the "View -> Change Game Directory" option was likely to change the internal setting but keep previously cached information in the Unit Browser.
  • Added a command line option, "-forcedataprompt" to force the program to start with the Data Source Chooser window, so that users can specify their Warcraft III game data source without launching the application.
  • Changed how missing textures resolve so that they should resolve to a white surface. This should hopefully remove the irritating popup.
  • Attempted to make the Perspective view constantly repaint itself to always update dynamically, however in practice this is still not working in some cases.
  • Changed the texture loader so that a default Tree texture will be loaded when the replaceable texture ID is not known. This does not yet help with previewing cliff models but it means that the Mountain Giant and similar models should preview decently.
  • Added a scroll bar to the Texture Manager shown with "Tools -> Edit Textures" for use on models with many textures
  • Reorganized some of the program menus to attempt to make them more logical (Based on some suggestions from Hayate, many thanks! If only this program could be updated as quickly as his mockup UI!) More changes to these may be added in a future version, as they are still rather disorganized.
    • The new "Scripts" is a place for one-off script utilities that don't fit anywhere else, and maybe be user modifiable to include custom code in the future. At this time, it is only a preset list.
    • "Scripts -> Export Animated to Static Mesh" is a new option to build snapshot models. Unfortunately, it only snapshots the currently timeline in the Editor view, not in the Viewer that you see when you start the application. Also, it discards all node information, including Billboarded nodes, so camera-centric planes will be left to face forward instead of the camera.
    • "Edit -> Optimize" now include an option to merge all geosets that share like materials and visibility that is called "Minimize Geosets". Misha and a few other users have been asking for this option for years. I have not tested it very extensively and there may still be bugs in it. It worked on one or two sample cases that I experimented with.
  • In v0.01/v0.02 I added an option in Program Preferences to allow loading Non-BLP textures, so that users can open a PNG file or a model that references a PNG file even though these are generally not valid MDX files when used inside the Warcraft III game. This option may have been changed in the newer one to fix bugs, according to some of my code history information.
  • Fixed a crash relating to parsing WTS files for unit data, such as when the Data Source Chooser is used to load a custom map file as an MPQ.
  • Changed "Error: A matrix's bone id was not referencing a real bone!" to be a console log line instead of a popup, so that users do not receive a spamming wave of popups when opening a model file.
  • Changed the model parser to accept models with missing Pivot Points (as the Warcraft III game does), so that the Retera Model Studio is able to open some MDX models that previously would have caused a crash popup.
v0.02:
  • Removed Hive Browser UI mockup that did not work
  • Wrapped the startup code in a block that will catch and display errors in a GUI
  • Fixed an issue where users who had never run the Matrix Eater application in the past would have the Retera Model Studio application crash the first time it was run
Personal note: On the Matrix Eater application, I left a note where I said:
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.

This application does not solve that concern of mine. I am not uploading this as a finished product. But as we have seen with Patch 1.31, some times, software is pushed into production when it isn't ready. That is the case with this application. I want more than I have. I just can't stand not to share with the community what I have anymore, because I feel a deep sense of guilt for anyone who is using the Matrix Eater application and forcing themselves to mod on Patch 1.26 or some nonsense, while the above application existed on my computer and has for almost a year.

I believe in the power of open source, and this application is entirely open source. I have been developing it for about two years since the Matrix Eater was posted, and it has evolved out of the same codebase. This is the same GitHub link that was included on the Matrix Eater program, but it now contains the source for Retera Model Studio:
Retera/JWC3
Previews
Contents

Retera's Model Studio 4.6c (Binary)

Retera's Model Studio 4.6b (Binary)

Reviews
Archian
If it wasn't for this tool, Reforged Modeling wouldn't have become what it is today. In recognition of this, the Hive Administration team awards Retera's Model Studio a Director's Cut status. @Retera
I was wondering, do i need some files to download on github in order to work the latest RMS on my 2.0.3?
No, I haven’t downloaded any files or anything from the GitHub website.
I have two questions for you:
Have you deleted the old RMS programs after downloading the new version of the RMS software?
Have you purchased the game WARCRAFT 3 REFORGED? (This is just for clarification.)
 
No, I haven’t downloaded any files or anything from the GitHub website.
I have two questions for you:
Have you deleted the old RMS programs after downloading the new version of the RMS software?
Have you purchased the game WARCRAFT 3 REFORGED? (This is just for clarification.)
I tested out the old 4.4 of RMS still doesn't work. But I already deleted it. I only have the latest RMS which is 4.6b.
It's a clean format of my Laptop. so I would say Yes.
I purchased the game this last week cause it has a Black Friday Sale.

To clarify.. I downloaded the Latest one first the "4.6b" before I tested out the 4.4 older version.
 
Okay.. Update.. I uninstalled and reinstalled the Game again for the 3rd Time.. Mine's already working now. I even use the Ladik's Casc Viewer to see if it can detect the CASC on my Warcraft before I use the RMS. Then finally it works but still has problem on converting Reforged HD Portrait Models to SD Models. But so far so good, it's working on me now.
 
Okay.. Update.. I uninstalled and reinstalled the Game again for the 3rd Time.. Mine's already working now. I even use the Ladik's Casc Viewer to see if it can detect the CASC on my Warcraft before I use the RMS. Then finally it works but still has problem on converting Reforged HD Portrait Models to SD Models. But so far so good, it's working on me now.
I’m glad that I was able to help you. May there be more people like you who preserve the Warcraft 3 community. As you said, teach others how to correctly fix the problems you have solved yourself. This is a very good deed.
In the current version, the function to switch from Reforged to Classic with HD textures has stopped working for some models.
 
help @Retera
how can rotate a model in the X axis
i know we can rotate Z axis with worldeditor with ctrl+clic, via triggers too but in X and Y dont know
 


In the video above, I show three ways to rotate on specific axes:
  • You can right click in each 2D view to rotate
  • You can use "Right Click > Rotate Type-In" to specify the amount on each axis, or on only one axis
  • You can use the circular widget inside the view to rotate all from one single 2D view, and it rotates based on which part of the circular widget you click
 
View attachment 567914

In the video above, I show three ways to rotate on specific axes:
  • You can right click in each 2D view to rotate
  • You can use "Right Click > Rotate Type-In" to specify the amount on each axis, or on only one axis
  • You can use the circular widget inside the view to rotate all from one single 2D view, and it rotates based on which part of the circular widget you click
thanks for the answer
I've done something wrong
Peek-2026-01-04-20-53.gif

What I'm trying to do is a 2D map; the camera will be from above, viewing the characters' heads. That's why I want to rotate the models, making them look like they're lying on the ground, so that with the camera effect it becomes a 2D game. This way I can make the floor look like the walls, since the models will appear to be standing when in reality they are lying down. To simulate the floor in that scenario, I just have to place any square structure or a simple elevation; it will look like a ramp. Well, that's what I'm trying to do, but when I rotate it it ends up like this. How can I rotate it? in Front, Bottom or Side and 90 or 270 and in what axis, I've been trying out different values, but there are too many combinations.
 
You could attach it to a central bone and then animate the bone being rotated sideways in a global sequence that applies one keyframe to all animations

Maybe you could also achieve this with World Editor instead of with a model edit change for each model. You could try asking on Hive about how to use negative values for Pitch / Roll controls in unit editor and if anybody knows what that still works. I recall hearing that historically it was possible to put a negative and spin the characters to a forced position but Reforged might have busted it.
 
You could attach it to a central bone and then animate the bone being rotated sideways in a global sequence that applies one keyframe to all animations

Maybe you could also achieve this with World Editor instead of with a model edit change for each model. You could try asking on Hive about how to use negative values for Pitch / Roll controls in unit editor and if anybody knows what that still works. I recall hearing that historically it was possible to put a negative and spin the characters to a forced position but Reforged might have busted it.
thanks bro :infl_thumbs_up: I'm going to try all the options
 
Perhaps you have seen it many times, but I still want to ask if localization support can be provided. I can provide a Simplified Chinese dictionary, but I don't know how to modify your source code to support internationalization. This is a request for 2026. Thank you
 
I'm new to edit model. Is there a reason why i can't use the add layer or change flag function? When i clicked those buttons, nothing'd happened.
 
Is there a reason why i can't use the add layer or change flag function? When i clicked those buttons, nothing'd happened.
Ah yea those buttons are fake. I wish that I wrote them to work, but I didn't. Maybe we can ask ChatGPT to make them work. Also, I think on the Twilac version of the program the fans made, there are fanmade versions that actually work.
 
Hello @Retera ! I kindly ask you to update your program because it cannot understand or read the CASC mode of the updated version of Warcraft 3 Reforged. I did everything I could: I installed Java version 17 on my computer and restarted it, completely uninstalled and reinstalled Warcraft 3 Reforged, and also checked the RMS program files. But even so, when I open your program and connect the CASC that stores Warcraft 3 Reforged resources, it still shows an error message.
 
You should be able to use the following Blender plugin to import mdx/mdl file into blender, then export them to fbx/obj : GitHub - tw1lac/mdl-exporter at 3.4
Note: I only tested with classic models.
Hey Jaccouille, sorry I can't get it to install in Blender? May I ask what version are you using?
For me it says "Modules installed", but it never appears in the Add-Ons section, neither the Import/Export dropdowns too. I've tried versions 3.4, 3.6, and 4.5, but still no luck :(
 
Hey Jaccouille, sorry I can't get it to install in Blender? May I ask what version are you using?
For me it says "Modules installed", but it never appears in the Add-Ons section, neither the Import/Export dropdowns too. I've tried versions 3.4, 3.6, and 4.5, but still no luck :(
I got it working on version 4.0 and 5.0
Did you enable the add-ons?
26-02-09-18-44-36.jpg
 
Yea for me after I try installing the addon ( GitHub - tw1lac/mdl-exporter at 3.4 ) to my Add-Ons in Blender, I don't see any Warcraft MDL Exporter at all. Are you using still this git repo GitHub - tw1lac/mdl-exporter at 3.4 and not something else perhaps? I'm trying to add the addon using the .zip file that downloads and adding to Blender's Add-Ons, yet shows nothing.
In this git repository, the plugin is contained in "export_mdl" folder. You have to zip this folder and select it from Blender, as per the readme instructions:

  • Add export_mdl folder to a zip or rar file
  • In Blender, go to User Preferences (CTRL+ALT+U) and select "Install Add-on From File". Select your zipped folder.
  • MDL Exporter should now show up in the Import/Export plugins list. Make sure it is enabled by ticking the box.
 
Hey guys, sorry I'm back with one more issue. When I export a .mdl model (classic WC3) from Retera Model Studio and import it into Blender (version 3.4.1), the animations do not play with the entire mesh.
What's weird is this problem doesn't seem to happen if I download a modded model off https://www.hiveworkshop.com/ and import to Blender.
I'm just trying to extract classic models, export them as .fbx with animations, so I can put it in my Unreal Engine 5 game.
Any help would be greatly appreciated!
 

Attachments

  • 2.png
    2.png
    1.8 MB · Views: 38
Maybe I'm missing something or misunderstanding something but apparently there is an object editor bundled into this program that allows the editing of multiple objects at once. I can't find this functionality, or the object editor exe apparently bundled in this. If anyone could point me in the right direction it would be greatly appreciated, the only reason I'm looking at a model studio for object editing is that it has been suggested as a solution in multiple other threads about trying to edit the same fields of many objects at once.
 
I updated the bundle with version 4.6c that has only a few small changes. Includes the @Insanity_AI change submitted on GitHub several months ago, which aims to fix crashes when loading weirdly formatted CASC Reforged data after upgrades.

This does not however fix the issue that was reported on the Discord server about "Scripts > Oinkerwinkle style merge geoset" not working, which was news to me but probably the result of a regression when changing to process geoset bone links and weights in the newer ways supported after 4.5+ versions.
Also doesn't fix making the object editor mentioned above easier to access. I know somewhere on Earth there was a person who I sent a big script file you can paste into Window > Views > Matrix Eater Script that would take over and launch the object editor from inside the already running program instance, but I forgot where I put it. Will have to look for that.
 
For anyone having issue with the CASC not loading giving some sort of JCASC key mismatch exception, the work around solution is to completely clean install Warcraft III. When Warcraft III updates it seems that under some unknown condition it is possible the old main TVFS file remains. The logic I use to select the main TVFS file seems to be detecting the old, now invalid, version of the file causing it to point at now invalid files. Clean installing removes these invalid TVFS files so that my code detects the valid one and works.

I still am not sure why the logic is choosing the wrong TVFS file as I still have not been able to recreate this issue.
 

Attachments

  • aggfws.png
    aggfws.png
    94 KB · Views: 20
Hello, maybe you can help me as well. I made the addon active in Blender 5.0 (https://www.hiveworkshop.com/threads/importing-war3-sd-and-hd-models-into-blender.354211/) but when trying to import the model, it gives me the error message.
I'm trying to import a custom model, not from w3 library
I can answer if you repost in this thread: MDL Exporter for Blender3D! and if you join the model you tried to import.
This thread concerns the software Retera Model Studio, I believe it's incorrect to pollute it with unrelated subjects.
 
I'm trying to import a custom model, not from w3 library
On that other thread you end up on with @Jaccouille , although I don't have experience with Blender, I have heard sometimes people convert the Reforged model into a different version of file before importing it in Blender. Because sometimes the Blender plugins only support certain versions of the Reforged models.

The Reforged models changed format several times:
  • MDX version 1000 in the year 2020
  • MDX version 1100 in the year 2022
  • MDX version 1200 in the year 2025

Almost all of the changes were made in ways that will crash your tool in the Materials parsing section if use a model that is the wrong version for that tool. It looks like your error message happened with a Material block, so this version error is a very likely problem for you.

Getting back on topic, the tool Retera Model Studio has an automatic version convert function. If you click on "Model" tab, and click on "Header" and see the version of the model listed, then you can change this number and do "File > Save as" to a new name. The newly saved file will automatically reformat itself to the new format. This might help you, if you can find out what format your import tool needs!
 
On that other thread you end up on with @Jaccouille , although I don't have experience with Blender, I have heard sometimes people convert the Reforged model into a different version of file before importing it in Blender. Because sometimes the Blender plugins only support certain versions of the Reforged models.
That could have been a good guess, turns out it's just an API migration on Blender side, I never tested the importer on Blender 5.0. I am going to try to update the plugins so the import works on Blender 5.0.
 
On that other thread you end up on with @Jaccouille , although I don't have experience with Blender, I have heard sometimes people convert the Reforged model into a different version of file before importing it in Blender. Because sometimes the Blender plugins only support certain versions of the Reforged models.

The Reforged models changed format several times:
  • MDX version 1000 in the year 2020
  • MDX version 1100 in the year 2022
  • MDX version 1200 in the year 2025

Almost all of the changes were made in ways that will crash your tool in the Materials parsing section if use a model that is the wrong version for that tool. It looks like your error message happened with a Material block, so this version error is a very likely problem for you.

Getting back on topic, the tool Retera Model Studio has an automatic version convert function. If you click on "Model" tab, and click on "Header" and see the version of the model listed, then you can change this number and do "File > Save as" to a new name. The newly saved file will automatically reformat itself to the new format. This might help you, if you can find out what format your import tool needs!
I am still getting the same error.

Uncaught exception on Thread "AWT-EventQueue-0":
java.lang.RuntimeException: CASC parser error for: war3.w3mod\_hd.w3mod\_locales\ruru.w3mod\filealiases.json
at com.hiveworkshop.wc3.gui.datachooser.CascDataSource.has(CascDataSource.java:199)
at com.hiveworkshop.wc3.gui.datachooser.CascDataSource.<init>(CascDataSource.java:43)
at com.hiveworkshop.wc3.gui.datachooser.CascDataSourceDescriptor.createDataSource(CascDataSourceDescriptor.java:31)
at com.hiveworkshop.wc3.mpq.MpqCodebase.refresh(MpqCodebase.java:124)
at com.matrixeater.src.MainPanel$107.dataSourcesChanged(MainPanel.java:2783)
at com.hiveworkshop.wc3.user.WarcraftDataSourceChangeListener$WarcraftDataSourceChangeNotifier.dataSourcesChanged(WarcraftDataSourceChangeListener.java:14)
at com.matrixeater.src.MainPanel.dataSourcesChanged(MainPanel.java:5395)
at com.matrixeater.src.MainPanel$40.actionPerformed(MainPanel.java:830)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at java.desktop/javax.swing.AbstractButton.doClick(Unknown Source)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.desktop/java.awt.Component.processEvent(Unknown Source)
at java.desktop/java.awt.Container.processEvent(Unknown Source)
at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: com.hiveworkshop.blizzard.casc.nio.MalformedCASCStructureException: container encoding key mismatch
at com.hiveworkshop.blizzard.casc.storage.BankStream.<init>(BankStream.java:40)
at com.hiveworkshop.blizzard.casc.storage.Storage.getBanks(Storage.java:231)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.fetchStoredBuffer(VirtualFileSystem.java:408)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.resolveTVFS(VirtualFileSystem.java:678)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveResolvePathFragments(VirtualFileSystem.java:606)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveResolvePathFragments(VirtualFileSystem.java:585)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveResolvePathFragments(VirtualFileSystem.java:585)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveResolvePathFragments(VirtualFileSystem.java:585)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveResolvePathFragments(VirtualFileSystem.java:616)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveResolvePathFragments(VirtualFileSystem.java:585)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveResolvePathFragments(VirtualFileSystem.java:585)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveResolvePathFragments(VirtualFileSystem.java:616)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveResolvePathFragments(VirtualFileSystem.java:585)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.resolvePath(VirtualFileSystem.java:650)
at com.hiveworkshop.blizzard.casc.io.WarcraftIIICASC$FileSystem.isFile(WarcraftIIICASC.java:63)
at com.hiveworkshop.wc3.gui.datachooser.CascDataSource.has(CascDataSource.java:195)
... 44 more
 
I am uncertain; it is failing to load from the JCASC library by @Dr Super Good that I did not write, although I might have hacked up the code a time or two so the version I'm using might be slightly out of date or something.

If it is not the game language, there is a chance it is also the computer language. If it is the computer language, you might be able to solve it by launching with a JVM param to tell the java system used in Retera Model Studio to run with English language for the Java code even if you are using Russian language for the Reforged game data.
 
I am uncertain; it is failing to load from the JCASC library by @Dr Super Good that I did not write, although I might have hacked up the code a time or two so the version I'm using might be slightly out of date or something.

If it is not the game language, there is a chance it is also the computer language. If it is the computer language, you might be able to solve it by launching with a JVM param to tell the java system used in Retera Model Studio to run with English language for the Java code even if you are using Russian language for the Reforged game data.
OK bro, I will do as you said
 
I am still getting the same error.
Clean install Warcraft III Reforged. Delete the install folder to make sure all traces of the existing CASC are removed. Then download it again fresh. Not an ideal work around but has solved it for at least 1 person so far.

See my post above for details...
It seems I grab the wrong TVFS file under some specific conditions, like updates leave old TVFS files that now point to invalid/different file data. This TVFS file will be different for each locale (since it specifies where localised files like voices and text are stored) so it is possible that it is loading the current one for the English build and an old, invalid, one for the Russian build. Clean installing should get rid of these old invalid references and TVFS files from the CASC, fixing it.

I agree this is not ideal. Just I cannot work out a software solution to the problem unless I can recreate it so I can see how it is selecting the wrong file, and what the logic needed is for selecting the correct one.
 
Last edited:
Clean install Warcraft III Reforged. Delete the install folder to make sure all traces of the existing CASC are removed. Then download it again fresh. Not an ideal work around but has solved it for at least 1 person so far.

See my post above for details...
It seems I grab the wrong TVFS file under some specific conditions, like updates leave old TVFS files that now point to invalid/different file data. This TVFS file will be different for each locale (since it specifies where localised files like voices and text are stored) so it is possible that it is loading the current one for the English build and and old, invalid, one for the Russian build. Clean installing should get rid of these old invalid references and TVFS files from the CASC, fixing it.

I agree this is not ideal. Just I cannot work out a software solution to the problem unless I can recreate it so I can see how it is selecting the wrong file, and what the logic needed is for selecting the correct one.
So, do you think I also need to download the English game audio? I set the game to English as Retera suggested, but the game audio remained in Russian. After that, even in this state, the updated program still could not access the game resources. When I switch to the enus option, the program again shows an error window.
 
When I switch to the enus option, the program again shows an error window.
Dr Super Good knows more about this than me. So most likely the language was not the issue. If you try what he suggested instead, it might be more likely to succeed.
 
So, do you think I also need to download the English game audio? I set the game to English as Retera suggested, but the game audio remained in Russian. After that, even in this state, the updated program still could not access the game resources. When I switch to the enus option, the program again shows an error window.
As I mentioned, you need to clean install. (delete all game data files and then reinstall). It may be possible to retain the bulk of the data and just delete the index and manifest files and repair, but I do not know if that would work.
 
I have tried to save .mdx file to .obj but i got an error
Unknown error occurred:
java.lang.UnsupportedOperationException: OBJ saving has not been coded yet.
at com.matrixeater.src.MainPanel.onClickSaveAs(MainPanel.java:5454)
at com.matrixeater.src.MainPanel.onClickSaveAs(MainPanel.java:5405)
at com.matrixeater.src.MainPanel.actionPerformed(MainPanel.java:4837)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at java.desktop/javax.swing.AbstractButton.doClick(Unknown Source)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.desktop/java.awt.Component.processEvent(Unknown Source)
at java.desktop/java.awt.Container.processEvent(Unknown Source)
at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)

also something like that has shown when i tried to load custom .obj file
 
I was having Java SE Development Kit 24.0.2 (64) bit version installed than i added older Java version that is Eclipse Temurin JDK with Hotspot 17.0.18+8 (x64) and Retra model Studio changed its number from 0.04 to 0.04.6c but the error remains the same. I also want to ask about those 2 issues -
Unlike Matrix Eater, this application cannot pin a Geoset to be visible but not editable
Unlike Matrix Eater, this application gives no indication of a node's name graphically in the 2D editing space ---- Is this still a problem and those options are not working? coz i see that it has the source code of MatrixEater inside the ModelStudio source code so if those 2 codes are connected than it should work
 
Unlike Matrix Eater, this application cannot pin a Geoset to be visible but not editable
Unlike Matrix Eater, this application gives no indication of a node's name graphically in the 2D editing space ---- Is this still a problem and those options are not working? coz i see that it has the source code of MatrixEater inside the ModelStudio source code so if those 2 codes are connected than it should work
This is correct. These are maybe the only two known features that were not maintained in the updates when one program was refactored heavily to become the other program
 
Yes, I use the Outliner view and its hover-to-highlight functionality to identify nodes by name, and I use editability toggles in place of visibility toggles.

All of the code for the program is on GitHub as you indicated, so if you would like to modify the code and add back these features, or perhaps ask an AI to modify the code and add back these features, you are free to do so.
 
Back
Top