• 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
It's a 1 line change to edit RMS to make it support 1.31. I think i sent the 1.31 version to someone at some point. Are you trying to use 1.31?

Some people say that RMS gives them the container encoding error on Patch 2.0 and new stuff. But the problem is, on my computer, it still works. So I don't know how to fix something that isn't broken on my computer
No, I'm trying to use it on Patch 2.0.2xxxx whatever it's called now.
 
I met two problems when I made the model.The first problem is that when the spliced model performs an action,Some equipment or body parts will disappear.Especially when splicing heroic equipment.
The second is that I don't know how to modify the sound when the unit dies.I made a model of a female warrior.Based on footman.Death is footman's death voice.I don't know how to change it I hope someone can help me.😭
 
hello, can anyone tell me how to convert *.mdx/mdl to *.fbx(or any other standard format) so that i can use it in unity3d engine?
@Retera
i tried menu->file->save as *.obj but encounter a exception error (saying "OBJ has not been coded yet").
 
hello, can anyone tell me how to convert *.mdx/mdl to *.fbx(or any other standard format) so that i can use it in unity3d engine?
You could check the twilac fork of Retera Model Studio, but if it does not have that feature, then it might be worth using the blender importer to then export to fbx.

Unfortunately, while I was developing Retera Model Studio, what I was doing was Warcraft 3-centric and so in some cases I helped develop code to bring other formats in, but I didn't focus on what it takes to get these existing formats out.
 
You could check the twilac fork of Retera Model Studio, but if it does not have that feature, then it might be worth using the blender importer to then export to fbx.

Unfortunately, while I was developing Retera Model Studio, what I was doing was Warcraft 3-centric and so in some cases I helped develop code to bring other formats in, but I didn't focus on what it takes to get these existing formats out.
ok, thx, ill try
 
Hello, I found that "ReteraModelStudio" seems to be able to directly bake diffuse, normal, and ORM format textures into a single TGA format texture(Scripts> HD->SD with texture baking).
Can this function be used directly? What I mean is, I want to bake these three modified textures into a TGA format texture directly through a plugin.
@Retera
 
Can this function be used directly? What I mean is, I want to bake these three modified textures into a TGA format texture directly through a plugin.
Sure you can do this. If you want help from an LLM AI, go to Window > Views > Matrix Eater Script dropdown and it will open a console where you can run arbitrary code with all of the code libraries of Retera Model Studio available and loaded via the current instance. It has a bug where you need to open any MDX model first, maybe just click peasant, and then you should be good to go.
Tell the AI that:

And see where that ends up. Or if you already have Retera Model Studio open in an IDE, just navigate to the FtlopMaker scripts and run the main method on the one that runs this bake algorithm on every model in the game and saves the result to some folder. But the folder it creates is usually about 150 GB of file size (uncompressed)
 
Sure you can do this. If you want help from an LLM AI, go to Window > Views > Matrix Eater Script dropdown and it will open a console where you can run arbitrary code with all of the code libraries of Retera Model Studio available and loaded via the current instance. It has a bug where you need to open any MDX model first, maybe just click peasant, and then you should be good to go.
Tell the AI that:

And see where that ends up. Or if you already have Retera Model Studio open in an IDE, just navigate to the FtlopMaker scripts and run the main method on the one that runs this bake algorithm on every model in the game and saves the result to some folder. But the folder it creates is usually about 150 GB of file size (uncompressed)
thanks,i I'll try
 
Shattering, I was in the middle of dicking around with stuff.
The tool download here on Hive has been updated with a fix, version 4.6b. Feel free to do some testing with it and report any issues.

As a note, we don't have to be shattered by surprise updates with regards to Retera Model Studio. The program is open source hosted here: GitHub - Retera/ReterasModelStudio: Retera's Java WC3 libraries.

95% of the code changes to fix the new issue were written by @BogdanW3 this morning and not by me. Because the code is available, you could be the one to do the fixes as well if you desperately need them. This is a different style of code management than Blizzard Activision's game, which is the only place where surprise updates are faced. For a fan tool like this, we can have shared access to fix the tool so that if it breaks you can always fix it. I like this style better. If I have a heart attack, someone else could always still fix it. So Retera Model Studio is never going to be "taken away from you" unless you decide to start using a version that is not open source.
 
The tool download here on Hive has been updated with a fix, version 4.6b. Feel free to do some testing with it and report any issues.

As a note, we don't have to be shattered by surprise updates with regards to Retera Model Studio. The program is open source hosted here: GitHub - Retera/ReterasModelStudio: Retera's Java WC3 libraries.

