• 🏆 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!
  • ✅ HD Level Design Contest #1 POLL is now OPEN! Check out the stunning visuals of the final entries. 🔗Click here to cast your vote!

Morphin Ulti

Not open for further replies.
Level 5
Jul 5, 2011
So I got this model that has alternate anims..

I animated it on Milkshape3D then converted it to MDX.

what do i have to do with the anims in mdx format?
i mean.. what are the looping ones, and non-looping ones and how do i do it? Next is how do i control other "stand" anims frequency.
And how do i make it morph ingame.
I know i need to give it Metamorph like illidan but is the change model file the only field i have to modify?
Level 8
Feb 21, 2005
You'll best convert the model to MDL for working with animations (that's my experience...).
The best tool out there by far is the MDLX Converter:

You probably know that MDL models can be viewed well in notepad, or better notepad++, or any other text editing tools.

I guess the best thing is to show you an example. I took the footman as an example as it contains both morph animations (Defend skill) and some variability in animations while still being rather simple.

At some point there you'll find the sequences, meaning the animations.

I'll go and explain it from the start, just to make sure.
There are a bunch of basic animation names (I don't list all here):

Birth //spawn of the unit
Stand //this is for standing around
Walk //walking around
Attack //attacking
Spell //casting of any ability
Throw //another common type of casting
Slam //critical strike
Channel //channeling abilities such as Blizzard
Death //when the unit dies
Decay //after death, decay of bones

You can combine some of these, for example a "Spell Slam" animation can play both when your unit lands a crit/bash/demolish attack and when it casts a spell

If a unit attacks, it does one attack and then waits for the cooldown/animation to finish until it starts the new attack, which is again started like the first one. So this animation doesn't need looping, it gets the flag "NonLooping,"
What needs looping are stand, walk and channel animations.

In addition to this, the animations can have different types of additional info. For example, if you have multiple animations, you can name them

Stand - 1
Stand - 2

When it is supposed to play a stand animation it will pick from these.
At this point you can set the rarity.
As you can see in the example, some of the animations have different rarities, for example Stand - 2 has a rarity of 4.
You can add this rarity line anywhere. To be honest I don't know how exactly the rarities are calculated into the animations, but basic human sense applies here: Lower rarity means that the animation will play more often.

For morph animations, you need the full set of animations your unit uses (Stand, Attack etc.) again unless it does not need them. For example a defending Footman needs Stand, Walk and Attack but can easily use the default death animation. If you morph a model into something totally else, you should of course add death animations and stuff for the morph as well.
Morphing spells add a tag that you can set to the unit, in this example it is "Defend", but usually it is "Alternate". That means that for every animation the unit with "Alternate" animation tag plays, WC3 will look for animations with the "Alternate" tag, like "Stand Alternate".
The animation used to morph it called "Morph", the animation to morph back is "Morph Alternate".
You can set the tag in the object editor if you're using a morphing ability, which you mostly should. If you don't, you can add/remove animation tags using the trigger editor:
call AddUnitAnimationPropertiesBJ( true, "YOURTAG", YOURUNIT )
true means you add it, false means you remove it.

Guess that answers your question (and a bit more ^^)

Here's the footman sequences:
Sequences 13 {
	Anim "Stand - 1" {
		Interval { 167, 1667 },
		MinimumExtent { -19.5992, -33.1796, -0.28233 },
		MaximumExtent { 52.4008, 36.7176, 99.0722 },
		BoundsRadius 62.4483,
	Anim "Stand - 2" {
		Interval { 1833, 4333 },
		Rarity 4,
		MinimumExtent { -27.0629, -46.5617, -0.690621 },
		MaximumExtent { 59.4818, 42.1317, 99.4823 },
		BoundsRadius 63.9095,
	Anim "Stand Victory" {
		Interval { 4500, 6833 },
		MinimumExtent { -25.6095, -52.7413, -0.528684 },
		MaximumExtent { 54.3427, 48.3475, 142.281 },
		BoundsRadius 82.3794,
	Anim "Stand - 4" {
		Interval { 7000, 12267 },
		Rarity 5,
		MinimumExtent { -60.4893, -55.4363, -0.26258 },
		MaximumExtent { 53.407, 54.8092, 107.634 },
		BoundsRadius 77.4681,
	Anim "Attack - 1" {
		Interval { 12500, 13500 },
		MinimumExtent { -46.2839, -55.8125, -0.90315 },
		MaximumExtent { 110.267, 49.3873, 141.544 },
		BoundsRadius 90.3454,
	Anim "Attack - 2" {
		Interval { 13667, 14667 },
		MinimumExtent { -59.3253, -64.972, -1.44231 },
		MaximumExtent { 119.945, 64.6484, 115.557 },
		BoundsRadius 100.836,
	Anim "Walk" {
		Interval { 17667, 18467 },
		MoveSpeed 215,
		MinimumExtent { -47.6727, -53.8232, 0.516667 },
		MaximumExtent { 57.0995, 45.488, 107.691 },
		BoundsRadius 64.2779,
	Anim "Stand Defend" {
		Interval { 18833, 19833 },
		MinimumExtent { -32.244, -33.9047, 1.38283 },
		MaximumExtent { 54.8004, 36.1744, 93.6012 },
		BoundsRadius 61.8369,
	Anim "Walk Defend" {
		Interval { 20000, 21100 },
		MoveSpeed 110,
		MinimumExtent { -37.5412, -31.6479, -3.83594 },
		MaximumExtent { 50.1027, 36.0322, 94.4434 },
		BoundsRadius 57.1482,
	Anim "Death" {
		Interval { 21333, 24367 },
		MinimumExtent { -90.7725, -60.256, -13.7289 },
		MaximumExtent { 51.5432, 61.6014, 116.245 },
		BoundsRadius 76.1865,
	Anim "Decay Flesh" {
		Interval { 25000, 85000 },
		MinimumExtent { -90.7725, -60.256, -43.8494 },
		MaximumExtent { 37.0719, 59.4007, 37.6311 },
		BoundsRadius 78.2629,
	Anim "Attack Defend" {
		Interval { 92200, 93200 },
		MinimumExtent { -53.2701, -51.496, 0.26925 },
		MaximumExtent { 93.1804, 47.0702, 119.259 },
		BoundsRadius 95.9114,
	Anim "Decay Bone" {
		Interval { 159967, 219967 },
		MinimumExtent { 3.40282e+038, 3.40282e+038, 3.40282e+038 },
		MaximumExtent { -3.40282e+038, -3.40282e+038, -3.40282e+038 },
		BoundsRadius 73.6202,
Level 5
Jul 5, 2011
thanks for the very detailed explanation dude. but i already have it animated and its already on mdx format.
these are the anims i have
stand - 1
stand - 2
stand - 3
stand ready
attack - 1
attack - 2
spell first
spell second
spell third
Morph alternate
stand alternate
stand ready alternate
attack spell first alternate
spell second alternate
spell third alternate
walk alternate
walk alternate - 2
death - alternate

the problem is that unlike most morphing models that has a completely separate body. It only has alternate animations. But no alternate bones.. Because when it morphs. it doesn't really change completely. Some parts are just added like wings and halo (but it doesn't become a flyer, still a land unit) So what i did to test it is..
-i imported it via import manager
-changed the demon hunter model to my mdx
-changed the morphed demon hunter model under "special" also into my mdx. i also kept the "alternateex" string in the "Required Animation Names" field. but since i don't have alternate bones, i removed the string "alternate" in the "required bone names" field.
-i didn't do anything to the "Metamorphosis" ability because its already indicated that it uses the demon hunter unit (which already uses my mdx as indicated above)

after doing those things, i tested it ingame. But every time i use metamorphosis IT doesn't work, it doesn't do the morph animation when it is casted and it doesn't use the alternate animations. heck! what did i miss??
Level 26
Jun 15, 2006
first of all: welcome :)

second: you don't need alternate bones for alternate animations. You would only require them when the alternete animations include an alternate mesh. But I also just made a test map for you. You just have to replace the model of the test unit with your own :)

third: following anims should loop: stand, walk, everything with the channel suffix
these anims do not loop: birth, attack, spell, death, decay, dissipate

I hope this helps :)

Edit: Updated the test map. Fixed that projectile problem by editing the dmg point. I also changed the height of the projectile in case the projectile of your model does fly from a strange position.


  • AlternateAnimationsTestMapUpdated.w3x
    16.5 KB · Views: 57
Last edited:
Not open for further replies.