War3 Model Tuner v1.2.7.2

This bundle is marked as pending. It has not been reviewed by a staff member yet.
This tool is a work in progress and I am open to requests and reports. (optimization, adjustment, modification, inspection, bugs, etc)).
Preferably start a private conversation with me or send me a message on Discord at Stan0033 and I will try to help you. As a modeler, it is preferable, you to know what feature/s you are looking for and make sure you are familiar with the description and the application after inspection.

It can render, edit, inspect, optimize and animate models format 800 and has many handy tools, and intuitive IU. Github Repository
:piru:

Note for 1.2: if rendering seems off go to Render>Refresh Render Data

Requirements: .NET 3.5 or .NET 5.0



MDXLib from MAGOS - read/write MDX/MDL format 800
War3NET Libraries - read/write MPQ and BLP
dsafa's Color picker for WPF
SharpGL for rendering

Visual Studio - for working on the project



✅
open/save models format 800
✅
Edit/create all model components
✅
Cascade deletion
✅
Copy/Transfer animations
✅
Precautions
✅
Render model
✅
Edit geosets
✅
Transformation editor
✅
Optimizer
✅
Import components
✅
Import OBJ models
✅
Info
✅
inspector (and various inspection amenities in the UI)
✅
Error Checker
✅
Cleaner - remove multiple components with one click
✅
Camera control
✅
create Camera from view
✅
Texture Browser
✅
Model Browser
✅
Extra tools
✅
MPQ Browser
✅
Collision Shape Editor
✅
Nodes Editor
❌
Play animations
✅
Animations editor
❌
Rigging editor
❌
Vertex editor
❌
Triangles editor
✅
UV Mapper
❌
Reforged support







Mouse picking with raycasting
Vertex editor
Triangles editor
Rigging editor
UV Mapper
Animate
Play animations







in geosets added button to edit the geoset animations visibilities of a geoset easily with a dialog (requested by @Villagerino)
In inspector added error checker similar to sanity test
longer item width for nodeslist node
An item in the layer's list also contains more info
in layers - you can now create new and change order
in optimizer - added option to remove repetitive track by time
in nodes - selecting a node also displays its pivot point
- added button to open the folder of the model



  • added option to create material (how could i forget)
  • added optiosn to create tean color and team glow textures
  • error checker now also checks the keyframes
  • updated the render function to render normals
  • added dedicated transformation editor and you can edit all components' tranformations (exept special data of nodes)
  • dialogs to edit the data of attachment, bone, collision shape xD


  • two more buttons in the transformation editor, and global sequence select combobobx
  • changed the layout of the node tab @Villagerino
  • changed the layout of the sequences tab
  • lil update to optimize tab ui
  • in the list of layers, now a layer item also contains its used texture animation and filtermode.
  • in teh lsit of textures now a replaceable id1 is named team color and repalceableid2 is names team glow :)
  • int ransformation editor: double clicking on an item will flip it if it's visibility
  • for texture animations - button "new", and layer allow selecting the texture animation
  • fix: geosets>"delete" + now also deletes geoset animation/s that use it
  • Removed the sliders - you can now zoom and rotate with the mouse @Villagerino
  • merge geosets now also removed the geoset animations of the removed geosets
  • you can now create and edit event objects
  • you can now make screenshots from "UI"
  • UPGGRADED to .net5.0. Minimum OS now Windows 7 SP1
  • Because I included .WAr3NET Library for reading BLP FIles and the MPQ
  • And now the model will be rendered with textures! even though it's kinda broken for now.
  • Fixed duplicate geoset command
  • create team background and hero glow fixed
  • Geosets>center at enabled
  • new command Geosets>subdivide
  • in transformation editor added option to loop
  • other fixes and thingies



  • Update to UI of geosets
  • In nodes , [edit data] support for the remaining nodes - emitter1, emitter2,ribbon, light
  • in emitter2 you can set all of the filtermodes explained here Particle Emitters 2
  • in Geosets added more commands: Simplify, Flatten Side, fragment, and others
  • the list of geosets now has checkboxes that make a geoset visible/invisible.
  • fixed loading external textures from the local folder of the model




new command in geosets> negate normals
in optimizer new options:
  • Delete overlapping triangles who use the same vertices
  • Delete fully overlapping triangles who use different vertices
in error checker - check for that as well.
transformation editor - fixed [no scaling down tracks] when updating the transformations of scaling and alpha
new commands in Transformations Editor - increment/decrement all with, negate, negaete all, set all to..., multiply all by..., enter from text
- in import added option "Overwrite list of sequences with another model's"
in geoset animations > added command "Make all geoset animations the same as this"

  • completed and enabled all options in "import nodes of..."
  • the options loop x times, and unlopp, were removed because you can do that in the transformation editor
  • the option "space transformation" finished and enabled
  • the app can now open a model file if you associate the extension with it, and double click it
  • "Sync with..." completed and enabled