95% of the code changes to fix the new issue were written by @BogdanW3 this morning and not by me. Because the code is available, you could be the one to do the fixes as well if you desperately need them. This is a different style of code management than Blizzard Activision's game, which is the only place where surprise updates are faced. For a fan tool like this, we can have shared access to fix the tool so that if it breaks you can always fix it. I like this style better. If I have a heart attack, someone else could always still fix it. So Retera Model Studio is never going to be "taken away from you" unless you decide to start using a version that is not open source.
Glory to Retera, glory to Bodgan! :spell_breaker:
 
As a note, we don't have to be shattered by surprise updates with regards to Retera Model Studio. The program is open source hosted here: GitHub - Retera/ReterasModelStudio: Retera's Java WC3 libraries.

I don't have any complaint about what you're doing., it's Blizz as usual.

I would have complained on the patch thread but then it's like "ok but what do you want US to do about it?".

I'll check out the update. I might not have updated at all in ages because of so many experiences with Windows, Android etc. breaking.

ED: Working fine now :thumbs_up:
 
Last edited:
Hello,

I have the problem that my windows on the editor always bug out like this. Not only in this tab but the whole editor itself. I can fix it for a moment by minimizing and opening it up again, but it still occurs. What can I do?
 

Attachments

  • Retera Model Editor.png
    Retera Model Editor.png
    213.9 KB · Views: 81
Hello,

I have the problem that my windows on the editor always bug out like this. Not only in this tab but the whole editor itself. I can fix it for a moment by minimizing and opening it up again, but it still occurs. What can I do?
Go to "Edit --> Preferences Window", and tick on "Force Use OpenGL". This should fix it.
 
So i put in options for my warcraft 3 install dir D:\games\Warcraft III witch is my wc3 reforget install dir , I dolnloaded the 4.6b verson , but it gives me errors , and I cant use this tool , is there some specific setup i need to make it working
 
1753690436243.png


Java:
Uncaught exception on Thread "AWT-EventQueue-0":
java.lang.NoClassDefFoundError: Could not initialize class com.hiveworkshop.wc3.gui.modeledit.ModelComponentBrowserTree$ChooseableModelRoot
    at com.hiveworkshop.wc3.gui.modeledit.ModelComponentBrowserTree.buildTreeModel(ModelComponentBrowserTree.java:218)
    at com.hiveworkshop.wc3.gui.modeledit.ModelComponentBrowserTree.<init>(ModelComponentBrowserTree.java:62)
    at com.hiveworkshop.wc3.gui.modeledit.ModelPanel.<init>(ModelPanel.java:109)
    at com.matrixeater.src.MainPanel.loadStreamMdx(MainPanel.java:6219)
    at com.matrixeater.src.MainPanel$68.loadFile(MainPanel.java:1852)
    at com.hiveworkshop.wc3.jworldedit.objects.UnitEditorTreeBrowser$1.actionPerformed(UnitEditorTreeBrowser.java:56)
    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)

what would be the problem here? i am just trying to open for example the peasant model.
 
The recalculate normals option is not working in this new version?
Does it give an error or does it calculate them "wrongly"? There's been some back and forth and I think last summer @General Frank asked for me to revert some changes with the recalculate normals feature regarding whether it does or does not treat concentric vertices as one and the same vertex.

More advanced modeling programs like 3ds max or blender have an advantage here when they're dealing with the original source material, because they may store more metadata on each vertex regarding whether it is smooth or flat, to then aid in better normal calculation. But as far as I know that information is not present in the MDX format since it was originally intended to be the sort of binary baked output fed to a game engine, rather than a format for ongoing edits in an editor.
 
View attachment 543853

Java:
Uncaught exception on Thread "AWT-EventQueue-0":
java.lang.NoClassDefFoundError: Could not initialize class com.hiveworkshop.wc3.gui.modeledit.ModelComponentBrowserTree$ChooseableModelRoot
    at com.hiveworkshop.wc3.gui.modeledit.ModelComponentBrowserTree.buildTreeModel(ModelComponentBrowserTree.java:218)
    at com.hiveworkshop.wc3.gui.modeledit.ModelComponentBrowserTree.<init>(ModelComponentBrowserTree.java:62)
    at com.hiveworkshop.wc3.gui.modeledit.ModelPanel.<init>(ModelPanel.java:109)
    at com.matrixeater.src.MainPanel.loadStreamMdx(MainPanel.java:6219)
    at com.matrixeater.src.MainPanel$68.loadFile(MainPanel.java:1852)
    at com.hiveworkshop.wc3.jworldedit.objects.UnitEditorTreeBrowser$1.actionPerformed(UnitEditorTreeBrowser.java:56)
    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)

what would be the problem here? i am just trying to open for example the peasant model.
Oh It seems that the program does not detect your game installation path, therefore to solve that, just change the configuration of your Retera, where you clean its path, and then put the new one until you get to the "Warcraft" folder of your installation, and then it will give you 4 options of what type of mods you want to have in your account, and that is where you select if you want the reforged, or if you want the classics, I would recommend having both (for example the classic and the classic HD) so that you do not have problems opening, editing or reviewing the files of things

