• 🏆 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!

Epic Animation Viewer v1.5

The Epic Animation Viewer !

Its a system, to view animation,
Made for use with Graber's villager with its massive animation,

I made this map,
because i find it difficult to browse through his animations, since its massive quantity,
and also if someone is lazy to make another map for testing his animations,
they could use this ! :D

i have added some weather and some usefull variables, so that someone that
wanted to modify or add something or edit the constants, it will be easier for them.

if you wanted to use this for another model, just change the max index, and change the Actor model file into the model you want, Voila~! an in-game indexed animation\model Viewer ! :D

maybe some model maker will find this usefull to look at what it looks in-game or something.

-----------------------------------------------------------------------------------------


  • Use the Q and R to browse through animations,
  • Arrow keys is used to change the camera fields, there are 2 camera mode, Normal and Roll, use the E button to change camera mode
  • in Normal Camera, Use the Horizontal Arrow keys to change camera rotations,
    and the Vertical Arrow keys to change the Angle of Attack
  • in Roll Camera, Use the Horizontal Arrow keys to change camera roll,
    and the Vertical Arrow keys to change the camera height
  • Use the W and S button to change camera distance
  • Use the A key for auto-Rotation camera
  • Use the D and F key to change weather effect (you could add more on your own, currently there is one template on the map)
  • Use the Z key to toggle text On/Off
  • Use the ESC key to reset camera to its initial camera.
  • You can view models from below, since the grid tile are Alpha tile ! :D (thx to rysnt11 and Supermj)



