• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

MDL Editing of Frostmourne Reforged model....

Status
Not open for further replies.
Level 12
Joined
Jan 30, 2020
Messages
875
Hello there.

Still slowly learning how to edit models properly.

I decided to edit my first Reforged model, the Frostmourne Pedestal. I was using this reforged model for a tower in my map, but the fog effect is a pain and the collision and animations were a bit messed up.

So here is what I did :

- removed ice and related effects.
- separated Frostmourne from its pedestal resulting in two distinct geosets.
- changed rally point attachment with origin ref
- added chest and overhead ref attachments
- reduced the radius of the pedestal and slightly increased its height
- applied a 180° rotation to Frostmourne so that it is pointing to the sky
- changed the collision shape into a proper elongated box
- removed the old sequences
- created 4 sequences : stand, walk, birth and death.

Now some quick info :
- Frostmourne Geoset has ID nb 0
- Pedestal Geoset has ID 1
- Added 2 distinct animations to Frostmourne : the first one is a global sequence that translate it vertically up and down, and the other animation corresponding to the walk sequence, that is a rotation around the Z axis.



Now my problem is BOTH GEOSETS follow both animations !!!!

I cannot understand why, it never happened to me before :

Here are my Geoset anims and Geoset related bones : for Frostmourne and the pedestal :

Code:
GeosetAnim {
   Alpha 6 {
       DontInterp,
       4700: 0,
       5200: 1,
       7700: 1,
       7800: 1,
       10200: 0,
       10800: 0,
   }
   GeosetId 0,
}
GeosetAnim {
   Alpha 6 {
       DontInterp,
       4700: 0,
       7000: 1,
       7700: 1,
       7800: 1,
       8200: 0,
       10800: 0,
   }
   GeosetId 1,
}
Bone "Sword" {
   ObjectId 0,
   GeosetId 0,
   GeosetAnimId 0,
   Translation 3 {
       Hermite,
       GlobalSeqId 0,
       0: { 0, 0, 0 },
           InTan { 0, 0, 0 },
           OutTan { 0, 0, 0 },
       1500: { 0, 0, 12 },
           InTan { 0, 0, 12 },
           OutTan { 0, 0, 12 },
       3000: { 0, 0, 0 },
           InTan { 0, 0, 0},
           OutTan { 0, 0, 0 },
   }
   Rotation 5 {
       Hermite,
       3600: { 0, 0, 0, 1 },
           InTan { 0, 0, 0, 1 },
           OutTan { 0, 0, 0, 1 },
       3850: { 0, 0, 0.7, 0.7 },
           InTan { 0, 0, 0.7, 0.7 },
           OutTan { 0, 0, 0.7, 0.7 },
       4100: { 0, 0, 1, 0 },
           InTan { 0, 0, 1, 0 },
           OutTan { 0, 0, 1, 0 },
       4350: { 0, 0, -0.7, 0.7 },
           InTan { 0, 0, -0.7, 0.7 },
           OutTan { 0, 0, -0.7, 0.7 },
       4600: { 0, 0, 0, 1 },
           InTan { 0, 0, 0, 1 },
           OutTan { 0, 0, 0, 1 },
   }
}
Bone "Pedestal" {
   ObjectId 1,
   GeosetId 1,
   GeosetAnimId 1,
}

Also, as it is important, here are the model sequences :
Code:
Sequences 4 {
   Anim "Stand" {
       Interval { 0, 3500 },
       MinimumExtent { -45.65800094604492, -47.87630081176758, -0.48919999599456787 },
       MaximumExtent { 45.65800094604492, 47.87630081176758, 132.2310028076172 },
       BoundsRadius 93.7040023803711,
   }
   Anim "Walk" {
       Interval { 3600, 4600 },
       MinimumExtent { -45.65800094604492, -47.87630081176758, -0.48919999599456787 },
       MaximumExtent { 45.65800094604492, 47.87630081176758, 132.2310028076172 },
       BoundsRadius 93.7040023803711,
   }
   Anim "Birth" {
       Interval { 4700, 7700 },
       NonLooping,
       MinimumExtent { -45.65800094604492, -47.87630081176758, -0.48919999599456787 },
       MaximumExtent { 45.65800094604492, 47.87630081176758, 132.2310028076172 },
       BoundsRadius 93.7040023803711,
   }
   Anim "Death" {
       Interval { 7800, 10800 },
       NonLooping,
       MinimumExtent { -45.65800094604492, -47.87630081176758, -0.48919999599456787 },
       MaximumExtent { 45.65800094604492, 47.87630081176758, 132.2310028076172 },
       BoundsRadius 93.7040023803711,
   }
}
GlobalSequences 1 {
   Duration 3000,
}