Support for rendering and dispalaying team color. Automatically detect if you have 12 or 24 colors MPQs
Error checker - checks if a non-static geoset animation has all sequences as keyframes
Error checker - now checks there are overlapping/intersecting triangles as a warning.
in optimizer - added clamp normals. Though it is highly unlikely to have invalid normals, unless you edited the file with notepad.
in optimizer - added option to remove triangles with 0 area
in optimizer - added option to merge vertices that have the same position and texture position
in sequences - one additional row that displays which nodes are animated in the selected sequence or global sequence
changing textures and geoset materials now updates with the viewport to avoid exceptions
in textures you can now check wrap width and height




v1.10

UI:
  • Various UI fixes
  • Fixed some things related to node data editing
  • fixes on the transformation editor
  • in transformation editor added a dialog the same as geoset visibilities that allows to set all visibilities fast. 'set per sequence'. it's only available for alphas and visibilities
  • trying to open an emitter2's data will prompt error "no textures" if there arent
  • Transformation editor will display error message for no sequences if there arent any, now
  • color picker now displays in textblocks what value is selected in the sliders
  • if the geosets count was 0 and trying to zoom in the viewport, that crashed the app. Fixed that.
  • fixed a miss: now selecting a layer also select the used texture animation. And Selecting a texture animation sets it to the layer.
  • creating particle emitters now is refused if there are no sequences (precaution)
  • Creating new sequence now capitalizes the name
  • particle emitter2 - fixed read/write segments, heads and tails
  • hitting 'Esc' on all dialogs will now close them
  • hotkeys for some menu items
  • 'make all geoset aniamtions alpha static 1' moved under geoset animations from cleaner
  • NEW: Camera manager

Error checker:
Added <error> - "There are particle emitters but no sequences". (That would crash a map)

optimizer:
  • added option "Remove duplicate geosets" (@Villagerino)
  • after all optimizations, one more is done - remove invalid/no longer valid geoset animations

new Commands:
  • in Sequences - 'Create presets...' - select from a list and create them, along with tiers, and alternate, and worker
  • in nodes - 'Reset all keyframes to default...'
  • in nodes - 'Duplicate'
  • in nodes - 'Remove sequences from keyframes...'

App:
- global exceptions report as messagebox, in case of bugs

Fixes inside MdxLib:
  • MDX no longer saves/loads an emitter2 with "head" tag checked if it wasn't checked. (Thats because the condition for <neither> was missing. (head or tail or both or neither)
  • MDX no longer saves/loads an emitter2 with a wrong filter mode
  • MDX now saves emitter2 segments' alpha properly
  • MDX never saves static visibility. I added saving temporarily but breaks other magos programs, so no. Magos decided not to read/write static visibility. Why would one anyway.
  • When saving a MDL file the MDXLib appended some bytes in the beginning of the file that made it unreadable to other programs. Added a function to clean the file after being saved.
  • Fixed error when opening a model with camera in MDL format (it expected a word instead of final closing brace)




1.11

new commands:
in transfomration editor - copy + paste
in nodes - find by name...
in geosets - 'attatch all geosets to bone...'

UI:
in 'new sequence': cannot enter negative values for 'from' or 'to', now (oops)
in transaformation editor: Tracks are now also enumerated
Material - has now bool property 'sort primitives near z' as it's present in mdxlib
other UI changes.