Psdt: In theory that is useful, and I know this, because as I had to uninstall my warcraft to be able to open clean junk folders that I had surplus to create models and all that, when I downloaded the game again from scratch, it asked me to install the game exactly your same problem when I wanted to open a model and when activating those two in classic and classic HD I no longer have that problem.
 
Does it give an error or does it calculate them "wrongly"? There's been some back and forth and I think last summer @General Frank asked for me to revert some changes with the recalculate normals feature regarding whether it does or does not treat concentric vertices as one and the same vertex.
It still works for me in the newest version.
The recalculate normals option is not working in this new version?
You have to select the vertices/meshes and then recalculate the normals.
 
Last edited:
Hello and great guide and tool thanks for sharing, I just have a question since am slowly learning modding, is it possible to use HD models in Classic like 1.31 ? and if yes can this tool help in that ? thanks a lot
 
is it possible to use HD models in Classic like 1.31 ?
No it's not possible. They were specifically designed to make it really difficult.

If you want to try anyway, you can use Scripts > Convert HD to SD (experimental with baking) in the dropdowns. It tries to generate a corresponding model, but they are very data heavy and don't fit well in the old original game.
 
My friend, when will you properly fix your program? Currently, your tool is not compatible with the latest Reforged patch version, and an error table appears, making it impossible to open your program.

Unknown error occurred:
java.lang.RuntimeException: com.hiveworkshop.blizzard.casc.nio.MalformedCASCStructureException: container encoding key mismatch
at com.hiveworkshop.wc3.gui.datachooser.CascDataSource.<init>(CascDataSource.java:75)
at com.hiveworkshop.wc3.gui.datachooser.CascDataSourceDescriptor.createDataSource(CascDataSourceDescriptor.java:31)
at com.hiveworkshop.wc3.mpq.MpqCodebase.<init>(MpqCodebase.java:33)
at com.hiveworkshop.wc3.mpq.MpqCodebase.get(MpqCodebase.java:180)
at com.matrixeater.src.MainFrame$1.run(MainFrame.java:400)
at java.desktop/java.awt.event.InvocationEvent.dispatch(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.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:672)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveFilePathRetrieve(VirtualFileSystem.java:505)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveFilePathRetrieve(VirtualFileSystem.java:496)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveFilePathRetrieve(VirtualFileSystem.java:516)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveFilePathRetrieve(VirtualFileSystem.java:496)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.recursiveFilePathRetrieve(VirtualFileSystem.java:496)
at com.hiveworkshop.blizzard.casc.vfs.VirtualFileSystem.getAllFiles(VirtualFileSystem.java:439)
at com.hiveworkshop.blizzard.casc.io.WarcraftIIICASC$FileSystem.enumerateFiles(WarcraftIIICASC.java:43)
at com.hiveworkshop.wc3.gui.datachooser.CascDataSource.<init>(CascDataSource.java:41)
... 17 more
 
Last edited:
Hello man @Retera

I am getting this error upon openinig. :)


Unknown error occurred:
java.lang.RuntimeException: CASC parser error for: war3.w3mod\filealiases.json
at com.hiveworkshop.wc3.gui.datachooser.CascDataSource.internalGetResourceAsStream(CascDataSource.java:109)
at com.hiveworkshop.wc3.gui.datachooser.CascDataSource.getResourceAsStream(CascDataSource.java:88)
at com.hiveworkshop.wc3.gui.datachooser.CascDataSource.<init>(CascDataSource.java:44)
at com.hiveworkshop.wc3.gui.datachooser.CascDataSourceDescriptor.createDataSource(CascDataSourceDescriptor.java:31)
at com.hiveworkshop.wc3.mpq.MpqCodebase.<init>(MpqCodebase.java:33)
at com.hiveworkshop.wc3.mpq.MpqCodebase.get(MpqCodebase.java:180)
at com.matrixeater.src.MainPanel.<init>(MainPanel.java:1422)
at com.matrixeater.src.MainFrame.<init>(MainFrame.java:470)
at com.matrixeater.src.MainFrame$1.run(MainFrame.java:411)
at java.desktop/java.awt.event.InvocationEvent.dispatch(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.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$PathResult.readFile(VirtualFileSystem.java:175)
at com.hiveworkshop.blizzard.casc.io.WarcraftIIICASC$FileSystem.readFileData(WarcraftIIICASC.java:123)
at com.hiveworkshop.wc3.gui.datachooser.CascDataSource.internalGetResourceAsStream(CascDataSource.java:99)
... 21 more
 
Last edited:
Back
Top