Why is the Pedestal Geoset using the animations used by the Frostmourne related Bone ???


NOTE : every time i save the model with Retera MSRH to MDL, it changes the properties of the 2BONES :
Sword Bone and Pedestal Bone both get "Multiple" in Geoset number and None in GeosetAnimNb...

I completely fail to understand what is going wrong. Everything else in the edited model works as expected...
 

Attachments

  • Frostmourne.mdx
    367.5 KB · Views: 35
Seems like nobody who knew the answer has seen this thread.

19 days later, I found the problem.

This kind of issue happens when geosets don't have distinct Matrices. That's all.

Thanks for sharing your solution. Too many people like to follow up posts like this with "Nevermind. Solved," and no further explanation!
 
Level 12
Joined
Jan 30, 2020
Messages
875
You're welcome, I try to always share when I solved an issue.

Like you, I have seen too many people vanishing with a single "nevermind, solved.".
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
Setting these bone properties is an optimization, and allows the game to not update the bones themselves and everything down the node hierarchy (or so is the theory, I don't know the exact behavior).
Mostly useful for models like the Mountain King which have 2 different "modes" each one with its own geosets and bones, to separate normal from avatar.

Either way, in this case, something like the sanity tester can actually catch this. E.g. I can easily see that bone 0 has its geoset set to 0, meaning that any vertex in geoset 1 that references bone 0 should be a warning.
I am not sure how prevalent this issue is or whether it's worth the effort, but I might add it to the test.
 
Level 12
Joined
Jan 30, 2020
Messages
875
Wow this is indeed very informative.

I realize how often the learning curve sends me back and forth, but seriously every little step ends up being a lot of knowledge gained.
There is so much to learn in so many subjects, but I can't seem to get bored :D

As you mention sanity tester for models, I had already used yours, but not always I confess. I haven't tested edits from reforge models with it, but I managed to make loktar's MDL optimizer work with the model mentioned in my first post by first removing all reforged specific properties, and adding them back after the optimizations, so I suppose I could do the same thing with your sanity tester.

As for bones references to geosets , so far when I build simple models (I am not yet able to do anything amazing like you guys can do), once I have finished building a geoset, I try to create a bone for it. In most cases, I tend to just use the geosetanim to handle the visibility, and if I need any specific rotation / translation, I add them to the bone. I am not sure this is the proper way of doing things, but so far it has allowed me to make my simple models work.
Now if I keep working hard as a mapmaker for a long time, there are many factors that I really want to become aware of, and if good practices is modeling can help optimizing how the game handles my small creations, I will really be pleased.

Anything I learn from you guys will help me progress, even if I don't expect to become an expert in modeling any time soon, because working alone on serious projects with dedication also means having to assimilate knowledge in many different areas. Especially when you are a perfectionist !

Anyways, thanks to the both of you, every little help is much appreciated.

EDIT :

@GhostWolf : Well I just tested all my models with your sanity tester, and yes it does not seem to be worried about Reforged specific entries :)

The good news is that my most complicated models have all passed the test, including the latest version of that frostmourne edit from the first post.

Several models from @Mythic seem to be missing many opening and closing tracks, but I suppose it has little impact.

My personal most common beginner's mistake is, I now realize, not always checking if the Number of sequence extents matches the number of sequences, because I often had that warning.

This little web app of yours is really godsend !
 
Last edited:
This little web app of yours is really godsend !
Yup :D

missing many opening and closing tracks, but I suppose it has little impact.
Yeah, usually it's not a problem. The main thing is that modeling tools don't always render this the same as the game, so it might cause unexpected behaviour when testing ingame.
Personally I always fix these, if only because I like to see that grey "passed" message :p