optimizer:
option 'merge identical materials'
option 'delete duplicate layers'
option 'merge identical textures'
option 'merge identical texture animaions'
'Delete similar adjascent keyframes' enabled and completed
Various Fixes ('merge vertices' fixed, does not destroy geometry, remove unused materials' now also checks inside ribbon emitters, others)
'Add missing keyframes' now will also add missing tracks at time 0, if the transformation uses a global sequence

Fixes in MDXLib:
  • no longer saves un-aniamted (0 keyframes) tranformation marked as animated



13/01/25
1.12:

Fixes:
  • import textures now also refreshes the list of textures (oops)
  • 'Fragment' now adds matrix group to each geoset and bone if no bones (oops)
  • geoset>select all will NOT cause the program to lag if the geosets are a lot (oops)
  • 'merge geosets' will now work properly (oopa)
  • a bug with the checkboxes

UI:
Geosets>'change used material' 's selectior nowalso has the used texture of the first layer of each material displayed

new in Optimizer:
  • 'minimize repeating matrix groups'
  • 'delete invalid geoset animations' (mandatory)

new in Error checker:
  • warning: geoset has more than 20,000 triangles
  • warning: number of geoset animations not equal to the number of geosets
  • warning: geoset used by more than one geoset animation

new commands:
in geosets> 'Separate' - if a geoset contains 2 or more objects, split them into different geosets
in geosets animations> - create missing, and delete all
in geosets> more fragment conmnds....




05/02/25
fixes:
  • the multiselector now can select multiple items (oops)
  • fixed filling static color in transformation editor ((it wasnt reversed)
  • geosets: create hero glow and creatе team background now also adds matrix group to the geoset (oops)
  • loading a file now sets the filepath for saving (oops)
  • in error checker fixed some miss related to missing opening track for geoset anim
  • 'reverse sequence' and 'reverse all sequences' are now working

UI:
icon of bone updated
Tooltips for some checkboxes
(New) two more options under "Render" -> "shading" and "collision shapes"
(New) Model>Load models from MPQ browser
In nodes > all buttons converted to contextmenu of the treeview
In textures > almost all options converted from buttons to context menus
In sequences > the buttons of the sequences part converterted to context menu
double-clicking on a sequence will also make it looping/nonlooping
in sequences> in new > one more option
in geoset animations menu > command to make all use and not use color
in nodes > selecting a bone also shows in the info panel the count of the vertices attached to
(new) Model>Save as copy with timestamp
in textures tab>in textures> you can now create from custom input, but is checked if existing
(new) button close

Geosets:
(new) The command to rotate renamed to 'rotate each' and added another command 'rotate together'
(new) 'create polygon' (it can also load an image for comparison)
(new) in addition to the command 'create collision shape for this geoset' added 'create sphere collision shape for this geoset', and also these functions now position the pivot point o the collision shape where the centroid of its geoset is


optimizer:
enabled and completed 'remove similar adjascent keyframes' (this time for real. And tested.)
(new) 'Attach geosets with no matrix group to a dummy bone'
Categorized checkboxes
Changed the way the optizier deals with missing opening/closing tracks
(fix) fixed quaternion (rotation) clamping for 'clamp all keyframes'.
(fix) fixed 'clamp uv coordinates' due to logical error in the clamping
(fix) 'minimize repeating matrix groups' fixed, it had logical error when checking for identical groups, that caused a model to be with broken rigging

Transformations editor:
(new) buttons 'copy as text' and 'Copy all as text'


NOTE: MDLVis cannot read MDX saved with this library because it expects the count of geosets in the header (like in the MDL format), or otherwise
says that there are no geosets, but i dont know how to add that in the header in MDXLib, or even if it's supposed to be there. So if you want to open the model in mdlvis, save as MDL. Or maybe MDLvis's parser expects a specific order of object definitions in order to recognize the geosets.





11/02/25

UI:
(NEW) Render>Geoset Extents box and sphere

Textures tab:
For material properties added the missing 'priority plane', both filling and setting.

sequences:
(NEW) "Set all sequence extents' celings" (this is for helping you fix the health bar issue)

Geosets:

(NEW) 'Rotate each geoset around custom point...' and 'Rotate all geosets around custom point...'
(NEW) 'Scale Together'
(NEW) i've written my own import/export logic for geosets, with file extension ".tgeo". You can now import/export single geosets. Not compatible with the one of magos editor. Magos editor's is in binary, mine is text.

error checker:
(FIX) 'missing the origin attachment point' now also trims the name of a node in order to check for such node
(NEW) added checking for unused global sequences
(NEW) now also checks for zero area triangles. That incldues triangle which has very small area, and triangle that uses the same vertex for 2 or 3 of its vertices.

optimizer:
(FIX) 'remove unused global sequences' fixed, wasnt checking correctly. (Magos' built-in check for references is not working.)
(NEW) 'Deduplicate matrix group nodes' - if a matrix group has two or more of the same node, remove excess

info:
sequences total duration is now sepearated each 3 digits by comma

Rendering:
the last layer of a material is now rendered instead of the first.

Nodes:
Trying to delete a node that has attached vertices to it will prompt a message saying to reattach them first
(NEW) 'Reattach attached vertices to another bone'

Transformation editor:
input fix for rotation



1.15:
13/02/25

Nodes:
  • 'Move under another node' now checks if it's not its parent xD (oops)
  • (new) many pivot point commands...
  • 'Duplicate' gives it a new name (oops)

Geosets:
  • new command 'Set Distance between two geoets' (push both, push second only, push first only

UI:
More render options




16/02/25
UI:
menuitem rearrangements
Render > 'Enabled'

Geosets:
(NEW) You can set a geoset's 'selection group' and 'unselectable' properties
(NEW) can edit extents manually of geosets and sequences

nodes:
new command 'Root all children of node'
new command 'Root all children and sub-children of node'

sequene:
(NEW) delete inbetween keyframes...
(NEW) leave sequence at specific keyframe....

error handling:
if a texture's extension is not blp, display error message and use instead textures\white.blp


1.17:
18/02/25

Nodes:
in the window for editing collision shape added commands 'Scale' and 'Translate'. This does not change the pivot point but the extent of the collision shape itself.
Geosets:
new command - center at node...
new command - Spread overlapping vertices
new command - edit visibility for ALL in sequence.... (useful for example if you want to make the whole model invisible at the end of 'Death' sequence)

Textures:
In the texture list menu added a button 'create plane with this texture'. It also has options for orientation.

Fixes:
cannot create negative and 0-length global sequence


29/02/25
UI:
  • now using for color picker <dsafa>'s color picker for WPF, instead of mine
  • various small fixes
  • menu "View" for the camera and camera controller
  • Import > 'Batch import OBJ/s as geoset/s'
  • menu "Tools":
  1. 'Batch convert MDL<->MDX'
  2. 'Batch convert BLP to PNG'
  3. 'Text colorizer for game tooltips
  4. My pathing texture maker
  5. My loading screen maker
Geosets:
  • create polygon - added export and import commands
  • 'Swap locations'
  • 'Mirror...'
  • 'Distance from point...'

Textures:
  • Materials> 'Apply this material to all geosets'
  • Deleting a material, attaches another material to affected geosets ,to avoid exceptions
  • Cannot delete the only material if there are geosets
  • Deleting a texture attaches another to affected materials' layers
  • cannot delete the only texture if there is a material
Textures browser:
  • Added tab 'favourites'
  • commands 'export', 'export as PNG' and 'Copy path to clipboard'

Nodes:
  • 'Swap Locations in tree' - if one or both are nested under different nodes
  • 'Swap pivot points'



1.19:
05/03/25



(fix) Fixed a coding mistake where the model would not be rendered unless you uncheck and check again Render> 'Enabled'. I felt like pushing an update earleir cuz people who cant see the model render would be discouraged from the app when they dont know how to fix that :D
Sequences > 'Mass create global sequences'
Model > (check) optimize on save
Saving and loading all preferences now found under 'Render', and the one above.
Tools > 1. Batch optimize...; 2. MPQ browser;

I've planned more stuff but for next version...


15/03/25

UI


  • <Enter> will now "click" the confirmation button for most dialogs.
  • More rendering options under "Render"
  • Other UI Changes

Info


  • Which bones are not animated?
  • Now also counts edges

View


  • Create camera from current view.

Textures > Textures


  • Delete texture and all materials using it – Removes a texture along with every material that depends on it.

Import / Model / Geosets


  • More import/export options.

Cleaner


  • Remove all lone nodes at root.

Model


  • Adjust model position (all geometry and all nodes).

Geosets


  • Rename – You can assign a name to a geoset, but since format 800 doesn't support geoset names, the name will only be visible in-app.
  • The command "Reset all geoset animations' alphas to static 1" was completed now. (oversight)
  • Command 'Change geometry based on a keyframe...' - For each selected geoset - select an existing keyframe and change the permanent geometry of that geoset to the keyframe. If not all vertices of a geoset are attached to one bone then do nothing.

Other


  • Other small fixes around.

Sequences


  • Set all sequence extents to...

Tools


  • Image To BLP Batch Converter
  • Calculate extents with exception... – For example, if your model has a TC background, you can exclude it from extent calculations.

Textures


  • Prepend War3Imported – This command adds the prefix to texture paths, so you don’t have to rename each imported texture in Warcraft 3's map editor.
  • Strip path – Removes unnecessary path data from textures.
  • Import – The app will now only look for .blp images in the folder of the current model.

Optimizer


  • Now fixes textures with invalid replaceable IDs upon opening a model.
  • Rewrie of 'Remove unused keyframes', with adjustments for 0 resulting keyframes, and resulting of invisible geoset animations
  • Added adjustment for time middle of particle2
  • 'Add origin ref if missing' now working (oversight)
  • The mandatory optimization for 'make all transformations with 1/no keyframes static' fixed for some default values

Transformation Editor


  • Set all keyframes of sequence to...
  • Start each sequence with default data
  • End each sequence with default data
  • Stretch sequence keyframes... – Keyframe times for the selected sequence will be adjusted to fill the entire sequence.
  • Copy/Cut selected sequence...
  • Stretch all sequences – Same as "Stretch sequence keyframes," but applied to all sequences.
  • The combobox filled with global sequences will now also show their durations
  • Command 'Change gradually inside sequence' - add multiple keyframes from track to track slowly going from one vlaue to another.
  • 'Duplicate sequence to sequence/s'

Sequences​


  • When selecting a global sequence, under the list you also get a list of components that use it

Nodes > Pivot Point


  • Align with parent...
  • Adjust at extent... (top, bottom, left, right, front, back...) – Can be based on model extent, sequence extent, geoset extent, geoset sequence extent, or extent from attached vertices.
  • Copy/Cut/Paste sequence from node to node – Move translation, rotation, or scaling sequences between nodes.

Nodes

  • Also paste coped transformation to muliple selected nodes

Rendering & Viewport​


  • Switched for rendering from Viewport3D to OpenGL (SharpGL).
  • UV rendering is 100% correct
  • Camera control is now more normal, it does't reset on each refresh and can be rotated more freely. (use now middle mouse button)

There are still a lot of things I'd like to add, but I think as of right now these changes are significant enough for a release before the next comes.



25/03/25
Changelog - v1.2.1:


Fixes & Improvements:


  • Textures > Textures:
    • FIX - When creating a plane from a texture, it now correctly creates its own bone and riggings (apologies for the oversight).
  • App:
    • Fixed a logical error when trying to load textures from the model’s folder.
  • Viewport:
    • The camera will now reset if any of its values become NaN.
    • Selecting a geoset in the vieport now shows its edges instead of showing an extent
  • UI:
    • Clicking "Save" when nothing is loaded now triggers "Save As" instead of showing an "empty save path" message.
    • The model’s name is now displayed in the main window’s title.
    • Dynamic debug information is available for the camera in the viewport.
    • Fixed an exception that appeared when trying to import a geoset with the Geosets tab open.
    • Node data is refreshed after closing a dialog in the Nodes tab.
    • New 'Start Maximized' checkbox added.
    • Increased minimum app width from 600 to 800.
  • Transformation Editor:
    • Bug fix: cleared the old list before generating a new one upon clicking "Apply."
    • New button: "Edit Time" allows you to change the time without modifying the keyframe data.
    • New options:
      • "Move keyframe’s time to start of its sequence."
      • "Move keyframe’s time to end of its sequence."
  • UI (Various):
    • Several UI updates and fixes to ensure proper updating after actions.

Tools & Utilities:


  • Cleaner:
    • Added option to Remove all extents.
    • Added option to Remove all Geosets' sequence extents.
  • Geosets:
    • New option to Create Primitive Shape > Sphere.
    • Properties > View Groups: View and manage groups associated with geosets.
    • The geoset list now also shows how many groups are associated with each geoset.
    • Geoset Animations: Added Copy/Paste commands.
    • Collision Shape Editor tab: Now you can easily edit multiple collision shapes at once.
    • Node Editor tab: Ability to change one or more nodes simultaneously.
    • Transform Panel added under the viewport for faster transformations.
  • Nodes:
    • Merge Bones: Combine multiple bones (from the root) into one, and all attached vertices will be recalculated to the new bone.
    • Duplicate Node: Fixed a logical mistake where the node’s translation, rotation, and scaling were not duplicated properly.
    • Fixed a logical mistake where a node’s time was already in the list when trying to add a track.
  • Textures:
    • Copy/Paste from Clipboard: Easily transfer a texture using a copied string.

Rendering:


  • Rendering Colors:
    • Updated rendering colors.
  • Team Color in Viewport:
    • Fixed an issue with changing team colors in the viewport (missed during the switch from viewport3D to OpenGL).

Miscellaneous:


  • Tools > Raw Keyframe Rearranger: New tool for rearranging keyframes.
  • Tools > Tile Paths Reference: New reference for tile paths.
P.S: also check some of the tutorial videos.

Coming in the future, eventually: UV Mapper, Vertex Editor, Triangles Editor, Rigging Editor, Animator (basic and advanced animating)



Geosets -> Center geoset/s at geoset
Geosets -> bottom Transformation panel -> Arrows movement buttons for faster-ish transforming
Rendering -> rendering of the different layer filter modes now.
Node editor -> Select all nodes used by geoset....
in Geosets > Animaator > There is a working tab "Paths" for reusing animation movements. Check it out.
App -> Hotkeys for the transformation modes in the transformation panel at the bottom


1.2.2.1:
Rendering -> The viewport no longer stretches the rendered image, becasue now the viewport aspect ratio is forced to always match the apect ratio of the projection matrix
Geosets -> Animators -> Paths -> 'Extract path from node keyframes...'
Nodes -> attachments -> Can now create origin ref with 1 click


UI -> almost every command will now mark the model as unsaved until you save it.
Geosets -> Fixed change with arrows for the nodes (overlook)
UI -> (fix) "Resize sequence" now refreshes the list (oversight)
UI -> The "delete" button will delete objects, depending on which is the focused UI control
UI -> The tab 'optimize' moved at second last position
Nodes -> inspection -> Now when you click on a node of type emitter1, emitter2, ribbon, light, or attachment, you will see in the side info panel in which sequences it is visible!
Nodes > the nodes lit items are now wider to support visibility for more nested
Textures -> which geosets and nodes use this texture ?
Nodes -> Added 3 commands in Nodes that deal with merging helpers and bones. (For dealng with converted models from WoW) @Power
Textures -> Layers > Duplicate layer
Textures -> Materials -> 'Duplicate'
Textures -> Texture Animations -> 'Duplicate'


03 april 2025
Various fixes all around
UI -> Transformation editor -> sequence name in the list also contains (start) or (end) for starting/ending tracks
UI -> Transformation editor - the delete button and the enter button now call click events.
UI -> Nodes -> 'Info' removed, and instead in teh right panel the info about which geosets are attached is displayed
UI -> (Inspection) Geosets -> Now when you select a single geoset, the tooltip of the listboxItem will change in order to show the visibilities of that geoset!
Error checker -> checks if ageoset have more than 255 matrix groups
Error checker - checks if 1. all values of a transformation are the same, 2. and if all values of a sequence in a transformation are the same
Nodes -> The editor for emitter2 will now disable static emission rate, if you check 'squirt'
Nodes > Create Presets -> 'Fire', 'Blast Flare'
Nodes -> 'Make visible in...' for quick editing of visibility of emitter1, emitter2, light, attachment, ribbon

1.2.3.2
You can now transform inside the viwport by dragging with the mouse. Select a mode, select an axes, input an increment value, then hold right mouse button and drag up or down.


05/april/2025:
- various fixes
Error checer -> added warning that particle emitter 2's alpha segments are 0 (Invisible)
Error checer -> Added check for geoset animations that checks if its alpha or color are missing sequence entries


Fixes in transformation editor:
  • clears list before recreating it upon update, for all (oversight)
  • Fixed setting values for alpha in transformaion edior (oversight)
  • Fixed error for invalid scaling in input
  • fixed 'create all starts' for some

Nodes -> Fixed the issue where when opening the dialog of an event object, the used data would not be selected in the big listbox

- optimizaion "remove unused keyframes" now also removes tracks from event objects (oversight)

Geosets -> new command - Export/import geommerge - this is similar to export geoset but the exported file also contains the material, layer, texture and texture animation data for the selected geoset so when you import it, you get not only the same geometry, but the same appearance.
Watch the video demonstration



06/aparil/25

  • Render > Presets (for fast checking/unchecking of render modes)
  • Render > Preferences - you can now edit the colors of lines and sze of points rendered
  • varous fixes
  • fixes for the texture edtor
  • fixes for the emitter2 window
  • Textures > Textures > 'View in big'



07/aparil/25
Edit visibilities - added button to check all, none, or inverse (in case you have a lot of sequences)
(Inspection) - UI - 'Colorize transforamtions'; in the list of sequences, the background color of a listbox item will now be different depending on what transformations it contains. Could be transparent, solid color, or gradent. Green for translation, yellow for rotaton, red for scaling.





1.2.4 08/april/2025
various fixes
--------------------------------------------------
transformation edtor:
--------------------------------------------------
Organized the 'more' menu
new command - 'Swap Sequences'
'Duplicate sequence to sequence/s' - finished. (oversight)
more commands - for optimization
More> 'Refresh keyframes list'
gradual keyframes maker - fixed an exception
----------------------------------
inspector -> 'Which sequences don't have animated geometry? '
Inspector -> now all inspect buttons show a dialog that also allows copy
--------------------------------------------------
UI -> Check for enabling transforming by dragging in the viewport
--------------------------------------------------
Sequences -> commands Copy and Paste Animations
Sequences -> "Delete all sequenes containiing keyword..."
--------------------------------------------------
Geosets -> bottom bar -> Copy and paste buttons (for fields)
Geosets -> Geoset animations -> 'Copy visibilities of sequence to sequence...'
Geosets -> for edit visibilities - upon initialization, checks only the visible ones


1.2.5 09/april/25

Various fixes
-------------------------------------------------------------------
Nodes :
'delete node and any geometry attached to it'
Copy keyframes via clipboard and paste keyframes via clipboard - you can easily tranfer keyframes via the clipboard!
-------------------------------------------------------------------
Rendering & Viewport :
Now the layer tag 'two-sided' is considered;
Now color influenced by geoset animation is consdered;
Lightng and shading are now visible and there is a check under render for lighting
Now when you press up/down, the camera's LookAt (Center) moves up/down
Transformation panel -> button "M" for more transformation modes, and 6 new transformation modes. Check them out
-------------------------------------------------------------------
Geosets:
Commanmd - auto-rig - each vertex is attached to its closest bone . Use wth caution.
Copy/Paste Rig - if a geoset has one matrix group, duplicate it onto another
Geoset operatons > Rotate > command 'Straighten' - rotates a geoset straight on a selected axes. Fast fix for tilted geosets. Works for multple selected geoses.
Normals > Force all normals to point outward/inward
-------------------------------------------------------------------
Textures -> Replace with... - replaces the texture's path which affects all materials and geosets using it
Tools -> 'Model Colors Changer' - For example if you have a model that uses geoset animation colors, fixed team color texture, colored glow or star, the command will change all of them. This is if you want to quickly create colored variations of a model.
-------------------------------------------------------------------




10/april/25
transformation panel:
1. Context menu with more options for the input fields;
2. A button to set all;
3. 2 more transformation modes: rotatte each, scale each,



NEW:
Geosets -> (Live) Mini UV Mapper - You can also see live changes on the model in the viewport.
Controls:
LMB Drag - Select
Left/Right/Up/Down - Move
Scroll - scale
Ctrl + Scroll - Rotate
Alt + Scroll - Scale Horizontally
Shift + Scroll - Scale Vertically
For hoykeys see the screenshot.
You can also use the menu items at the top



13/04/25
- Various fixes
Now when you create a sequence all animated geoset animation visibilities And all animated node visibilities and layer alphas are UPDATED. /so this takes away less worry from you./
Import -> import materials of...;
geosets -> 'to whch bones is attached ths geoset?' (inspection)
App - (FIX!) For some users the app crashes becasue it couldnt find listfile inside the mpqs and I added error message and the listfiile inside the folder "Paths"
- new optimization - split geosets with more than 255 matrix groups (reported by Elprede)
Nodes > Presets > create huuman skeleton
Geosets -> Removed tooltips forvisibilities from gesoets and isnstead there is a button 'Report visibilities'





1.2.7.1
--------------------------------------------
Geosets, Noodes -> 'Edit visibilities based on keyword...' - even easier editing of visibilites! For example if you want the geoset "gold" to be visibiile only in sequences containing the keyword "gold" or team background to be visible only in "portrait"
Geosets -> Menu to check/unckeck or invert check (for visibility in viewport)
-------------------------------------------------------------------



21/april/25

1. More hotkeys for some render options (and the option 'Textured' is now fixed)
2 Nodes -> Pivot Points (all) -> 'Center each bone at its centroid of attachment'
3. Centering, align and create menus moved to the top and works differently for each selected editor
4. UV Mapper - mouse dragging for moving;
5. UV Mapper -> Undo/Redo (ctrl+z/ctrl+y)
6. UV Mapper -> 'Average similar coordinates'
7. Switching between geoset tabs checks the relevant render checkboxes
8. Rendering-> Anti-aliasing.
9. Some other fixes





Some Tutorials / Demonstrations:






Older version from december 2024 click

Made with C# .NET3.5 / 5.0, WPF, Visual Studio 2022
Contents

1.2.7.1 (.NET5.0) (Binary)

So many useful functions, need to check it out!

If you'd like a command added, comment.
I'm very glad you're open for suggestions! 👍

That would be nice to have an option for a list of animations to work with visibility of a certain Geoset, e.g.:
300: 1
1536: 0
2558: 1
4800: 1
A full list from the beginning till the end because Magos makes it shorter and you have to write things by hand 🙂
(Usually I use a workaround - to get the list I copy a certain Geoset with its visibility via RMS and then open it in Magos and get its full sequence list.)

It is also hard for Magos to find a certain Geoset Animation, while you can right-click on a Geoset and it's position and also its Material layer will get highlighted, the Geoset Animations won't. If there's a way to open a model after you opened it in Magos, get the same numbers and see a list with what Geoset Animations refer to what Geosets? Or could this me done in Magos? :grin: At least people like me and Vinz sometimes suffer from this as you can have like 20 geoset animations in one model, eh.

Huge thanks in advance!
 
Last edited:
Special thanks for the function with normals, I think many will be very happy ✨

Tested the stuff: seems that recalculation does split normals 😔
Снимок экрана 2024-12-26 161707.png
Снимок экрана 2024-12-26 161800.png

This function is just top notch, I've never seen something easier for editing the visibilities, great work 🤘
Снимок экрана 2024-12-26 161449.png
It's very handsome that you highlight the geosets, here I only could wish to make the viewer have a bigger scale:
SE_bell1.gif
Because huge portrait backgrounds or other big stuff will limit the scaling.

I also wanted to draw attention to the selection of Geosets:
SE_bell2.gif
When you want to see something from behind, in this case the back of the head, the viewer resets the camera angle.

Another UI issue is that you cannot see the full Node list when you open the full list of functions:
SE_bell3.gif
When you run some of the functions the only way to get back to the full Node list is to use (scroll) your mouse wheel.

In the Textures tab it's hard to track what is what:
Снимок экрана 2024-12-26 165809.png
Seems that all IDs are set to 0 and you don't know what Material is based on what texture.

There's a sweet function that deletes duplicate Geo Animations:
Снимок экрана 2024-12-26 163746.png

I wanted to find a function that deletes duplicate Geosets. Am I missing it? If not, when added we can do without running MdlVis or dragging stuff into the MDLX Optimizer 👌

Probably a bug: 'Check for errors' function in the Inspector tab makes the app crash.

I'll keep looking through the other stuff when I have time, I hope that my feedback will help you 🤝
 
Last edited:
I don't quite understand it, but if Villagerino likes it I'm downloading it just in case I need it. ^_^
If you understand warcraft 3 models and the editor of magos you would understand this tool. Like any other experienced modeler on this site.
 
Love the new stuff in 0.8 and 0.9, especially removing overlapping faces (I believe they are triangles 😀), work with normals (gonna check this highly useful thing when have time 👌) and set all geo animations as one specific (helps setting the visibility much, much faster in simpler models - using this in Retera), good job, thanks for your effort 👍
 
Since this is using Magos code from 2008, although I haven't spent a lot of time looking into all the features of this tool yet and I'm just adding a reminder in passing, are you able to confirm if this has the same bugs as other Magos based things such as:
  • Changing the name of "length" to "width" and vice versa when opening MDX and saving as MDL
  • Sometimes causing light intensity to bounce to an infinite value in some cases (maybe)
  • Issues when reading certain models with multiple different TVertices (UVAS) chunks on the same surface. (Volcano spell effect destructable model, Cliff Cave doodad, etc)
  • Flipping (or failing to flip) the RGB versus BGR of animated color data (geoset animations)
I'm just mentioning this because in my case, I don't think that I would entrust my work to the Magos War3ModelEditor program typically due to issues like these if I was working on a model, because it would be constraining the parsing and handling of the file to have bugs from 16 years ago that generally weren't fixed during that time.

If you want to convert MDX<->MDL and back to look for errors in the Magos code and perhaps fix that code, one good way to do this would be to use the official Blizzard code for the conversion process. That way, every MDX is guaranteed to create a fully equivalent MDL that will reproducibly generate the same MDX when converted back. Because I already had the official converter available to me from 2004 onwards, by the time 2012 rolled around and I wrote my own custom software for processing models and converting and such, I tended to build my code to expect .mdl extension files to be in the Blizzard format instead of the Magos format. Ideally, there should not be two formats. "Length" should only have one meaning, etc. Until these kind of bugs are fixed, I wouldn't personally write software using Magos's code knowing how many issues it has. But, obviously if you're okay with a certain lower standard and Magos code generating various errors or inconsistencies in files, sometimes it's possible to live that "don't know, don't care" lifestyle and use files that are "good enough" even if they have problems.
 
@Retera

I knew an older library would have bugs, I didn't know what they are, someone had to tell me.

  • Yes, i saw now that loading MDX file (not for mdl) swaps emitter2's Width and Length if they are static.
  • thats why there is clamp attentuations in the app. You mean the library saves as that? That "maybe" would mean it happens in rare cases for unknown reasons.
  • i dont know what "having multiple texture coordinate chunks on the same surface" mean. Sounds like this shouldnt be valid as there is one texture coordinate per vertex. Do you mean that the list of texture coordinats in the file is longer than the other lists, before combining the lists into vertices? no wait, that would throw an error... i dont know
  • I believe that flipping of RGB is done by the developer not that library? the color is initially normalized BGR. So far i havent had issues with colors

Dont make is sound worse than it is, the inconsistensies are not that much.

Kinda suspicious that you "always" had access to official Blizzard code. Are you an ex employee or have direct relations to Blizzard?
 
Last edited:
Dont make is sound worse than it is, the inconsistensies are not that much.
I simply do not want any inconsistencies. Whether that is "worse than it is" or not is a matter of personal preference. There is not anything that would validate my opinions, since they are only opinions, but I'm also not certain that anything would make them invalid. (Nevertheless I thought it might be worthwhile to mention the technological issues, in case you have access to fixing them or if it might motivate you to use a newer library.)

this shouldnt be valid as there is one texture coordinate per vertex.
My definition of what is valid and what is not is something I try to only base on the game contents. To that end, some models have multiple texture coordinates per vertex. The Volcano and the Cliff Cave are examples of this. The volcano even includes independent moving surface texture animation applied to the different texture coordinates independently, but all on the same vertex. But as you have pointed out, caring about that could be considered something that sounds "worse than it is," since any model author could simply declare, "I shall not care about the Volcano ability art nor the power to modify it!" and then using Magos technology is great and fine.

Kinda suspicious that you "always" had access to official Blizzard code. Are you an ex employee or have direct relations to Blizzard?
I am not. Anyone can access this. A hacker named YobGul created a basic GUI app that converted between MDX and MDL using some War3Beta DLLs and published it, probably on wc3c back in the day. When I was a small child, someone copied this YobGul file converter tool onto my computer and I played with it offline even before having access to the internet. So this is a matter of random circumstance and not a matter of direct relations.

However, a bunch of MDX/MDL tools were included in the recent Reforged Debug leaks, so I also mentioned it because I would imagine you might be able to use those tools in a manner similar to the YobGul converter.
 
Hello, I tried to launch this application but I got the following error message :
"To run this application, you must install .NET. Would you like to download it now?"
When I click yes, nothing happens.
From what I understand, I need to install a .NET runtime that I can manually download here: Download .NET Framework | Free official downloads

But I don't know which one I need. I tried 3.5 SP1, but nothing happened when I tried to run it (as admin, in compatibility mode...).
 
Hello, I tried to launch this application but I got the following error message :
"To run this application, you must install .NET. Would you like to download it now?"
When I click yes, nothing happens.
From what I understand, I need to install a .NET runtime that I can manually download here: Download .NET Framework | Free official downloads

But I don't know which one I need. I tried 3.5 SP1, but nothing happened when I tried to run it (as admin, in compatibility mode...).
5.0
 
You metntioned that you can add features by request, any chance you can add a merge between bones and helpers?
yes, there is already merge for bone-bone, but i could add that.
As far as the other command 'merge similar bones' im working on it.

what do you want to do in merging process with transformations ? merge, erase, overwrite ?
What to do in case of parent-child relationships and conflicts ? merge, leave?
 
Level 48
Joined
Jul 29, 2008
Messages
9,824
OK so it's a model editing program; nice. This begs the question, though: what sets this apart from Magos, MDLvis, or either of the RMS's? What is the use-case, and/or what deficiency in the others are you covering for with your work here?

/edit/ To be clear, this isn't an accusation or a negative comment. I'm honestly curious. (personally, I use Magos for a lot, but MDLvis has better controls & UVWrapping, while RMS does all that + can import animation sets + other stuff. So they have different functionalities, reasons people might want to use one over the other).
 
Last edited:
OK so it's a model editing program; nice.
I don't like your dismissive tone
This begs the question, though: what sets this apart from Magos, MDLvis, or either of the RMS's? What is the use-case, and/or what deficiency in the others are you covering for with your work here?

/edit/ To be clear, this isn't an accusation or a negative comment. I'm honestly curious. (personally, I use Magos for a lot, but MDLvis has better controls & UVWrapping, while RMS does all that + can import animation sets + other stuff. So they have different functionalities, reasons people might want to use one over the other).
if you are so curious then you should make the comparisons by yourself by inspecting all the description and trying the app instead of expecting information to be hand-fed to you.
 
Last edited:
You are responsible for documenting and explaining the functions of your program.
1. There is written explanation of features, screenshots and videos, and a changelog. Plenty already. Functions inside have tooltips and there is 'help' menu
2. Your 'poor' rating is definitely not a fair reflection of the effort put into this project
3. It's not your job to intervene in other conversations.
You are the one having a dismissive and quite gross tone.
I am not dismissive or gross, I am addressing his lack of effort
 
Level 48
Joined
Jul 29, 2008
Messages
9,824
I don't like your dismissive tone
I'm sorry if my initial post seemed dismissive; I tried to edit in a disclaimer to soften it.

You have done a lot of documentation already, and I was essentially asking you to compare-contrast with other programs, to 'sell me' on this one. If you don't want to, that's fine. If so, it's nothing personal, but I'll probably not have the time to check it out myself (honestly still waiting to dig into RMS & I've known about that one for years, lol), so I wish you luck.
 
Top