credits is within the map, but oh well,

  • Graber (for his Villager 255 Animations)
  • Supermj (for his White Grid)
  • rysnt11 (for modifying the white grid (added Alpha)
  • razor21 a.k.a gekigengar (my other name) (Me) (for making the map)
  • Darkdeathknight (for his camera icons)



  • First Release


  • Added some Camera icons by Darkdeathknight


  • Changed String information to Multiboard Information
  • Added -jump ### to browse through animations
  • Removed string lag
  • Improved some more eye candies
  • Re-Imported model from 225 Animations into 255 Animations


  • Improved Efficiency in Cam Looper, Control Panel, and Weather Effect
  • Added Quest Guide & Command Informations
  • Reduced Filesize


  • Improved Efficiency in Cam Looper, Control Panel, and Weather Effect (Again)
  • Added more Weather Effect
  • Changes Made from Mod Suggestion


  • Improved Efficiency in Leaderboard Updating.
  • Changes Made from Mod Suggestion


Thx for downloading, and please rate or comment.
Suggestion are accepted.

Keywords:
viewer, villager, model, animation, system
Contents

Model Animation Viewer 1.4 (Map)

Reviews
15:19 Oct 18, 2012 Magtheridon96: Changes have been made, and code is now only executing required operations. You can still merge the triggers that run every 0.03 seconds into one trigger though. Approved.

Moderator

M

Moderator

15:19 Oct 18, 2012
Magtheridon96: Changes have been made, and code is now only executing required operations.
You can still merge the triggers that run every 0.03 seconds into one trigger though.

Approved.
 
Level 16
Joined
Aug 20, 2009
Messages
1,552
Theres too many triggers, most are really basic.
and its not even going to be used on other maps, (since you won't be importing these to your map), its an in-game wc3 viewer, with WE animation index viewer. (people are having trouble finding the animations they wanted on numbers)

but okay, i maybe will post triggers. *maybe*
 
Last edited:
Level 16
Joined
Aug 20, 2009
Messages
1,552
it is helpful for this
  • Custom Script: call SetUnitAnimationByIndex( unit name, number )
thing, since people are having trouble on this model
http://www.hiveworkshop.com/forums/models-530/villager-225-animations-192204/
look at all the comments, most of them are having trouble browsing through the animations xD so i made this for the lazies~!@

Does anyone know of any program that will list all the animations from 0-224 ?

I Assume thats how the model works. As it seems impossible to call a specific animation otherwise.

I have a problem:
I want a unit play the "Stand Victory - 78", but if i use the normal GUI Trigger with
  • Animation - Play Mitgefangener (Statist) 0039 <gen>'s stand victory - 78 animation
the unit plays a random order of "Stand Victory" 's animations and if i use the JASScode
  • Custom script: call SetUnitAnimationByIndex(gg_unit_h009_0039,203)
the unit only plays the normal stand animation.

Can somebody help me plz?

I agree too!

  • Custom Script: call SetUnitAnimationByIndex( unit name, number )
By the way what do you put in the "unit name" section? I don't get it.

This is a great model indeed but need to list the animations like "SERIOUSLY"!!!
I got lost trying to set my animations lol Q_Q

  • Custom script: call SetUnitAnimationByIndex(unitname,number)
Since u have "100 animations"so does that mean in the number bit you put (1-100) for the animations?

I get that but

for all other animation and stuff I have to figure it out from 1-100++

Does anyone know the numbers of the animations? Because i cannot animation Index, unless i do trail and error with all 185 animations. And i would not really want to do that, but anyway, does anyone know the numbers of the animations? or even a quick way to find out the numbers of them?

The WE unfortunately display animations in alphabetic order, but The Prophet's old model viewer should show them in chronological order.
So if you are patient enough you could write a list in notepad and add the animation number after the name.

So, that will show them in order from 0-185? Because if that does, then i don't mind Writing them down, besides i can't expect everything to be done for me xD.
 
Level 11
Joined
Sep 30, 2009
Messages
697
I find this pretty useful. I always have to make a map and make some periodic timer or something along those lines to constantly change the animations to find the index, and it just gets annoying after a while, especially for cinematics.

So I think this is a pretty good idea, and useful for us lazies. :thumbs_up:

Hmm how is decided which animation has which index? Is it actually the order in the .mdl/.mdx? Because you could just convert the Model with Magos and search for your anim when opening it with a texteditor, where it looks like this:

Code:
Version {
	FormatVersion 800,
}
Model "HeroDemonHunter" {
	NumGeosets 9,
	NumGeosetAnims 1,
	NumHelpers 22,
	NumBones 48,
	NumAttachments 9,
	NumEvents 4,
	BlendTime 150,
	MinimumExtent { -204.415, -202.222, 0.396661 },
	MaximumExtent { 199.402, 201.595, 157.116 },
	BoundsRadius 285.542,
}
Sequences 13 {
	Anim "Stand" {
		Interval { 167, 1567 },
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Stand 2" {
		Interval { 1733, 3733 },
		Rarity 2,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Stand 3" {
		Interval { 4067, 8100 },
		Rarity 3,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Stand 4" {
		Interval { 8433, 14167 },
		Rarity 4,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Stand Ready" {
		Interval { 17367, 18133 },
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Attack" {
		Interval { 18467, 19367 },
		NonLooping,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Attack 2" {
		Interval { 19700, 20600 },
		NonLooping,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Death" {
		Interval { 20933, 25033 },
		NonLooping,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Walk" {
		Interval { 26033, 26900 },
		MoveSpeed 300,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Spell Throw" {
		Interval { 27533, 28433 },
		NonLooping,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Dissipate" {
		Interval { 28867, 30867 },
		NonLooping,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Spell" {
		Interval { 34667, 35433 },
		NonLooping,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Stand Channel" {
		Interval { 36100, 37333 },
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
}
 
Level 16
Joined
Apr 4, 2011
Messages
995
Hmm how is decided which animation has which index? Is it actually the order in the .mdl/.mdx? Because you could just convert the Model with Magos and search for your anim when opening it with a texteditor, where it looks like this:

Code:
Version {
	FormatVersion 800,
}
Model "HeroDemonHunter" {
	NumGeosets 9,
	NumGeosetAnims 1,
	NumHelpers 22,
	NumBones 48,
	NumAttachments 9,
	NumEvents 4,
	BlendTime 150,
	MinimumExtent { -204.415, -202.222, 0.396661 },
	MaximumExtent { 199.402, 201.595, 157.116 },
	BoundsRadius 285.542,
}
Sequences 13 {
	Anim "Stand" {
		Interval { 167, 1567 },
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Stand 2" {
		Interval { 1733, 3733 },
		Rarity 2,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Stand 3" {
		Interval { 4067, 8100 },
		Rarity 3,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Stand 4" {
		Interval { 8433, 14167 },
		Rarity 4,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Stand Ready" {
		Interval { 17367, 18133 },
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Attack" {
		Interval { 18467, 19367 },
		NonLooping,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Attack 2" {
		Interval { 19700, 20600 },
		NonLooping,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Death" {
		Interval { 20933, 25033 },
		NonLooping,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Walk" {
		Interval { 26033, 26900 },
		MoveSpeed 300,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Spell Throw" {
		Interval { 27533, 28433 },
		NonLooping,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Dissipate" {
		Interval { 28867, 30867 },
		NonLooping,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Spell" {
		Interval { 34667, 35433 },
		NonLooping,
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
	Anim "Stand Channel" {
		Interval { 36100, 37333 },
		MinimumExtent { -204.415, -202.222, 0.396661 },
		MaximumExtent { 199.402, 201.595, 157.116 },
		BoundsRadius 285.542,
	}
}

Look

So I think this is a pretty good idea, and useful for us lazies.
 
• Try shrinking the "Camera" triggers into one, by using GetTriggerEventId(). E.g.:
  • Cam Down
    • Events
      • Player - Player 1 (Red) Presses the Down Arrow key
      • Player - Player 1 (Red) Releases the Down Arrow key
    • Conditions
    • Actions
      • Custom script: if GetTriggerEventId() == EVENT_PLAYER_ARROW_DOWN_DOWN then
      • Set Down = True
      • Custom script: else
      • Set Down = False
      • Custom script: endif
You can also shrink it even more, by placing all of the possible event keys in one trigger.

• Add a "Loop" feature, that fires with a command and stops with the same (?) one. Store the current animation number to a variable and then every X seconds, play the animation (you can use your current looping triggers to implement, with the use of a boolean).

• Add the commands in the Quests' tab, so that users are informed about them upon testing.

• If you are up to using a Weather simulation, add more effects to the list.

• It's better if you use one bloated trigger, than having two that run 30 times a second.

  • Set Line[1] = ---------- C a m e r a ----------
  • Set Line[8] = ---------- M o d e l ----------
  • Set Line[10] = (Weather Effect : + ((( + ((String(WeatherIndex)) + ) )) + WeatherName[WeatherIndex]))
You don't need these updated in the loop trigger; the first two contain static strings, while the last one should only be updated in the "Control Panel" trigger.

• Up button is supposed to get the camera's angle of attack to lower values, not higher ones. You used this effect in Down one.

• Pressing and releasing the buttons periodically doesn't instantly change the camera's values, until you hit it 6 times in a row. You had better decrease the variables by - 5, instead of the current - 1.


  • Multiboard - Hide StatisticMultiboard
Don't make a check every 0.03 seconds to hide the multiboard. Implement it in the "Control Panel" trigger instead, when the ability is cast.
 
Level 16
Joined
Aug 20, 2009
Messages
1,552
Personally i don't think that it should be that efficient, but oh well..i will update soon
And about commands on quest tab, it is there on bottom right on the control panel skills,

And most arrow key movements here are inverted, on the first cam and its 2nd cam mode,
To make some of the functions easier to use..for me at least(i play games always on invert mode.)

Btw, i don't understand the point b4 the last point..o.o

I am fixing them on the next ver ;D thx.
 
Why don't people just view their models in magos model editor? ._.

It takes like, 0.0001 seconds to start up if you have it attached to the toolbar, and it has tons of more features than this.

Gonna have to put this here again.

here is the magos model viewer, just go to window>mpq browser, open mpq and select war3 or war3x, and you can watch ALL the models and textures of wc3, their animations, their attachment points, change the properties of their materials and deform the mesh to your liking. No need for some silly map.
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
...the magos model viewer, just go to window>mpq browser, open mpq and select war3 or war3x, and you can watch ALL the models and textures of wc3, their animations, their attachment points, change the properties of their materials and deform the mesh to your liking. No need for some silly map.

How can I check animation indexes with magos model viewer?
 
Top