I am not sure how prevalent this issue is or whether it's worth the effort, but I might add it to the test.
I've had this issue a few times, and it took me a while to figure out because I usually just don't think about bone geosets/animations at all :p
But of course it's up to you how you use your time :p
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
While the MDX parser (and viewer) supports Reforged models, I never updated the sanity tester for it, so it doesn't handle some things correctly.

In general most of the warnings it reports can be ignored, especially the opening/closing keyframe ones.
Maybe rather than warning/error it should be split to severeness, because some warnings are due to things that will likely mess your model (but not make the game crash), while some can be ignored 99% of the time.
Then the client could offer checkboxes to show/hide different severeness levels.

Specifically for the sequence extents, if I remember correctly only magos actually breaks from that.

I'll see about updating the tool to make it more useful.

/edit
By the way just wanted to mention, the opening/closing warning isn't because of 3rd party tools, although it annoys me greatly that after all these years I still can't figure the exact game behavior when they don't exist.
The thing is, they really can cause weird animations in the game, with results that I can't really explain logically.
Sadly I can't find any of the test models I made to try and figure this out, those were some wonky animations.
So in general this doesn't happen, but due to not knowing when it does or doesn't, the code reports everything.
 
Last edited:
Maybe rather than warning/error it should be split to severeness, because some warnings are due to things that will likely mess your model (but not make the game crash), while some can be ignored 99% of the time.
Sounds good to me. Something like Critical/Causes bugs/May cause bugs (but worded better).
I should warn you, I plan to plagiarize your work again in the future, I want to add sanitation options to my model optimizer at some point :p
Specifically for the sequence extents, if I remember correctly only magos actually breaks from that.
I think so too, and only when there are too many I think, but not sure.
 
Level 12
Joined
Jan 30, 2020
Messages
875
By the way just wanted to mention, the opening/closing warning isn't because of 3rd party tools, although it annoys me greatly that after all these years I still can't figure the exact game behavior when they don't exist.
The thing is, they really can cause weird animations in the game, with results that I can't really explain logically.

Considering every information, your tool is still priceless as it comes to check in a model is made properly.
I still try to follow all warnings and fix them as I take it as good practices anyways.

Yes please don't stop working on your web app, I doubt people will give up modeling in the near future !

@loktar : Would you still consider updating your MDL Optimizer once you have released the MDX version ? Or make make it able to optimize both ?

Even when I will become a better modeler, I still believe I won't be able to refrain from working on the MDL version, as I like the direct control it can give. I suppose I am not the only one :)

Thanks for your hard work guys, you make the community live on.
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
A follow up - what I wrote above is not correct.
You can have vertices from some geoset attached to a bone that has its geoset field set to another geoset.
Many models that worked for the past 18+ years pretty much prove that.
Once more, I am lost as to how exactly this optimization works.

That being said, soon™ the test will work properly also for version 1000 models, and show the actual issue of the model above, i.e. the vertices are not attached to any bone.
 
Last edited:
Does the geoset field of a bone apply the animations too? Or only the geoset animation and flags if it is set as well? That would kinda make sense, I guess.
That being said, soon™ the test will work properly also for version 1000 models, and show the actual issue of the model above, i.e. the vertices are not attached to any bone.
Awesome :cool:2
 
Level 12
Joined
Jan 30, 2020
Messages
875
I second that, great news, I can't wait :)

Oh I forgot to add this :
@Magos : in the current state, and in spite of the wonderful Model Studio Retera as given us, note that it is still not possible for me to create my simple models without your Model Editor.
It also is able to remove some vertices while severing some links that Retera's amazing studio currently cannot do.
Same goes with the extents calculation and some other goodies that only your tool currently offers to the community.
And I lost count of how many times I had to use it since I came back to map making in December.

So I am not sure how things will evolve in the future, but maybe you could start to consider updating it some day, unless Retera suddenly become hyperactive and add all the features from your tool to his studio. Of course I am aware this represents a lot of work, but this is just an idea :)
 
Last edited:
Level 12
Joined
Jan 30, 2020
Messages
875
Patience is an art :D

EDIT :
Oh well I suppose he will never come as he stopped being active ?

I would not know, I was not there !

...

Outch ok, he was last seen here in 2010 :O

Well I was not around between 2005 and 2019 !!!
 
Last edited:
Status
Not open for further replies.
Top