Marvel Mods

XML and MUA - Common Items => Knowledge Base - (not for questions) => Topic started by: thetommyboy2002 on March 10, 2007, 11:21AM

Title: Modding Rundown: Animations
Post by: thetommyboy2002 on March 10, 2007, 11:21AM
Heres where to post what you know about Animations, AKA Skeleton files, AKA Keyframes.

What I know:
So far I haven't been able to export any animations that can be used in-game as, for instance 151_cannonball.igb or 151_cannonball_4_combat.igb
What I HAVE been able to do is export animations within the mesh that, when the mesh is placed in the "mannequins" folder give working animations in the team-select menu background. This suggests to me that the basics of animation remain constant, and that I may be able to create new animation sets.
But I stll don't know how to export them from Max, nor how the note-track, etc should be setup. If these arent correctly done, no animation will ensue (which might be why mine dont work). And of course I have no access to the Max files that the WORKING animation files were derived/exported from, so I can't base mine on working animation sets..
So that leaves "looking at the animation files in a Hex editor". Since I'm Not That Bright, all this has got me so far is the names of some of the animations (ie power_1, fly_fast etc) and the fact that the bips (bones) are referenced in the animation files, which is hardly a surprise, really.

Fun factoid Number one:
you know how herostat/npcstat set up the "   characteranims = 04_yellowjacket ;" parameter, calling the animations from the 04_yellowjacket.igb file in the above case?
Well, if there IS no 04_yellowjacket.igb, OR 04_yellowjacket_4_combat.igb, the character uses a default set of animations (that look a bit like thor's animations to me). This is also true if the 04_yellowjacket.igb etc are non-functioning (ie PSP animation files, or my not-working-yet-ones).

So, anyone else got any thoughts on the subject...? 
Title: Re: Modding Rundown: Animations
Post by: Noelemahc on March 10, 2007, 12:01PM
I would expect that exporting a primitive mesh (unskinned but rigged equally to the mesh we're animating) with the animation lines inside would work as a skeleton. Then again, I'm currently more concerned with discovering the depths of "How Does IGB Work" in general rather than the details of specific animation processes...

I can also tell you that the tags needed for the menu anims are menu_action (character is chosen OR skin is swapped); menu_idle OR idle (character is selected and is idling, this is looped) and menu_goodbye (leaving the Team Selection menu).
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on March 10, 2007, 12:21PM
I'm thinking that if your theory is right(and its also pretty much the theory I'm already working to), exporting an "ordinary" mesh, ie one with skin, bones/bips and animations should also work too. And since I have/am trying this method so far without joy there must be something else I'm missing. I'll try just the bips and anims, just to rule it out. But I'm thinking it's more likely that some setting in the alchemy properties and/or exporter in Max is the stumbling block (just as it was with the hiding_segments bits of meshes, which didnt work till just the right combination of flags were set, and were named correctly)..
Since my meshes work with the existing keyframe/sleleton/animations already (whether they contain what the alchemy exporter labels a "default animation" or not) I'm guessing I'm pretty close, in some respects. It may be that the game is fussy, and a Valid animation set must contain ALL the necessary animations (mine as yet dont) before it will play
Title: Re: Modding Rundown: Animations
Post by: Noelemahc on March 10, 2007, 11:03PM
Not really - after all, XML2's NPC skeletons house two or three anims and that's it. What you HAVE to have is the idle anim and that's it. Oh, and the afakeanim tag, which may or may not be an animation title :D
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on March 11, 2007, 06:16AM
Looking through the alchemy Docs I come across references to the alchemy animation rollout, and I notice that the one in the docs differs from the one I find in Max.
Docs version on left, Max version on right.
(http://i15.photobucket.com/albums/a384/tommyboy2002/alchemyanimationrollout.jpg)

Now I'm guessing that the one I've got is a later version (see how it has more platform options, ie PC and gamecube?), and it may also be that they decided references to "use keys" were redundant. But I wish it were still in there because I understand the one in the docs more than the one i actually have to struggle with.
Now, you may notice that "animation" has become "default animation". If this is unchecked, no animations are exported with the mesh, which at the moment only affects my meshes in MUA Mannequin mode, but information is information. So my current guess is to have "default animaton" checked.
On the far right we see the "export settings", which I think is the bit to play with. If "save full igb" is unchecked you can select or unsekect the various component parts. For my "usual" meshes, I have "save full igb" checked. Possibly ony the "anims" "extract" and "save" should be checked for exporting keyframes.
What "extract" means as opposed to "save", I dunno.
So I export with only "anims" "extract" and "save" checked, and copy the results into Actors, renamed to 151_cannonball, and also 151_cannonball_4_combat (because hes who I'm working on, and he NEEDS his own animations).
Aaaand he still uses the default animations, meaning the game "sees" mine as invalid.
So now I export with only "anims" and "save" checked, and still get the default animations.
So now I export with only "anims" and "extract" checked, and still get the default animation.
Which seems to rule the out as "stand alone" parameters, though some combination of them and others may be the correct one to use.
In short: still no joy, still just blindly guessing (wrongly).
Title: Re: Modding Rundown: Animations
Post by: Noelemahc on March 11, 2007, 06:40AM
Moving along with the toss-up from the Proof-of-Concept post: for those who THINK they don't have enough menu stances to go around with.
(http://img.photobucket.com/albums/v26/ivan_k/Marvel/MUA/False.jpg) (http://img.photobucket.com/albums/v26/ivan_k/Marvel/MUA/True.jpg)
Click to see the source models (yes, I know I used MUA Nightcrawler in place of the XML2 Optic Crawler, but who cares?):

Which, you know, opens lots of miniscule mix-n-match optionses.
Like these:
(http://img.photobucket.com/albums/v26/ivan_k/Marvel/MUA/False2.jpg) (http://img.photobucket.com/albums/v26/ivan_k/Marvel/MUA/True2.jpg)
Again, click to see the sources of the animations :D

Tommy, is it even possible to assign names or tags of some sort to the anims in the export files? Mayhap that's the reason you're meeting resistance?
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on March 11, 2007, 07:04AM
Quote from: Noelemahc on March 11, 2007, 06:40AM
Tommy, is it even possible to assign names or tags of some sort to the anims in the export files? Mayhap that's the reason you're meeting resistance?

Yes.
The way it works is you have a "note track" within max which defines a start, end and a label, and this information forms part of any keyframe/skeleton/animation file. These enable a game to know where the "run" animation starts and ends and to play it rather than the "fly" animation.
What I've done is to take a set of keyframes I made for Freedom force and to rename the likes of "melee_1" to Attack_light1", "melee_6" to "power1" etc etc, trying to match the animations approximately to the right labels for MUA.
The next trick is to find the correct settings to export the animations in a format the game will recognize. I know from Freedom Force meshing that the wrong box ticked in the export dialogue will lead to non-working animations, so thats what I'm guessing is wrong.
I'm assuming that just as the geometry and bipeds remain constant between the two games, the rules for animation will too, but this assumption may be wrong.

(Good work on the menu idle stuff, BTW). 
Title: Re: Modding Rundown: Animations
Post by: BliZZ on March 12, 2007, 05:49PM
tommy, can you run down all the basic anims that get used? I've figured out why I can't get the grab-smashes to work: the anims are built into the 4_combat. (The current plan of action is to name the XML2 skelie XX_char and the MUA char whose grab-smsh I want _4_combat, after busting it open and renaming/removing the tags for all anims BUT the grab-smash :P)

EDIT: Nevermind, they are all lumped together. Yay! I OFFICIALLY gave Juggs Thing's Grab-Smash! Which means (barring any glitches others discover in testing), I just gotta add passives to his costumes, wait for Noel's icons, and he is the first FULLY done char! I'm gonna go ahead and go back to add a Grab-Smash to Cyclops, so we have 2 done chars :P
Title: Re: Modding Rundown: Animations
Post by: DJay Saint on March 21, 2007, 03:58PM
EDIT:  Meh, phukit.
Title: Re: Modding Rundown: Animations
Post by: Teancum on April 11, 2007, 05:59PM
So are there any npc characters that have menu anims?
Title: Re: Modding Rundown: Animations
Post by: Noelemahc on April 11, 2007, 08:44PM
Well, ANY npc anim can be used as a menu_idle by just putting it in the menu skellie slot, some of them are cool enough. But only XML1 Havok and XML2 Dazzler contain an actual full set of menu anims (as in menu_idle, menu_action and menu_goodbye).
Title: Re: Modding Rundown: Animations
Post by: Teancum on May 01, 2007, 07:38PM
Just tried pasting 19_havok.igb as the menu anims for Angel (_nc).  Maybe I pasted it wrong, but I didn't see anything unique.  He just stood there as though he had no special anims at all.  Has anyone gotten havok's menu anims to work?
Title: Re: Modding Rundown: Animations
Post by: cvc on May 01, 2007, 07:45PM
I know its a small file like 18kb's thats why I haven't used it,may only have those menu animations.
Title: Re: Modding Rundown: Animations
Post by: Teancum on May 01, 2007, 07:55PM
Yeah, I'm a doofus.  I named it 70_angek instead of 70_angel. 

DESCRIPTION: (19_havok.igb)
menu_action -- puts his left hand in the air, much like Cyclops does
menu_idle -- stands at a 45 degree angle from the camera, with head facing it.  Arms move in and out slightly (no other animation on the body)
menu_goodbye -- holds left hand to chest with left elbow sticking out to his left and nods his head

So not that exciting, but it is another menu animation.  With that plus Rogue and Gambit's XML1/XML2 changes there's plenty to go around (if you want the _action and _goodbye anims)
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 01, 2007, 07:07AM
Below are listed all the animations I know of so far:

double_jump_start
jump_land

attack_jumpslamloop
attack_jumpslam
attack_jumpslamland

attack_light1
attack_light2
attack_light3


attack_stun1
attack_stun2

attack_trip1

attack_heavy1

attack_knockback1
attack_knockback2


attack_popup
attack_popup1

attack_ground1
attack_ground2
ground_attack1
ground_attack2

grab_fallback


blocking
pain_blocking

lunge_loop
lunge_land

afakeanim


power_1
power_1_loop
power_1_end
power_2_loop
power_2_end
power_3
power_4
power_5
power_6
power_7

power_10
power_11
power_12   

fly_idle
fly_slow
fly_fast



menu_action (character is chosen OR skin is swapped)
menu_idle
idle (character is selected and is idling, this is looped)
menu_goodbye (leaving the Team Selection menu).
walk
run


If anyone knows of any more, let me know (the quest to export custom animations continues)
Title: Re: Modding Rundown: Animations
Post by: BliZZ on September 01, 2007, 07:43AM
All animations names that the game will recognize (from shared_anims in the data folder):

XMLB ANIMTABLE {
   anims {
   ea_advance = step_forward ;
   ea_attack_ground1 = ground_attack1 ;
   ea_attack_ground2 = ground_attack2 ;
   ea_attack_heavy1 = attack_heavy1 ;
   ea_attack_heavy2 = attack_heavy2 ;
   ea_attack_jump1 = jump_attack1 ;
   ea_attack_jump2 = jump_attack2 ;
   ea_attack_jump3 = jump_attack_finisher ;
   ea_attack_jumpslam = jump_smash_loop ;
   ea_attack_jumpslamland = jump_smash ;
   ea_attack_jumpslamloop = jump_smash_hold ;
   ea_attack_knockback = attack_knockback ;
   ea_attack_knockback1 = attack_knockback1 ;
   ea_attack_knockback2 = attack_knockback2 ;
   ea_attack_light1 = attack_light1 ;
   ea_attack_light2 = attack_light2 ;
   ea_attack_light3 = attack_light3 ;
   ea_attack_popup = attack_popup1 ;
   ea_attack_popup2 = attack_popup2 ;
   ea_attack_stun1 = attack_stun1 ;
   ea_attack_stun2 = attack_stun2 ;
   ea_attack_stun3 = attack_stun3 ;
   ea_attack_trip1 = attack_trip1 ;
   ea_attack_trip2 = attack_trip2 ;
   ea_block = block ;
   ea_blocking = blocking ;
   ea_bored_1_1 = bored_1_1 ;
   ea_bored_1_2 = bored_1_2 ;
   ea_bored_1_3 = bored_1_3 ;
   ea_bored_1_4 = bored_1_4 ;
   ea_bored_loop_1 = bored_loop_1 ;
   ea_cling_wall_backflip = clingwall_backflip ;
   ea_crouch_end = crouch_end ;
   ea_crouch_idle = crouch_idle ;
   ea_crouch_start = crouch_start ;
   ea_double_jump_start = jumpdouble_start ;
   ea_evade_backward = evade_backwards ;
   ea_evade_forward = evade_forwardroll ;
   ea_evade_left = evade_left ;
   ea_evade_right = evade_right ;
   ea_fall_feet_first = fall_FeetFirst ;
   ea_fly_fast = fly_fast ;
   ea_fly_idle = fly_idle ;
   ea_fly_slow = fly_slow ;
   ea_flying_attack1 = flying_attack1 ;
   ea_flying_attack2 = flying_attack2 ;
   ea_getup_on_back1 = flyingback_getup ;
   ea_getup_on_back1_atk = getup_attack_faceup ;
   ea_getup_on_front1 = flyingforward_getup ;
   ea_getup_on_front1_atk = getup_attack_facedown ;
   ea_grab_attack = grab_attack ;
   ea_grab_attack_finisher = grab_attack_finisher ;
   ea_grab_attack_v = grabbed_attack ;
   ea_grab_break = grab_break ;
   ea_grab_break_v = grabbed_break ;
   ea_grab_fallback = grab_fallback ;
   ea_grab_loop = grab_loop ;
   ea_grab_loop_v = grabbed_loop ;
   ea_grab_smash = grab_smash ;
   ea_grab_smash_v = grabbed_smash ;
   ea_grab_start = grab_attempt ;
   ea_grab_start_v = grabbed_attempt ;
   ea_grab_throw_ally = throw_ally_hero ;
   ea_grab_throw_ally_v = throw_ally_ally ;
   ea_grab_throw_back = grab_throw_back ;
   ea_grab_throw_back_v = grabbed_throw_back ;
   ea_grab_throw_fwd = grab_throw_forward ;
   ea_grab_throw_fwd_v = grabbed_throw_forward ;
   ea_grab_throw_left = grab_throw_left ;
   ea_grab_throw_left_v = grabbed_throw_left ;
   ea_grab_throw_right = grab_throw_right ;
   ea_grab_throw_right_v = grabbed_throw_right ;
   ea_hit_wall_land_on_back = slamfront_slump ;
   ea_hit_wall_land_on_front = slamback_slump ;
   ea_idle1 = idle ;
   ea_idle_to_bored = idle_to_bored ;
   ea_jump_atk_land = jump_attack_land ;
   ea_jump_land = jump_land ;
   ea_jump_loop = jump_loop ;
   ea_jump_smash_land = jump_smash_land ;
   ea_jump_start = jump_start ;
   ea_knocked_back_start = flyingback_loop ;
   ea_knocked_fwd_start = flyingforward_loop ;
   ea_ko_head1 = death_gen ;
   ea_ko_legs1 = NO_ANIM ;
   ea_ko_torso1 = NO_ANIM ;
   ea_land_on_back_loop = flyingback_landloop ;
   ea_land_on_front_getup = slamback_getup ;
   ea_land_on_front_loop = flyingfoward_landloop ;
   ea_levelup = levelup ;
   ea_lunge = lunge_loop ;
   ea_lunge_land = lunge_land ;
   ea_lunge_offwall = lunge_offwall ;
   ea_menu_action = menu_action ;
   ea_menu_goodbye = menu_goodbye ;
   ea_menu_idle = menu_idle ;
   ea_pain_air_feet_first = pain_airFeetfirst ;
   ea_pain_air_head_first = pain_airHeadfirst ;
   ea_pain_airspin = pain_InAirSpin ;
   ea_pain_back = pain_rear ;
   ea_pain_blocking = pain_blocking ;
   ea_pain_electric = pain_electric ;
   ea_pain_ground_back = groundpain_back ;
   ea_pain_ground_front = groundpain_forward ;
   ea_pain_high1 = pain_high ;
   ea_pain_low1 = pain_low ;
   ea_pain_twitch_left = twitch_left ;
   ea_pain_twitch_right = twitch_right ;
   ea_pickup_object_idle = pickup_object_idle ;
   ea_pickup_object_lift = pickup_object_lift ;
   ea_pickup_object_start = pickup_object_start ;
   ea_pickup_object_throw = pickup_object_throw ;
   ea_pickup_object_walk = pickup_object_walk ;
   ea_popup_break = popup_break ;
   ea_popup_land = popup_bounce ;
   ea_popup_loop = popup_loop ;
   ea_popup_start = popup ;
   ea_power1 = power_1 ;
   ea_power10 = power_10 ;
   ea_power11 = power_11 ;
   ea_power12 = power_12 ;
   ea_power13 = power_13 ;
   ea_power14 = power_14 ;
   ea_power15 = power_15 ;
   ea_power16 = power_16 ;
   ea_power17 = power_17 ;
   ea_power18 = power_18 ;
   ea_power19 = power_19 ;
   ea_power1_end = power_1_end ;
   ea_power1_loop = power_1_loop ;
   ea_power1_start = power_1_start ;
   ea_power2 = power_2 ;
   ea_power20 = power_20 ;
   ea_power2_end = power_2_end ;
   ea_power2_loop = power_2_loop ;
   ea_power3 = power_3 ;
   ea_power3_end = power_3_end ;
   ea_power3_loop = power_3_loop ;
   ea_power4 = power_4 ;
   ea_power4_end = power_4_end ;
   ea_power4_loop = power_4_loop ;
   ea_power5 = power_5 ;
   ea_power5_end = power_5_end ;
   ea_power6 = power_6 ;
   ea_power7 = power_7 ;
   ea_power8 = power_8 ;
   ea_power8_end = power_8_end ;
   ea_power8_loop = power_8_loop ;
   ea_power8_start = power_8_start ;
   ea_power9 = power_9 ;
   ea_psy_lift1 = psylift ;
   ea_psy_loop = telekinesis_victim ;
   ea_push_heavy_object = push_heavy_object ;
   ea_push_heavy_object_fail = push_heavy_object_fail ;
   ea_resist_knockback = resist_knockback ;
   ea_resist_popup = resist_popup ;
   ea_resist_stun = resist_stun ;
   ea_resist_trip = resist_trip ;
   ea_resurrect_v = resurrect_v ;
   ea_retreat = step_backward ;
   ea_run1 = run ;
   ea_spin_left = spin_left ;
   ea_spin_right = spin_right ;
   ea_sprint1 = run_sprint ;
   ea_strafe_left = step_left ;
   ea_strafe_right = step_right ;
   ea_stuck = sticky_floor ;
   ea_stun = stun ;
   ea_talking_01 = talking_01 ;
   ea_talking_02 = talking_02 ;
   ea_talking_03 = talking_03 ;
   ea_talking_04 = talking_04 ;
   ea_tele_buddy_grab = telebuddy_grab ;
   ea_tele_buddy_land = telebuddy_land ;
   ea_tele_buddy_loop = telebuddy_loop ;
   ea_thrown_back_hit_wall = slamback_loop ;
   ea_thrown_back_land = flyingback_land ;
   ea_thrown_back_loop = flyingback_loop ;
   ea_thrown_fwd_hit_wall = slamfront_loop ;
   ea_thrown_fwd_land = flyingforward_land ;
   ea_thrown_fwd_loop = flyingforward_loop ;
   ea_thrown_upside_down = grabbed_throw ;
   ea_thrown_upside_down_land = grabbed_throwland ;
   ea_thrown_upside_down_loop = grabbed_throwloop ;
   ea_tpose = tpose ;
   ea_trip = trip ;
   ea_upside_down_hit_wall = grabbed_throwslam ;
   ea_upside_down_slump = grabbed_throwslump ;
   ea_upside_down_slump_land = grabbed_throwslumpland ;
   ea_use_button = use_button ;
   ea_victim1 = victim1 ;
   ea_victim10 = victim10 ;
   ea_victim11 = victim11 ;
   ea_victim12 = victim12 ;
   ea_victim2 = victim2 ;
   ea_victim3 = victim3 ;
   ea_victim4 = victim4 ;
   ea_victim5 = victim5 ;
   ea_victim6 = victim6 ;
   ea_victim7 = victim7 ;
   ea_victim8 = victim8 ;
   ea_victim9 = victim9 ;
   ea_walk1 = walk ;
   ea_zone1 = zone1 ;
   ea_zone10 = zone10 ;
   ea_zone11 = zone11 ;
   ea_zone12 = zone12 ;
   ea_zone13 = zone13 ;
   ea_zone14 = zone14 ;
   ea_zone15 = zone15 ;
   ea_zone16 = zone16 ;
   ea_zone17 = zone17 ;
   ea_zone18 = zone18 ;
   ea_zone19 = zone19 ;
   ea_zone2 = zone2 ;
   ea_zone20 = zone20 ;
   ea_zone21 = zone21 ;
   ea_zone22 = zone22 ;
   ea_zone23 = zone23 ;
   ea_zone24 = zone24 ;
   ea_zone25 = zone25 ;
   ea_zone3 = zone3 ;
   ea_zone4 = zone4 ;
   ea_zone5 = zone5 ;
   ea_zone6 = zone6 ;
   ea_zone7 = zone7 ;
   ea_zone8 = zone8 ;
   ea_zone9 = zone9 ;
   }

}



I would assume adding more would mean the game would recognize them.....
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 01, 2007, 08:27AM
Quote from: BliZZ on September 01, 2007, 07:43AM

I would assume adding more would mean the game would recognize them.....

Thanks, very useful.
But given that many of these are referenced by the exe, I dont know that we can add more...
Title: Re: Modding Rundown: Animations
Post by: nodoubt_jr on September 01, 2007, 11:38AM
i dont think adding will work, at least it didnt for XML2. MUA uses a lot more animations than XML2, so for my conversions i tried adding all the extra ones that MUA uses, but the game still didnt recognize.  So changing and adding to the file didnt work for me.
Title: Re: Modding Rundown: Animations
Post by: Teancum on July 30, 2008, 10:49AM
I did some comparison research.  I loaded up Black Panther's animations from the PS2 and PSP side by side.  I was surprised to find that there were really large chunks of the data that are exactly identical.  We're talking 500-2000 bytes, sometimes more.  There's some sort of table or something that appears between each of these chunks.  In reality I think it's just the different way things are indexed between versions.  But it got me curious to see whether I can hex-replace some animations :D
Title: Re: Modding Rundown: Animations
Post by: Teancum on July 31, 2008, 05:34AM
More findings.  There is a large identical chunk of data that exists in every skeleton, whether last-gen or next-gen.  In most if not all cases it appears multiple times.  From what I can gather it seems to be the biped skeleton, and appears before each animation.  Also, I can confirm that the data I mentioned before is the animation data.  I can fill that area with zeros and have the character disappear entirely during that animation.  Long story short, the raw animation data is the same no matter what game the animations come from.  The issue now are all of the tables that reference how the data is stored.  That is the big difference between versions.  It's also the hardest thing to decipher.  But if by some miracle it gets figured out then it should be possible to hex-replace animations from PSP/360 characters into older PS2/Xbox/XML2 PC skeletons. 

I've already got an Iron Man XML2 test subject for Hawkeye's animations.  (15_ironman is the same number of characters as XX_hawkeye, plus he's got power, menu and other animations)  So far all tests either result in a crash (big surprise) or the character disappearing for that animation.  BUT, it's also helping me to figure out where each individual animation is, which I can then use to try to figure out the tables.

Lotsa work...  Probably not worth it, but if we could get all next-gen skeletons converted down then XML2/MUA (last gen) modders would get to use them.  No cheap hacks with 'sortof close' animations.  They'd be the real deal.  'Course if I have to hex-replace each one I can tell you right now I wouldn't be doing Dr Doom, and likely wouldn't do Magneto, Sabretooth or Nightcrawler, as there's not really any new power animations that are must-haves.  My priorities would be Hawkeye, Captain Marvel, Ronin and Cyclops (cause Cyke's got some really cool power-hold animations).
Title: Re: Modding Rundown: Animations
Post by: EpicNinja on February 10, 2009, 01:02PM
After reading this post, I'm really up to the challenge of making a new character for MUAPC. The animations are what interest me the most. But from reading most people are trying to just get animations from other XML and MUA games. So is it at all possible to import from 3DMax?
Title: Re: Modding Rundown: Animations
Post by: Teancum on February 10, 2009, 02:36PM
Nobody's ever succeeded.  That's not to say nobody can, but we're at a loss as to how to do so.
Title: Re: Modding Rundown: Animations
Post by: EpicNinja on February 10, 2009, 09:01PM
Well there goes my ideas for attacks. I was wanting to redo Spider-Man. He tends to lack the style I was hoping for, when I first got a hold of this game. Maybe I can just search through animations and find something useful.... Thanks for the reply BTW
Title: Re: Modding Rundown: Animations
Post by: Teancum on February 10, 2009, 09:11PM
No problem.  I know Tommyboy2002 has tried exporting animations from 3DSMax, so if you know much about 3DSMax animating you might talk to him.  I'm pretty sure it falls under a not for the feint of heart category, though.
Title: Re: Modding Rundown: Animations
Post by: whiteking on March 09, 2009, 03:43AM
Hi!
I was reading this topic and I want to ask something, for example, I want to add Jean Grey animations on Emma Frost ones (ex. the psionic boom animation) How can I do that?, and what program do you use to "decompile" because everyone are talking about an hex editor, but which hex editor, I search in google and appear a lot of editors so I don't know which is the goog one.
Hope you can help me :)
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 20, 2009, 04:25PM
*blows dust off thread*
Don't get too excited, I haven't done anything good.
But, playing around again with trying to export animations it occurred to me that we know the following:
1. Custom made meshes work as Mannequins in the team select screen, and play whatever animations they are exported with there. Suggests we can export anims.
2. In game and in menu, the models use "xx_name.igb" as the animation package. A look in a hex editor reveals "menu_idle", "menu_goodbye" etc visible in these type of file.
3. Original Mannequins have no "named" animation which I can see in a hex editor ("idle" or "menu" show no hits, nor do I see any other likely suspects).
4. Custom meshes show no "named" animations in a hex editor. This is probably why they dont play our custom animations, the game doesn't "know" that they are there.
5. The "xx_name_4_combat.igb" files have "named" animations revealed by hex editor.

Therefore, we (or more accurately I, since nobody else seems to be pursuing this) need to figure out a way to export some sort of labeling which the game recognizes, to make custom versions of the animation files most here refer to as "skeletons". A NoteTrack is the way I'm accustomed to doing this in other games in other engines, but MUA/alchemy seems to resist all my attempts to export a labeling/notetrack system.
I've tried under the root node, and attached to the igActor, I guess I have to play with it some more tomorrow.
Oh, and I tried a bunch of different export settings trying to export a custom set, the most exciting thing I got was an Alchemy 4 error message where I could exit debug or ignore. Exit exits, debug just ctds the game and ignore just carries on as if nothing happened, sans any new animations, of course.

Anyway, thats what I've done today...
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 20, 2009, 11:11PM
Interesting. I'll see what I can found when working in max. Always eager to try and find new stuff^^ I believe BR is also interested in finding it out.

Do you think TrackView might come in handy ?
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 21, 2009, 02:34AM
Quote from: Mr. Law^^ on October 20, 2009, 11:11PM
Interesting. I'll see what I can found when working in max. Always eager to try and find new stuff^^ I believe BR is also interested in finding it out.

Do you think TrackView might come in handy ?

If you mean the "Track View" accessible under "Graph Editors" in Max, yep, it's what I use to make and edit NoteTracks. The question is, is that how Raven did it? And if it is, which of the many combinations of options on export should we use to export a working animation?
If you mean some other Track View, tell me thereof. The one in Max is the only one I really know about.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 21, 2009, 03:54AM
Huzzah!
After only 2 years, I've managed to export a custom animation which works!
What you see below is my Swordsman mesh using a custom made "menu_idle" animation I exported:
(http://i15.photobucket.com/albums/a384/tommyboy2002/menu_idle.jpg)

Now, before we pop open the champagne and make statues of me, I should add that this is only one animation, and it doesn't even select the part of the set i actually called "menu_idle", but rather runs through the whole set.
Heres how I did it:
(http://i15.photobucket.com/albums/a384/tommyboy2002/menu_idle_export_settings.jpg)
By exporting those settings I got a file called "menu_idleDB.igb". I copied this to "actors" and renamed it to "17_swordsman.igb", and once Swordy is selected, he runs through the animations within the file.
The important bit is that there is now an entry visible within "17_swordsman" which says "menu_idle" (although all the other NoteTrack labels within the mesh still dont appear, so obviously that is still wrong).
This is only a tentative first step towards full custom made animation sets, but it IS a first step, so I'm pretty pleased, despite its limitations.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 21, 2009, 04:30AM
And heres proof of concept:
http://www.mediafire.com/?sharekey=6ffbe4e3b0e3437fd8f14848abf485dde04e75f6e8ebb871
That should be a file called "17_swordsman.igb". Rename it to whatever character you want, ie "05_thing.igb" etc and put it into "actors" (backup the original first, of course).
Now, when that character is selected, they should have a menu_idle which is running (turned to the left).
More to come as I discover it.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 21, 2009, 05:05AM
Yep, if I select just the animation I want in my notetrack (I use a tool I got with the Freedom force exportters called "character_tool", its a Max script which lets you select and display individual animations), ie "menu_idle" or "menu_goodbye" or even "attack_light1", then rename the "animation" in the "actor" part of the "alchemy dialog" in Max, I can export an individual animation which if named correctly (ie "17_swordsman.igb" for "menu_goodbye", or "17_swordsman_4_combat.igb" for "attack_light1") and placed in "actors", will play that animation at the time the relevant button/key is hit.
Still only one animation, but I now have Swordsman saluting as you start the game, and with a custom light attack animation in the game.
Which is very cool.
Next up, how the hell do I string them together?
Title: Re: Modding Rundown: Animations
Post by: Teancum on October 21, 2009, 05:59AM
Okay, that's beyond cool.  Kudos!  I'll have to see if that runs in MUAXbox
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 21, 2009, 06:01AM
Tommy you are the man! And another Great Comeback by one of the modders :D

I'll use the method and see if I can discover anything. 100+!

EDIT: Tommy, try using multiple actors and bind each animation to one. I had more than 2 actors before and could exported it (custom mesh though).
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 21, 2009, 06:46AM
Quote from: Mr. Law^^ on October 21, 2009, 06:01AM
EDIT: Tommy, try using multiple actors and bind each animation to one. I had more than 2 actors before and could exported it (custom mesh though).

Every time I try to add another Actor and export, Max crashes. But the idea may have some merit. I'll try playing some more.
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 21, 2009, 09:05AM
If it doesn't work, I guess adding notekeys at each new animation must be the way to go. So if animation 1 ends at frame 12, the new one starts at 13 and that's where the note has to be placed. Am I correct? (asking as a learner, I don't have any other exp in max but I'm eager to learn all of it XD )
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 21, 2009, 09:45AM
Quote from: Mr. Law^^ on October 21, 2009, 09:05AM
If it doesn't work, I guess adding notekeys at each new animation must be the way to go. So if animation 1 ends at frame 12, the new one starts at 13 and that's where the note has to be placed. Am I correct? (asking as a learner, I don't have any other exp in max but I'm eager to learn all of it XD )

I have now gotten 2 igActors in the scene to export successfully, but it still plays only one of the animations, so I'm not quite grasping how to associate a set of keyframes with a particular igActor, and then a different set with another igActor and so on.
And yes, you understand correctly:
(http://i15.photobucket.com/albums/a384/tommyboy2002/note_track.jpg)
here you see two notetracks, the lower one I'm trying other naming conventions in the hope that the alchemy exporter accepts it (it doesnt), the upper one is in the format Freedom Force uses.
How you name each animation and where you put the notetrack can be critical to it working or not, so thats one ofthe variables I'm playing with. But it may be that MUA doesnt use notetracks at all, so it may be a waste of time.
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 21, 2009, 09:55AM
Which animation does it play? The first one?

Perhaps renaming the igActors might help. For example naming it after the animation you want. The actors are the keys to the animations anyway. Perhaps the game can recognize the animations when the actors are renamed after them. So igActor01 as menu_idle, actor02 as menu_goodbye etc.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 21, 2009, 10:51AM
Hmmm...unless I'm missing something (which is always possible), you can only create one igActor from each part in a scene. Doing more was what was making me crash before.So my actors are created one from the main mesh, and one from the handle. Which may be why only one anim is playing (the second one, I think).
I did try renaming my two Actors to the animation names, but it still didn't work right.
I guess I could clone the main body for each new actor, I'll try that.
At the moment I've stripped out everything except menu_idle and menu_goodbye to simplify things.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 21, 2009, 11:59AM
Meh.
Heres what I have:
A mesh with biped, and two animations, menu_idle and menu_goodbye.
I clone the mesh itself and then make an igActor from each iteration of the mesh, one during each animation (in the vague hope that by association the actors will "know" to be paired with that animation. Talk about clutching at straws..)
I name each igActor after the animation it was created with/for.
But....on export I get a message about joint graphs, untill i link the handle node to one or other of the two actors.
If i link it to menu_idle, during the appropriate time, it plays through both anims.
But if I link it to menu_goodbye, neither seems to play.
So many variables, so little time...
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 21, 2009, 12:07PM
Did you clone the mesh when it was skinned already? If so, I had problems with that before (sandman mod) so I had to clone the mesh, collapse to skin so it's the basic mesh again, and rerig it.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 21, 2009, 12:14PM
Quote from: Mr. Law^^ on October 21, 2009, 12:07PM
Did you clone the mesh when it was skinned already? If so, I had problems with that before (sandman mod) so I had to clone the mesh, collapse to skin so it's the basic mesh again, and rerig it.
because I'm not actually exporting geometry, the mesh(es) are physiqued not skin-ed. Thinking on it, its probably why the handle decides what plays, as bip01 is linked to the handle, and it's the biped not the mesh which is animated. So linking the handle/biped to one actor rather than another is why only one seems to work. But since you cant link the handle/biped to more than one actor (I think) that will make this difficult.
I'm just reading through all the max scripts installed with the artist pack in the hope of a better understanding.
Title: Re: Modding Rundown: Animations
Post by: Teancum on October 21, 2009, 01:45PM
Just FYI these anims crash XML2, so no dice there. :(
Title: Re: Modding Rundown: Animations
Post by: DJay Saint on October 21, 2009, 01:49PM
I'm sure the animations work in the same way exporting normal Biped animations work, except that it's exported in a particular way with Alchemy.  However, the same rules and creation techniques still apply.  This was something I was working on but haven't had time to do because of work.  So yeah, someone else was also working on animations, I just haven't been able to make quick progress because I get so little time to do anything these days.  However, I have a few gems of discovery to share once I get time to present them.
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 21, 2009, 02:05PM
I get the feeling the notes won't help at all. What you define in the actor is what is being exported.

Animations are bind to the actorskeleton. In this case, Bip01. We would be able to create a second skeleton for more-armed characters (yay for octavius) but that's just one new animation and that's it. We're totally overlooking something here.

EDIT: I think fiddling around with this in Maxscript might help:

Quote-----------------------------------------------------------------
   --  Constant local variables
   -----------------------------------------------------------------
   local ACTOR_ID = "igActor"
   local ACTOR_ANIMATION_NAME = "actorAnimation"

actorAnimation is the animation tommy was able to export. What if we add more? For example ACTOR_ANIMATION_NAME1 = "actorAnimation1"..
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 22, 2009, 05:33AM
Tommy, I think I might have found something. I think the export options are fine. When you export, you get a xxxDB.igb file which you found out. That said, here's my theory:

Since it's a database, we might be able to use it to combine it with new animations. There's an option in the exporter which says: "External Animations Path". It's there to use external databases located in the folder you specify. So if there are multiple DB's in there, those might be combined with the current one when exported, creating a new file.

E-Fockin-DIT: I think I figured it out! Almost, I think.

I exported one Database file called 161_greengoblin.igb which also exported menu_idleDB.igb as the database file.
Next up, I selected igActor01.igb, opened up it's properties and clicked on User Defined. Then I added this line after researching the DB file:

igAnimationDatabase = menu_idleDB.

Above the line are these lines:

igActor = true
actorAnimation = menu_idle <-- I changed this to menu_goodbye.

I unchecked the option under "Export Settings" called "Extract Anims" but I kept "Save Anims" checked. Then, I exported it.  I checked it out with a hexeditor and then in-game and voila. Both menu animsDB are in there.

EDIT: didn't really work. The animation was continuesly playing. Which makes me think about the animnums used in powerstyles. They are called ea_xxxxxx. Why? And does ea stand for External Animation? If so, are those the values that need to be put in the Notes?
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 22, 2009, 01:40PM
Sorry, been running chkdsk on a bad hard disk all day, when I wasn't trying to get our "broadband" to actually BE broadband, so I haven't had much time to play today.
But I think that you may be on the right lines.
Interestingly I set the External Animations path up to a subdir called "anims" under where I've been exporting to, and now both my animations "associated" with Actors are getting exported into that dir (albeit one is suspiciously small). Maybe we need to export separate anims into that dir to build up a library, then somehow get the exporter to load them all into one larger animation/skeleton file.
I'll try playing with the naming of the note tracks a bit, but it strikes me that if you look at a "real" original animation file ie 05_thing.igb, you see the names as "menu_idle" etc, NOT as "ea_menu_idle", so I'm thinking that the ea is not set up in the note track in max, but is a code the game uses to recognize the external Animations within the "skeleton" files. But this is guess work on my part.
I have an hour or two to play now so I'll see what i can get done.
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 22, 2009, 01:49PM
Well I've found a tut somewhere (but my history is cleared by tuneup util.) which says how to create multiple animations by adding every part the biped into a group. Actually creating a group of the biped (including Bip0x Footsteps). It said to give the group the name of the animation. I remember how the tut went though:

- Select Bip01
- Put it in Figure mode
- Select every biped (including footsteps)
- Click on Group > Group. Give it the name of the animation.
- Click on Group > Open
- Select Bip01 and turn Figure Mode off.
- Animate all you want. After you're done, click on Group > Close. This causes the square around the biped to disappear and making the group visible as 1 "object" instead of separate bipeds.
- For multiple animations, create a new biped and rename it to Bip01 (the previous one is now in a group and unselectable) and repeat the above steps.

If you added Bip01 in the igActor then it'll be renamed to the name of the animation, for example menu_idle. However, I was able to create 2 groups. When I disabled footsteps of the second set of bipeds, max crashed. Also when I cloned the bip01 (the second one, which is also a method to create a new skelly but with used animations), max crashed. So that's why I said to create a new set of bipeds, I did not try that before.

EDIT: Created a new scene. Was able to create 4 bips atm. But an idea just jumped in my head: Alchemy Animation modifier, which controls the looping of animations. I think it needs to be applied on the groups, when created to prevent looping on animations you don't want it to have.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 22, 2009, 01:59PM
Interesting.
I'd see first if you can export one working animation via the group method if I were you, then creating multiple bipeds is not a problem, I've done it before. If you need animations for the new ones, just save your animation set as a .bip file (select bip01 go to motion>general>save) then load them up for each new biped.
I'll keep trying the build a library of anims and hope to import it somehow method.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 22, 2009, 02:22PM
RE:But an idea just jumped in my head: Alchemy Animation modifier, which controls the looping of animations. I think it needs to be applied on the groups, when created to prevent looping on animations you don't want it to have.

Definitely. I used its settings when exporting the menu_anims, idle loops, goodbye doesnt etc.
So far I'm not having any luck with my animnameDB library. I've made one with 8 or so in, but cannot as yet pursuade the exporter to put them together.
So maybe you are on the right track with the multi biped/group/anim route.
But I will say this: I've a little experience with making meshes and animations for a few games and whilst its not unknown to have separate files for animations, it is kind of weird to have to build a new biped for every single anim. Think about it: the standard set in a 4_combat file is about 40-100 or so anims. Thats a lot of bipeds, imo. It might be how its done, but its weird if it is, and really wasteful of resources, time etc.
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 22, 2009, 02:31PM
I'm going to try it out now. I made menu_action and idle so far. I checked the exported DB file.. It has both in it. I'll edit my results here.

EDIT: Getting close. Groups is the way to go (I think). Putting the modifiers on those groups helps: I defined action as the first actorAnimation in the igActor. Action doesn't loop, so it has to be set to "Clamp". I modified the intervals aswell. The animation worked when I chose a character and left the char menu to the battlezone. However, when I went to the hero menu, the animation was played again (just once).

This may sound weird but, can groups be put together in a group? So those groups become subgroups? If so, that might be the answer, because you have to set the actorAnimation in the igActor. Which has to have the name of the group. If the main group is defined, all animations HAVE to load, because they are subgroups.

EDIT2: yes it's possible, just tried it out. However, no animation was played in-game. I wonder what the main group's name must be in order to access all other animations.


EDIT3: I think I got it. Period. It's actually a mixture of my previous theory on using multiple igActors and groups. To sum it up in one sentence:

Create a new biped for every animation and put it in a group and THEN bind it to it's own igActor.

Okay, one sentence can not describe the method. :P Because you still need to add this line to each igActor's properties:

actorAnimation = <Name of the animation>

Next, uncheck Extract Anims in the exporter. It'll create one big file (if you have 2 anims of 14 frames each, it'll create a 120kb file if I'm correct). It won't create a DB file, so it's one file to go. Try it out in-game.

As a proof of concept, here's my anim file: http://www.mediafire.com/?yzkzizyz2dn

You'll notice the character getting up. That's menu action. It only happens when the character or skin is selected.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 22, 2009, 04:14PM
Good work.
I'm a few beers past trying it out tonight, and still sort of wish it were a bit easier than having 40-odd bipeds in one file, but if it works, it works.
Work allowing, I'll check it out tomorrow, or at the weekend.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 23, 2009, 02:58AM
OK, I made three bipeds, did the group thing for each, created an actor for each with an animation name in each actor (menu_idle, menu_action and menu_goodbye. Each actor was created when the appropriate action was palying, as we have done with the working "single" animation exports).
But it's not working correctly. The menu idle sort of plays, but doesnt actually play the animation, just goes into the pose. action and goodbye dont seem to play at all.
Maybe I've missed something. I'll check again.
I still think we should only have one biped, and possibly only the one actor which accesses a database, tracklist or somesuch that all the animations are in. Of course, I've still little or no idea how to get there, but thats what I'd expect to see.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 23, 2009, 03:26AM
D'oh! had the animations unchecked in the actor dialog.
Now I get only the idle playing and it loops through every animation. No sign that action or goodbye are working. Plus, all the animations are 3 ft lower than they should be, and the right arm is messed up (that was the one I animated most, having made a custom set for swordsman where he waves his sword about).
Am I right in thinking that with this multi-biped-group method you are still not seeing more than one animation work in-game (despite it sort of looking like they are there in a hex editor)? Because thats what I'm seeing, with your file and my own.

Cue more playing around for me...
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 23, 2009, 03:55AM
You're right about it. Did you use frame 0 for each anim? Because I'm starting to think that each anim needs to start after the other, like you normally would when you create anims with just one skeleton. If that's not the case, then I don't know. Perhaps renaming each actor to igActor01. It's like the only actor which the game recognizes as far as I know. So what if there are multiple igActor01 in the file? Hopefully sgFinalizer can provide some answers. I'm thinking of optimizing the file by combining the igActor01's into one. I think I saw an optimization set for it in the program. Meh, this is making me tired just like my schoolprojects XD

Wanna know what would be great? If we could open the IGB files with sgFinalizer, Insight viewer and what not. Especially the animations XD Looking at those with a hexeditor hurts my eyes XD

EDIT: tbh, sgFinalizer let's you know if you did the right thing. How do I know this? Well, with there being 2 actors there are 2 animDB's seperated from eachother with one animation each, which is not what we are trying to aim for. There has to be a way to add more animations in one animationdatabase in one file. Problem is, I ran out of ideas XD
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 23, 2009, 12:29PM
Okay, to continue my previous post, I'm going to experiment with the values in the igActor01 box. By now we know actorAnimation = ..  makes the animation specified active in the database. adding more lines doesn't increase the list at all. Why? I don't know. I'm pondering if it's something that has to be added in the alchemy scripts or not. Or there must be some line that has to be added in the igActor. I'm thinking of the following "values":

actorAnimationDatabase =
actorAnimationList =
igAnimationDatabase =
igAnimationList =
igAnimation =

I'm not sure about the latter one, because actorAnimation is the line that defines the animation the actor has to play. Apparently, multiple actors is not the way to go, otherwise it would've worked.

@ Tommy: I checked PS2 anims. They do HAVE multiple bip01's in it. Means the use of groups is good.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 24, 2009, 03:59AM
Quote from: Mr. Law^^ on October 23, 2009, 12:29PM
@ Tommy: I checked PS2 anims. They do HAVE multiple bip01's in it. Means the use of groups is good.

Not necessarily. You are seeing multiple references to bip01 (presumably in a hex editor), that might mean that the file contains multiple bip01s, or just that the one and only bip01 is referenced more than once. For instance, I just looked in one of my custom mesh files with a hex editor and found three "Bip01_Spine2" references in there. Doesn't mean that there are three bipeds in the file, (and I should know, because I made the mesh).
You may still be right about the multiple biped/group idea, but my intuition (for whatever that is worth) suggests to me that only one biped is more likely.
But I am guessing, not stating fact. It's not as if I am making any more progress with my "single biped" school of thought (though my pc has been down for 23 of the last 24 hours, and I have to go work now too, so I have had no chance to experiment further.)...
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 24, 2009, 04:21AM
Hmm, you have a point. Theorytime:

So far the group idea could be good. Groups can be divided in 2 or more sections, thus making a tree of objects. So, I think a tree of certain objects have to be made.

Straight out facts:
- actorAnimation IS a must in any igActor01, as well as igActor = true.
- Groups have to be named after the animation.

Not certain:
- If multiple actors are necessary
- If Groups need to be placed in an igActor of their own, then add those in a group and then add those to the main igActor.
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 24, 2009, 06:12AM
Going to need help with something. I can't find anything in the maxscripts that with a line that says "if animation /actoranimation = something, create animationdatabase/DB" or something. In other words, I need to find the script which enables the animationdatabase creation in alchemy.

I modified the actor script to give me a second animation option. So now I this:

Animation: <first animation_name>
Animation2: <second animation_name>

However, it creates a database of the first animation_name. Which means:

A) modifying the script so that a database can be made of both in 1 actor
B) the animations have to become subgroups of one major database. HOW??
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 24, 2009, 10:30AM
See, my theory would be that it maybe goes something like this:
The igactor would be named 05_thing_4_combat, (or whatever the filename will be). Checking the original skeletons you can see an entry in there of the files own name, to me that sort of suggests the igActor gets named for that file. Again, its just speculation on my part.
That actor actually is linked to ALL the animations in the set, but a NoteTrack (or some other method) lets the game (and exporter) know where one anim begins and ends, and the next begins and ends etc etc.
When I have time I'll play with giving the actor a notetrack, and then trial and error-ing the myriad ways of actually annotating said notetrack (ie you could have "start_menu_idle end" or "menu_idle end" or "Start -name menu_idle end" etc etc etc. Theres a lot of potential ways to label the animations, and from what I know, incorrect notation on the notetrack means no working animation). It could take a while, to say the least.
If you keep playing with the multi-biped theory, hopefully one or other of us might crack it.
I'll also try looking at the max scripts again in case I can see what you are looking for there.

EDIT: other stuff the "genuine" game anim files have are an entry of the name, so "09_spiderman.igb" file has an entry called "09_spiderman" within it, AND "09_spiderman_skel" as well.
There are also entries for "AnimationTrackList" (also in ours), and "afakeanim" (possibly its neccessary to have some sort of "dummy" animation).   
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 24, 2009, 11:25AM
You might wanna check an exported anim with sgFinalizer in the alchemy folder to see what some stuff are. I use it to check every action, to see if anything works. AnimTrackList mentions the bipeds and unworking animations.

There's one question running around in my head: but I'll ask it later, gotta check something XD

EDIT: Tommy, you forgot the Database thing in your theory. What you specify in the "Animation:" box of the exporter is the animationdatabase. And the animations have to be linked to the database (otherwise it wouldn't be one, t'doh).

This makes me thing that there has to be just one group which functions as a database, since the group thing works. So, let's assume the multi-biped theory, and put all of the bipeds in the same group. Hard to tell them apart (color 2 win?). Or, we could assume the single-biped theory. Then your theory can come to mind. However, the hard part is: how do you apply animation settings to each animation (like making it play only once instead of looping it) with one biped and all those frames? (if it's possible, I'd like to learn^^)

So to summon 2 theories up:
Multi-biped: 1 igActor, xx_name as groupname which will function as the database, all bipeds in that group, applying animation modifiers on each biped. Using NoteTrack to add notes and label the animations.
Single-biped: 1igActor, xx_name as groupname which will function as the database, 1 biped in the group, using notetrack to label the animations.

EDIT: added the following user defined properties to my 2 anims:
igAnimationState = true

What happened is that they disappeared in the wrong tree in sgFinalizer, but not visible in the animation list. Perhaps this is step 1 of the right method? Meh, I'll try more stuff out. Adding the UDP "igAnimationDatabase = true" to the igActor won't help.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 25, 2009, 03:04AM
Quote from: Mr. Law^^ on October 24, 2009, 11:25AM
EDIT: Tommy, you forgot the Database thing in your theory. What you specify in the "Animation:" box of the exporter is the animationdatabase. And the animations have to be linked to the database (otherwise it wouldn't be one, t'doh).

No I assume (or hope, more accurately) that the animation database includes the notetrack info, so one big long animation somehow gets broken into the separate anims we want. But how to achieve this? I currently haven't a clue.
I should get some time to experiment today though...
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 25, 2009, 03:25AM
Another idea which doesnt work: creating actors from actors.
I thought if I had an actor linked to the biped, then brought up the menu_idle frames and created a new actor from the existing one, and put in menu_idle as its animation name, it might work, letting me set up a "chain" of actors, each one created during its own animation. Doesnt seem to work, though. Max crashes on export.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 25, 2009, 03:39AM
Damn.
From the alchemy artist pack's documentation on the actor editor:
"You can export characters animated with 3ds max tools into the native Alchemy animation system by using the Actor Editor. Operations such as changing skins, combining animations, and other features of the Alchemy animation system are out of the scope of this plug-in: the actor editor simply creates one igActor from the scene." (italics are mine).
I read that to mean that we might never be able to export more than one animation with it, as it stands. Again, I could be wrong, but it certainly fits with our experience so far.
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 25, 2009, 04:08AM
Perhaps the feature of combining animations was included in version 3.x and higher.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 25, 2009, 04:24AM
Quote from: Mr. Law^^ on October 25, 2009, 04:08AM
Perhaps the feature of combining animations was included in version 3.x and higher.

Maybe.
And maybe I'm just misinterpreting it. I mean, we dont actually want to combine animations into each other, we want to include more than one named animation into an export, so I'm not sure if its saying we cant do that, or if its saying that we cant combine menu_idle and menu_action into a new anim called menu_waving.
Certainly looking at this part of the alchemy docs, (on animation playback) suggests you can have many different animations:
"When a scene is exported into IGB format, the animation is interpolated between a list of keyframes. When the animation time extends past the keyframe for your scene, you can choose how to transition to the next sequence of animations by choosing one of the options listed under the Animation Type heading".
The interesting part for me is the phrase "list of keyframes". Of course it doesnt say where that list is, or how you make it, or anything useful to us, but it does suggest a sequence of separate animations controlled by a list. Well, it suggests it to me, at the moment...
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 25, 2009, 04:28AM
That's why there's something called "igAnimationList". In that list are all the animations, defined by the line:

"igAnimation: <name of anim>".

I've tried values like "igAnimationList = true" and "igAnimation = true" and "igAnimation = <name>" but no success. I didn't try "actorAnimationList = true" but I don't think it'll help.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 27, 2009, 03:48AM
OK my latest straw to clutch onto is the possibility of exporting separate animation DBs to a subdirectory and having the "main" animation file somehow reference them. I've done the easy bit and created a dir with enough animDBs for the basic skeleton file (menu_stuff, walk run and idle). Now I have to find a way to make the exporter export a file which "sets up references to the animation databases without producing an external animation file", and hope that the game somehow uses it.
If this doesnt work, the multi-biped/group theory starts to look like our best hope, as so far, all efforts to implement a NoteTrack based system have failed.
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 27, 2009, 04:25AM
Well the box "Extract Anims" have to be disabled. That's all I know that could help with the NoteTrack theory. I haven't been researching animations for the last 2 days because it began to annoy me XD

I am thinking about the line "igGroup", which is in every animation, though named once.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 27, 2009, 05:41AM
I've been playing with the multi-biped idea, without huge success. I can still only get one animation of the three I make bipeds for to work in game. Whats a bit odd is that one time it was menu_idle which worked, and not run or menu_goodbye. Then when I re-exported run worked but not menu idle or goodbye.

I'm starting to think that what we may need to do for this to work is:
create the bipeds (lets call em biped1, 2 and 3 for now, even though we know all are actually bip01 etc)
biped1 we create an actor for when menu_idle is playing, and name the animation accordingly.
we then hide biped1, and still in the same timeframe in Max unhide and animate biped2 to be menu_action, create its own actor and name the animation in the actor.
we then hide biped2, and still in the same timeframe unhide and animate biped3 to menu_goodbye, create its actor and name the animation.
So now, if all 3 bipeds are unhidden, and we play the timeframe of menu_idle's animation, each biped plays its own unique animation, different from the other two. Each actor should have an animation associated with it that a valid biped is performing.
Maybe then all three will work.
This is what i'll try to do today.
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 27, 2009, 05:50AM
Using groupss & NoteTrack with that idea?
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 27, 2009, 11:41AM
I dont believe either is necessary. As ever, I could be wrong.

Heres what I have "achieved":
I have two bipeds in the scene, both are called bip01 etc. One I've coloured red, the other orange, so I can tell which is which, so that's what we'll call em.
Red Biped has the "run" animation, and its own actor, called run, with "run" entered as the  name of the animation. Red bip01 is linked to the run actor.
Orange Biped has the "menu_idle" animation, and its own actor, called menu_idle, with "menu_idle" entered as the name of the animation. Orange bip01 is linked to the menu_idle actor.
Both animations play at the same time, from keyframe 0 to keyframe 43, so if I press play in Max, I see red run, and orange just stand there, vaguely waving one arm.
Neither Biped is in a Group, for now, because it seems unnecessary. More on why shortly.
I export the scene.
In-game, menu_idle does not work, it defaults to the built in one, but run does work, showing my custom run anim at the right time.
If I go back to Max and rename run to menu_idle, and menu_idle to run in the "animation name" field in their respective actors, then re-export, now menu_idle works in game (showing my custom run anim on the hero select screen), but run no longer plays a custom anim, and defaults back to the built in run anim.
So far then, red Biped works as either run or menu_idle. OK, so maybe theres something wrong with orange Biped, as it wont work as either animation. I delete it, and its actor. I clone red Biped, rename the clone to bip01 etc, change its colour to orange, create a new actor, link orange bip01 to the new actor, name the animation to menu_idle, and re-export. Still only the run anim works. I "Group" the orange Biped, re-export. Still doesn't work. So I un-Group it again (since red is not Grouped and it works).
So, next I clone red and its actor again(making a third, yellow, biped in the scene), but name the animation "walk" this time(even though its the run keyframes cloned from red Biped). Export, and of course walk doesn't work.
Then I delete the red biped and export. This time my menu_idle anim works, but the walk still doesn't. It's seems now that only one biped works, the first one created. Red was the original biped, so whilst it existed, no orange one could work. Nor the yellow one. Deleting the red makes the orange the "primary" biped, so its anim now plays on export as menu_idle, and yellows Walk still doesnt work.
Deleting the orange biped makes the yellow biped the "primary", oldest biped, and its animation now works as "walk" in-game. This clinches it for me.
Although subsequent bipeds seem to be exported OK, (showing up the right animation name in a hex editor), only one, the oldest, "primary" biped, ever works in-game.

As ever, its possible I've missed something, done something wrong, or made some mistake. But, if neither of us can get more than one anim working in-game using the multi-biped method (Group or no Group), it suggests to me that although its a good theory, it isn't what we need.
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 27, 2009, 01:18PM
Okay, new theory (just thought of it, 10 seconds ago)

1 biped in a group called nr_character linked to ig_actor01. Defining the animation in the properties as "actorAnimation = nr_character". Alchemy Animation modifier on the group, as many times as you have animations in the track. Name each modifier to an animation name, and let each start at their own frames (alchemy animation can define where an animation starts and how many intervals it has). So:

1 group, named nr_character
multiple anims on a single biped.
Numerous alchemy animation modifiers on the group, naming each to the animation you've created.
Adjust the settings of the alchemy modifier.

Meh, it probably won't work, but sometimes even crazy ideas work.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 27, 2009, 01:53PM
An interesting idea.
We could equally apply the animation modifiers to the actor though, couldn't we? Not convinced by the whole Group-ing thing.
Will try this on a max file though. Then I need a rest, my eyes are bleeding and my soul has been destroyed by exporting the same file 80 bajillion times, and running the game 80 bajillion times.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 27, 2009, 02:13PM
Quote from: Mr. Law^^ on October 27, 2009, 01:18PM
Okay, new theory (just thought of it, 10 seconds ago)

1 biped in a group called nr_character linked to ig_actor01. Defining the animation in the properties as "actorAnimation = nr_character". Alchemy Animation modifier on the group, as many times as you have animations in the track. Name each modifier to an animation name, and let each start at their own frames (alchemy animation can define where an animation starts and how many intervals it has). So:

1 group, named nr_character
multiple anims on a single biped.
Numerous alchemy animation modifiers on the group, naming each to the animation you've created.
Adjust the settings of the alchemy modifier.

Meh, it probably won't work, but sometimes even crazy ideas work.

Tried it, but it didn't work (and I did Group the biped).
I think thats it for me today.
Gotta say, you been coming up with some good ideas. If creative thinking were rewarded, it would already be working...
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 27, 2009, 02:16PM
Thanks. Wouldn't been doing it without you btw^^. Well, like I said, SOMETIMES crazy ideas work. Sometimes they don't :<

I'll try some stuff out if other ideas jump up in my head. Wish I started using max years ago. Anyway, gives me time to explore more functions of max and apply those.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 29, 2009, 04:46AM
I'm pretty certain now that only one biped is exported as "active" (ie plays its animation at the correct time). I've made several scenes and always get the same result.
And I still have yet to find a way of exporting more than one working custom animation at a time.
More experiments to follow as and when I have time.
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 29, 2009, 03:02PM
I went through some files. 2 things are in every animation file:

- afakeanim
- Motion

Okay. So, I grouped every animationgroup under "Motion". Didn't work.

EDIT: I removed a few lines, seems that I made some mistakes XD

Anyway, I'm trying some new ideas out.

EDIT2: renaming Motion to afakeanim also did not work. I thought: why not group all groups together in 1, renaming the main group to afakeanim (why else is it there?) and setting the default anim to afakeanim.. Didn't work.

Another thing I tried:

The make 1 anim work by using multibipeds & groups method, when exported opening it with a hexeditor and hex one entry of the animation name to the one that wasn't exported (for example, menu_action is the animation defined in the igActor, I renamed one entry to menu_idle).
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 29, 2009, 03:56PM
We need more thinkers here. My main concern is that the exporter just limits us with multi animations. Therefore, I'm posting the script used by the exporter:

Quote from: actor_editor.ms
--
--  $Id: actor_editor.ms,v 1.5 2002/07/30 19:12:44 ericb Exp $
--                                                                       
--          Copyright (C) 1999-2002, Intrinsic Graphics, Inc.           
--                         All Rights Reserved.                         
--                                                                       
--  UNPUBLISHED -- Rights  reserved  under  the  copyright  laws  of the
--  United States.  Use  of a copyright notice is precautionary only and
--  does not imply publication or disclosure.                           
--                                                                       
--  THIS DOCUMENTATION CONTAINS CONFIDENTIAL AND PROPRIETARY INFORMATION
--  OF   INTRINSIC   GRAPHICS,  INC.    ANY  DUPLICATION,  MODIFICATION,
--  DISTRIBUTION, OR DISCLOSURE IS STRICTLY PROHIBITED WITHOUT THE PRIOR
--  EXPRESS WRITTEN PERMISSION OF INTRINSIC GRAPHICS, INC.               
--

-----------------------------------------------------------------
--  Actor Animation Editor Helper for Intrinsic Alchemy
-----------------------------------------------------------------
rollout igActorEditor "Actor Editor" 

   -----------------------------------------------------------------
   --  Constant local variables
   -----------------------------------------------------------------
   local ACTOR_ID = "igActor"
   local ACTOR_ANIMATION_NAME = "actorAnimation"

   -----------------------------------------------------------------
   --  Gets the name of the animation
   --  Returns a new unique name if there is no user propertie
   --    with the node
   -----------------------------------------------------------------
   function getActorAnimationName obj =
   (
      local name = getUserProp obj ACTOR_ANIMATION_NAME
      if name != undefined then name else uniqueName(obj.name + "_Animation")
   )
   
      -----------------------------------------------------------------
   --  Sets the name of the animation
   -----------------------------------------------------------------
   function setActorAnimationName obj name =
   (
      setUserProp obj ACTOR_ANIMATION_NAME name
   )
   
   -----------------------------------------------------------------
   --  Current edited actor and its list of components
   -----------------------------------------------------------------
   local selected_object
   local edit_actor
   local list_actorobjects

   -----------------------------------------------------------------
   --  Returns the actor group if it is an actor
   --  returns undefined otherwise
   -----------------------------------------------------------------
   function isActorGroup obj =
   (
      local g = getUserProp obj ACTOR_ID
      if g == true then obj else undefined
   )
   
   
   -----------------------------------------------------------------
   --  Returns the Actor group if the object is inside an actor
   --  returns undefined otherwise
   -----------------------------------------------------------------
   function isActorObject obj =
   (
      local p = obj.parent
      if p != undefined then isActorGroup p else undefined
   )

   
   -----------------------------------------------------------------
   --  Go through an array and returns a common actor group
   --    returns undefined if no common group is found
   -----------------------------------------------------------------
   function multipleActorSelection objs =
   (
      local i = objs[1]
      local g = isActorGroup i
      local n = if g!=undefined then g else isActorObject i
      
      if n==undefined do return undefined
      
      deleteItem objs 1
      for i in objs do
      (
       g = isActorGroup i
       local n2 = if g!=undefined then g else isActorObject i

       if n2!=n do return undefined
      )

      return n
   )
   
   
   -----------------------------------------------------------------
   --  Adds an object to an actor
   -----------------------------------------------------------------
   function addObjectToActor actor obj =
   (
      append actor.children obj
   )
   
   
   -----------------------------------------------------------------
   --  Create an actor from the selection
   -----------------------------------------------------------------
   group "Create Actor"
   (
      button createActor "Create from selection"
   )

   on createActor pressed do
   (
      local objects = getRootSelection()

      if objects.count > 0 do
      (
         local actor_name = uniqueName ACTOR_ID
         local actor_pos = getValidPositionFromList objects
         local actor = Dummy name:actor_name pos:actor_pos
         setUserProp actor ACTOR_ID true

         -- This will return a temporary value if the name is not set
         local animation = getActorAnimationName actor
         setActorAnimationName actor animation
         
         for obj in objects do
         (
            addObjectToActor actor obj
         )

         select actor
      )

   )

   
   -----------------------------------------------------------------
   --  UI actor object rollout group
   -----------------------------------------------------------------
   group "Actor component"
   (
      label       label_name_child "Name: " across:2 align:#left
      label       actor_object_name "" align:#left
      button      select_actor "Select Actor" enabled:false \
            tooltip:"Select the Actor node"
   )

   -----------------------------------------------------------------
   --  Select the actor group of this component
   -----------------------------------------------------------------
   on select_actor pressed do
   (
      if selected_object != undefined do
      (
         local actor = selected_object.parent
         select actor
      )
   )

   -----------------------------------------------------------------
   --  UI Edit actor rollout group
   -----------------------------------------------------------------
   group "Actor"
   (
      label       label_edited_actor "Name:" across:2 align:#left
      label       edited_actor "" align:#left
      
      edittext   animation_name      "Animation:"      enabled:false
      
      listbox      edited_objects "Components" items:#() height:4 \
            tooltip:"Double-click to select object"

      button      remove_obj   "Remove from list" \
            tooltip:"Remove object from list"
      button      add_obj "Add selection" \
            tooltip:"Add selection to Actor components"
      button      select_objects "Select All" \
            tooltip:"Select the Actor and its components"
   )

   
   -----------------------------------------------------------------
   --  Select the double-clicked object
   -----------------------------------------------------------------
   on edited_objects doubleclicked cur_obj do
   (
      select list_actorobjects[cur_obj]
   )


   -----------------------------------------------------------------
   --  Change the name of the animation
   -----------------------------------------------------------------
   on animation_name changed name do
   (
       if animation_name.enabled and (edit_actor != undefined) do
      (
         setActorAnimationName edit_actor name
      )
   )

   -----------------------------------------------------------------
   --  Update the Edit actor rollout group
   -----------------------------------------------------------------
   function updateEditActor =
   (
      if edit_actor != undefined then
      (
         edited_actor.text = edit_actor.name
         list_actorobjects = edit_actor.children
         
         local items = for i in list_actorobjects collect i.name
         edited_objects.items = items
         
         animation_name.text = getActorAnimationName edit_actor
         animation_name.enabled = true
         
      )
      else
      (
         edited_actor.text = ""
         animation_name.enabled = false
         animation_name.text = ""
         list_actorobjects = #()
         edited_objects.items = #()
      )

   )
   
   
   -----------------------------------------------------------------
   --  Add the selection to the editable actor group
   -----------------------------------------------------------------
   on add_obj pressed do
   (
      if edit_actor!=undefined do
      (
         local elements = getRootSelection()

         for i in elements do
         (
            if i != edit_actor do addObjectToActor edit_actor i
         )

         updateEditActor()
         select elements
      )
   )
   
   
   -----------------------------------------------------------------
   --  Remove the selected object from the actor group
   -----------------------------------------------------------------
   on remove_obj pressed do
   (
      if edit_actor!=undefined and edited_objects.selection>0 do
      (
         local element = list_actorobjects[edited_objects.selection]
         element.parent = edit_actor.parent
         updateEditActor()
         select element
      )
   )
   
   
   -----------------------------------------------------------------
   --  Select the actor and its components
   -----------------------------------------------------------------
   on select_objects pressed do
   (
      if edit_actor!=undefined do
      (
          select edit_actor
         selectMore edit_actor.children
      )
   )
   
   -----------------------------------------------------------------
   --  Enable/disable the buttons in the actor object rollout
   -----------------------------------------------------------------
   function enableComponentsUI b =
   (
      select_actor.enabled = b
   )

   
   -----------------------------------------------------------------
   --  Update the rollout with current selection
   -----------------------------------------------------------------
   function updateRollout =
   (
   selected_object = undefined
   enableComponentsUI(false)
   actor_object_name.text = ""

   -- number of selected objects
   local c = selection.count
   local s = getCurrentSelection()
   if c > 0 do
   (
      local o = s[1]
      local g = multipleActorSelection s
      
      if g != undefined do
      (
         -- we changed actor group
         if g != edit_actor do
         (
            edit_actor = g

            -- callback for actor deleted
            when edit_actor deleted obj do
            (
                deleteAllChangeHandlers id:#edit_actor_change
               edit_actor = undefined
               updateEditActor()
            )
   
            -- callback for actor renamed
            when name edit_actor changes id:#edit_actor_change do updateEditActor()
   
            updateEditActor()
         )
      )

      -- update information for a single actor component
      if c==1 do
      (
         local a = isActorObject o
         if a != undefined do
         (
            actor_object_name.text = o.name
            enableComponentsUI(true)
            selected_object = o
         )
      )
   )
   
   )

   
   -----------------------------------------------------------------
   -- Update for current selection
   -----------------------------------------------------------------
   on igActorEditor open do updateRollout()

)  -- end rollout igActorEditor


-- vim:syntax=lace:

And no, adding ACTOR_ANIMATION_NAME2 = actorAnimation2.. aka adding multiple lines like that doesn't work. What we need it the ability to create multiple animations in 1 database in 1 file, otherwise combining anims. If anyone else wants to see other scripts, feel free to ask.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on October 29, 2009, 04:07PM
Yes, looking at the .ini files (used to "optimize" exports) reveals some stuff which looks interesting and relevant but which yields little to me upon editing.
Sadly my script-fu is weak and I cannot see how to do what we want. Yet.
Title: Re: Modding Rundown: Animations
Post by: BLaw on June 16, 2011, 08:42AM
Bump

I think I might have found a way to get multiple animations in a game for a character. But it's a long ass theory but let me start.

What do you need:

1. 1 file for each animation you have, renamed as you want them (idk if folders work but, trying <namechar>/xx_charname_p1.igb would be an example here). So, for example: Hydroman/182_Hydroman_p1.igb     This file would contain the power 1 animation, as we are limited to that.
2. Rigged external objects or skins
3. Most likely a script.
4. The invisibility code (not code as in cheat code) or script or w/e it takes, I never got that far with modding yet


Okay so, what now?

IF folders works, try that. IF NOT, our ACTORS folder will be damn full like hell, but w/e.

Again, there can be only ONE animation in a custom skeleton, which is damn fookt. Therefore, we need to have like, any amount of animation you want but they HAVE to be recognizable with the game.

Second, we all know they ARE usable. Why? Tommy could import a custom animation. I could. So it's possible. And yes even in the combat zone as in the menu.

But the problem is: we can only use 3 skeletons at a time. So how the fck do we fix it?

BY USING A DUMMY THAT YOU CAN CONTROL WHILE HIDING YOUR OWN CHARACTER.

Basicly, a MIND CONTROL. It IS possible for sure. So what's the deal?

- The main character becomes INVISIBLE. Not stealthed, INVISIBLE when the power is activated.
- The coding in the powerstyle needs to have an animation for the dummy/minion in it for the power. This means that you can only use THAT animation. This means that the minion COMES and the minion GOES. Perhaps mind control ain't even needed. But the minion HAS to be spawned at YOUR LOCATION. The EXACT same spot.
- Power is executed and when it ends, the main character is back and the minion is gone. There, bypassed.

Thoughts? PLEASE ONLY USEFUL COMMENTS OR MINDS THAT THINK. FCK OFF WITH YOUR "OMG GREAT IDEA" "OMG YOUR COOL" "GOOD WORK" ONLY COMMENTS. This might be a breakthrough, even if it's a long one.
Title: Re: Modding Rundown: Animations
Post by: Quentin Hex on June 16, 2011, 10:08AM
it sounds like a pretty good idea. my one worry would be choppiness when switching between the dummy and the real character and vice versa.
by the way i was asking about invisibility a little while back: http://marvelmods.com/forum/index.php/topic,5694.msg111882.html#msg111882
Title: Re: Modding Rundown: Animations
Post by: BLaw on June 16, 2011, 10:47AM
That would work. Thanks for that link D.
Title: Re: Modding Rundown: Animations
Post by: BLaw on June 17, 2011, 07:19AM
I am going to try out that theory of mine this weekend. I am not a pro with animations so i will just make something simple lol. But if it does work, it could open up new options for modding.
Title: Re: Modding Rundown: Animations
Post by: BLaw on September 10, 2012, 01:49PM
BUMP.

Back to brainstorming.

I tried to make an animated cape. To say that I did get it animated alright, but not really well rigged but I did figure out how to do it.

I opened up 64_death_hand_cape.igb with a Hexeditor. I saw these entries:

Quote
Cape_00
Cape_01
Cape_02
Cape_03

I assumed these were renamed bones. And I was correct.

I tried putting 2 physique modifiers on the same cape. One that is rigged to Bip01 which would be the upper part of the cape. The rest on Cape_00 which starts from the upper part of the cape and goes down to Cape_05. Yes Cape_05, because Cape_04 can't be rigged without Cape_05. I hid Cape_05 and started rigging.

Well that didn't work. 3ds Max crashed on me when I tried to rig with 2 physique modifiers.

I tried rigging on the same modifier, adding floating bones. That worked in max, but not in-game. Not even when I put the model itself as a bolton. The cape just wouldn't animate.

So I loaded up a new file, containing only the cape, rigged to only Cape_00 to Cape_04 with Cape_05 hidden, exported it. Bam. Worked. But my rigging wasn't flawless + it was frekkin upside down and a bit off -_-. So it started animating. I guess I figured out how to animate a cape. I guess the same way goes for making an animated wings bolton.



EDIT:


Ok discovery.

The first bone (which will be near the normal Bip01 Spine2) is called Cape_01.
The next one (a bit lower down the cape) is called Cape_02.
The next one (a bit lower down again) is called Cape_03.
And the final one is called Cape_00. Because THIS one can NOT be rigged.

And now it's animating fluently. But I am having trouble positioning. -_-
Title: Re: Modding Rundown: Animations
Post by: BLaw on September 10, 2012, 04:29PM
Positioning the rigged cape is a bitch. I've been on it for 2 hours straight now. Almost 3. The damn cape animates like a boss, but no matter how I position it, the frecker just won't get into the right spot. I'm done -_-
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 26, 2012, 04:18PM
I've come back to this to play alittle, as I am wont to do every few years, like a digital salmon forlornely returning to it's spawning grounds...
Anyway, whats new this time out is my recent discovery that the sgFinalizer can process our user made models and externalize the textures, causing them to be ...err.. external, and the saved model to load said external textures.
This naturally leads me to wonder if we can do a similar trick with our "animationDB" type files, exported lo, many many moons ago.
The goal being to get the model to "read" all those "DB" files each containing a separate animation, at least in the viewer if not in the game itself.
A quick poke around in the finalizer reveals no option to "externalize" animations, only geometry or textures.
But the alchemy tool in max has options to set paths for external anims, and options to export models with external anims.
The finalizer does have a few animation related optimizations you can run on a model, but nothing I've seen yet looks promising.

To recap on the issue as I see it:
1 The game has animation files containing many animations all in one igb, which are all labelled as what they are (run, attack etc) so the game can use them.
2. We can export animations but dunno how to "label" them such that the game knows which is which, other than one at a time (ie we can export "run" OR export "menu_idle", but not both together)
3. When we do our single anim only exports, the game recognises them, ie plays the "run" labelled one for running, "menu idle" in the menu etc etc. So we are doing something right.
4. The "labelling" is done in the bottom of the actor tool in max in the "actor editor"> "animation" rollout.
5. Attempts at multiple actors each named for a single anim have as yet not worked.

that's all I have for now. It's not really much more than we knew 2 years ago..
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 27, 2012, 12:13PM
Right, in order to ensure I don't need to experiment next time I come back in 3 years, heres some step by step with pics type instructions:
(http://i15.photobucket.com/albums/a384/tommyboy2002/muaexportmenu_idle_zpsf37e7b33.jpg)

The pic above is my settings to export a single animation, "menu_idle".
The anim is @40 frames in max, and I have the time bar such that only those frames are exposed (ie frames 1-40).
I have one biped and one actor, "igActor01".
I click on the actor to select it, then in the "actor editor" of the "Alchemy dialog" I type in "menu_idle" in the "animation" field.
I have everything except "images" selected in "export settings", including "save full igb".
In "default animation" the "animation" box is selected, "animation type" is "repeat", and the "static frame #" is "1" (I think it sets the static frame itself on export)
I use the "file export" > "export as" button and name my export "01_flash.igb". Obviously the character name can be whomever you are working on. It happens to be the Flash here.
I copy/paste the 01_flash.igb into the main "actors" folder, replacing whats there already (having made a copy for safety first, of course).
Then, if I start a new game, preferably by quitting MUA to the desktop and starting again, my new "menu_idle" animation appears in the correct places:
See? Here he is in the team select screen:
(http://i15.photobucket.com/albums/a384/tommyboy2002/muaexportmenu_idle2_zps932b7a76.jpg)
And here in the game itself in the team management screen:
(http://i15.photobucket.com/albums/a384/tommyboy2002/muaexportmenu_idle3_zpsa38eb2f2.jpg)

So far, so several years ago.
Things to note;
Still only one anim, at this point.
The actor could be named anything and it works, the critical bit is the animation name in the actor editor. If I change that to "run" and re-export, the same animation now gets played when he runs.
I can add other Actors to the scene, and give them animation names like run, menu_action or whatever, and although these names will be in the igb, visible to a hex editor, no animations play at the time the game calls those animations.
The intrinsic alchemy help file does say: "Operations such as changing skins, combining animations, and other features of the Alchemy animation system are out of the scope of this plug-in: the actor editor simply creates one igActor from the scene." as I've noted before.
Now I wonder if perhaps editing the max script for the plug-in is the way to go.
Here is the max script for the "actor_editor.ms", which I believe is what we need to alter:

--
--  $Id: actor_editor.ms,v 1.5 2002/07/30 19:12:44 ericb Exp $
--                                                                       
--          Copyright (C) 1999-2002, Intrinsic Graphics, Inc.           
--                         All Rights Reserved.                         
--                                                                       
--  UNPUBLISHED -- Rights  reserved  under  the  copyright  laws  of the
--  United States.  Use  of a copyright notice is precautionary only and
--  does not imply publication or disclosure.                           
--                                                                       
--  THIS DOCUMENTATION CONTAINS CONFIDENTIAL AND PROPRIETARY INFORMATION
--  OF   INTRINSIC   GRAPHICS,  INC.    ANY  DUPLICATION,  MODIFICATION,
--  DISTRIBUTION, OR DISCLOSURE IS STRICTLY PROHIBITED WITHOUT THE PRIOR
--  EXPRESS WRITTEN PERMISSION OF INTRINSIC GRAPHICS, INC.               
--

-----------------------------------------------------------------
--  Actor Animation Editor Helper for Intrinsic Alchemy
-----------------------------------------------------------------
rollout igActorEditor "Actor Editor" 

-----------------------------------------------------------------
--  Constant local variables
-----------------------------------------------------------------
local ACTOR_ID = "igActor"
local ACTOR_ANIMATION_NAME = "actorAnimation"

-----------------------------------------------------------------
--  Gets the name of the animation
--  Returns a new unique name if there is no user propertie
--    with the node
-----------------------------------------------------------------
function getActorAnimationName obj =
(
local name = getUserProp obj ACTOR_ANIMATION_NAME
if name != undefined then name else uniqueName(obj.name + "_Animation")
)

-----------------------------------------------------------------
--  Sets the name of the animation
-----------------------------------------------------------------
function setActorAnimationName obj name =
(
setUserProp obj ACTOR_ANIMATION_NAME name
)


-----------------------------------------------------------------
--  Current edited actor and its list of components
-----------------------------------------------------------------
local selected_object
local edit_actor
local list_actorobjects

-----------------------------------------------------------------
--  Returns the actor group if it is an actor
--  returns undefined otherwise
-----------------------------------------------------------------
function isActorGroup obj =
(
local g = getUserProp obj ACTOR_ID
if g == true then obj else undefined
)


-----------------------------------------------------------------
--  Returns the Actor group if the object is inside an actor
--  returns undefined otherwise
-----------------------------------------------------------------
function isActorObject obj =
(
local p = obj.parent
if p != undefined then isActorGroup p else undefined
)


-----------------------------------------------------------------
--  Go through an array and returns a common actor group
--    returns undefined if no common group is found
-----------------------------------------------------------------
function multipleActorSelection objs =
(
local i = objs[1]
local g = isActorGroup i
local n = if g!=undefined then g else isActorObject i

if n==undefined do return undefined

deleteItem objs 1
for i in objs do
(
g = isActorGroup i
local n2 = if g!=undefined then g else isActorObject i

if n2!=n do return undefined
)

return n
)


-----------------------------------------------------------------
--  Adds an object to an actor
-----------------------------------------------------------------
function addObjectToActor actor obj =
(
append actor.children obj
)


-----------------------------------------------------------------
--  Create an actor from the selection
-----------------------------------------------------------------
group "Create Actor"
(
button createActor "Create from selection"
)

on createActor pressed do
(
local objects = getRootSelection()

if objects.count > 0 do
(
local actor_name = uniqueName ACTOR_ID
local actor_pos = getValidPositionFromList objects
local actor = Dummy name:actor_name pos:actor_pos
setUserProp actor ACTOR_ID true

-- This will return a temporary value if the name is not set
local animation = getActorAnimationName actor
setActorAnimationName actor animation

for obj in objects do
(
addObjectToActor actor obj
)

select actor
)

)


-----------------------------------------------------------------
--  UI actor object rollout group
-----------------------------------------------------------------
group "Actor component"
(
label     label_name_child "Name: " across:2 align:#left
label     actor_object_name "" align:#left
button select_actor "Select Actor" enabled:false \
tooltip:"Select the Actor node"
)

-----------------------------------------------------------------
--  Select the actor group of this component
-----------------------------------------------------------------
on select_actor pressed do
(
if selected_object != undefined do
(
local actor = selected_object.parent
select actor
)
)

-----------------------------------------------------------------
--  UI Edit actor rollout group
-----------------------------------------------------------------
group "Actor"
(
label     label_edited_actor "Name:" across:2 align:#left
label     edited_actor "" align:#left

edittext animation_name    "Animation:" enabled:false

listbox edited_objects "Components" items:#() height:4 \
tooltip:"Double-click to select object"

button remove_obj "Remove from list" \
tooltip:"Remove object from list"
button add_obj "Add selection" \
tooltip:"Add selection to Actor components"
button select_objects "Select All" \
tooltip:"Select the Actor and its components"
)


-----------------------------------------------------------------
--  Select the double-clicked object
-----------------------------------------------------------------
on edited_objects doubleclicked cur_obj do
(
select list_actorobjects[cur_obj]
)


-----------------------------------------------------------------
--  Change the name of the animation
-----------------------------------------------------------------
on animation_name changed name do
(
if animation_name.enabled and (edit_actor != undefined) do
(
   setActorAnimationName edit_actor name
)
)


-----------------------------------------------------------------
--  Update the Edit actor rollout group
-----------------------------------------------------------------
function updateEditActor =
(
if edit_actor != undefined then
(
edited_actor.text = edit_actor.name
list_actorobjects = edit_actor.children

local items = for i in list_actorobjects collect i.name
edited_objects.items = items

animation_name.text = getActorAnimationName edit_actor
animation_name.enabled = true
)
else
(
edited_actor.text = ""
animation_name.enabled = false
animation_name.text = ""
list_actorobjects = #()
edited_objects.items = #()
)

)


-----------------------------------------------------------------
--  Add the selection to the editable actor group
-----------------------------------------------------------------
on add_obj pressed do
(
if edit_actor!=undefined do
(
local elements = getRootSelection()

for i in elements do
(
if i != edit_actor do addObjectToActor edit_actor i
)

updateEditActor()
select elements
)
)


-----------------------------------------------------------------
--  Remove the selected object from the actor group
-----------------------------------------------------------------
on remove_obj pressed do
(
if edit_actor!=undefined and edited_objects.selection>0 do
(
local element = list_actorobjects[edited_objects.selection]
element.parent = edit_actor.parent
updateEditActor()
select element
)
)


-----------------------------------------------------------------
--  Select the actor and its components
-----------------------------------------------------------------
on select_objects pressed do
(
if edit_actor!=undefined do
(
select edit_actor
selectMore edit_actor.children
)
)

-----------------------------------------------------------------
--  Enable/disable the buttons in the actor object rollout
-----------------------------------------------------------------
function enableComponentsUI b =
(
select_actor.enabled = b
)


-----------------------------------------------------------------
--  Update the rollout with current selection
-----------------------------------------------------------------
function updateRollout =
(
selected_object = undefined
enableComponentsUI(false)
actor_object_name.text = ""

-- number of selected objects
local c = selection.count
local s = getCurrentSelection()
if c > 0 do
(
local o = s[1]
local g = multipleActorSelection s

if g != undefined do
(
-- we changed actor group
if g != edit_actor do
(
edit_actor = g

-- callback for actor deleted
when edit_actor deleted obj do
(
deleteAllChangeHandlers id:#edit_actor_change
edit_actor = undefined
updateEditActor()
)

-- callback for actor renamed
when name edit_actor changes id:#edit_actor_change do updateEditActor()

updateEditActor()
)
)

-- update information for a single actor component
if c==1 do
(
local a = isActorObject o
if a != undefined do
(
actor_object_name.text = o.name
enableComponentsUI(true)
selected_object = o
)
)
)

)


-----------------------------------------------------------------
-- Update for current selection
-----------------------------------------------------------------
on igActorEditor open do updateRollout()

)  -- end rollout igActorEditor


-- vim:syntax=lace:



So I'm going to have a stab at it in the coming days.
I'll also try some other stuff too, I've some other ideas to try...see you after I fail...
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 27, 2012, 02:39PM
Before that, a quick return to the idea of multiple bipeds, each linked to its own actor, each assigned a differing animation name, and then exported.
It doesn't work.
I've got 3 bipeds, all labelled Bip01 etc, each Bip01 is linked to its own actor and each actor has its own animation name set up for it.
For good measure, each biped is animated slightly differently so you could see which one controls the character.
Again, frustratingly, in a hex editor you can see both entries for the "extra" actor "animation_nameDB" and then the "animation_name" itself, which if I hadn't run it in-game I'd assume meant those separate animationDBs were in the folder.
And they are, as we shall see in a bit.
Nonetheless, the only anim that plays is the one attached to the "first" biped, by which I mean the one first created. The others are ignored, I think. At least they seem to be.
If I put an actual model in there, linked to igActor01, and export I can see him in the viewer, doing his "menu_idle" anim. Which I can see in-game, too, of course, when I use the model as a "skeleton" animation file ie "01_flash".
I can also see the bones of the other two bipeds doing their different animations in the viewer, and if I export with the model hidden I can see all 3 bipeds in the viewer, animating away.
But it seems the game "sees" only one animation, that attached to the first biped.
And if I try to "link" the 2 other actors to igActor01 I get an error on export. Same if I "link" it to one of them.

But, interestingly,  after the "linking" failure, then the NEXT biped and actor take over, and now the "menu_goodbye" animation is the only one playing in-game.
After some messing about I finally discover that the first biped has come "unlinked" from igActor01, which is why the anim for igActor2 or 3 gets played.
Why this is interesting is it confirms that 3 different animations are being exported into one file, each with it's own name and movements.
At the moment, only one of the three is getting "read" by the game.
What I hope to do is get two exports, one using igActor1's anim, and the other using igActor2's anim, and them compare them, and squish them together in my hands like sausages, making one huge sausage. *ahem*...
It sort of shows the multiple biped/actor idea is not without merit, entirely.


Title: Re: Modding Rundown: Animations
Post by: BLaw on September 27, 2012, 03:13PM
I have an idea.

The game is kinda screwy when it comes to IGBs.
I had to hex my 2 iconsets for Bane so the game sees them as unique iconsets. If I didn't do that, one wouldn't show up.

What if we use a reverse logic for animations.

- So far we can only use 1 animation per handmade skeleton. So we keep it that way and create as many as we want;
- We hex each file, changing the AnimDB (or whatever it's called) to IDNUMBER_CHARNAME (i.e. 01_blade).
- We name each skeleton file (the IGBs) to IDNUMBER_CHARNAME. BUT, we can't do that? Well, the game doesn't give a DWACK if the names look ALMOST SIMILAR. For example:

01_blade
01_blode
01_blide
01_bldde

I hope I was a bit clear with this idea.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 27, 2012, 03:24PM
Ooof!
Comparison is a biyotch.
I exported once with "menu_idle" as the main anim name, then, altering nothing else, simply changed that name to "menu_action" and exported again.
The resulting files are ridiculously different, right from the word go (well byte 09 actually, first 8 bytes are identical).
Theres a lot of the same stuff in different orders, which I don't get.
Bear in mind all I did was change the name of one thing, adding 2 letters to the length, and it looks like a different file completely.
See for yourself:
(http://i15.photobucket.com/albums/a384/tommyboy2002/compare_idle_action_zpsc5d847ac.jpg)
And it's the same the whole way through.
This does not bode well for any sort of manual cut'n'paste of animation files, unless it's some sort of fluke.
I may try a few more times tomorrow, but that avenue looks like a dead end tonight.



RE: your idea for multiple slightly changed name animation files, it's worth a shot.
I've got a few already exported single anim files that work on their own as "01_whomever.igb".
My question is, armed with a handfull of 01_flush, 01_flesh, 01_flish etc, how do I point the talent/powerset/whatever in the game towards those?

Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 27, 2012, 03:47PM
Another bit of lateral thinking:
I can export an animation file with 20 or 50 animations in it, but the game thinks they are all one, and just plays them all, one after another.
Is there any way in the powerset (or anywhere else) to specify what part of an animation plays?
Can you say "play from half way through?" or "only play the last 2 seconds"?
If we could specify this its simple to get a list of the length of the animations in the mega-animation file, and then if we want "power22" we say "play 1 minute 32 seconds to 1 minute 34 seconds", and get the animation we want.
Am I making sense?
So my animation goes:
Time                      Name
0-4seconds      menu_idle
6-15 sec           pain
20-33 sec         run
36-39 sec         attack_light1
43-47 sec        power2
and then we tell the powerset (or a custom script maybe)  for "eapower2" play 43-47seconds from 01_tom.igb....somehow.
I haven't got a clear concept of how, but I've done similar in another game and it worked there, though it's very far from ideal...

And thinking about it and looking at a powerstyle file, it's not a great idea, unless we want to rewrite the way animations are handled in the game more or less from scratch..
Title: Re: Modding Rundown: Animations
Post by: BLaw on September 27, 2012, 03:59PM
You just define 01_flash in the packages and the herostat. The game will load that file.. and every other file that has 01_flash hexed in it. If you wanna play safe, define the other flush flesh etc in the packages too. Won't work for the herostat though. I think ><'

This is the same with skins. That's why there's a skinswap conflict on custom models if you do not give it internal numbers but you did swap it for an existing one. The game relies on the identifier numbers which can be found with a hexeditor.

That's the reason why I had the idea.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 27, 2012, 04:21PM
Quote from: BLaw on September 27, 2012, 03:59PM
You just define 01_flash in the packages and the herostat. The game will load that file.. and every other file that has 01_flash hexed in it. If you wanna play safe, define the other flush flesh etc in the packages too. Won't work for the herostat though. I think ><'

This is the same with skins. That's why there's a skinswap conflict on custom models if you do not give it internal numbers but you did swap it for an existing one. The game relies on the identifier numbers which can be found with a hexeditor.

That's the reason why I had the idea.

OK walk me through as though I'm an idiot, one step at a time.
We are exporting one animation at a time, exporting to files called "01_flush.igb" "01_flesh.igb" etc.?
A different animation in each one, with a different animation name;"power_2", "idle" etc. put in the "animation name" field in "actor editor" each time, yes?
So what in the file has the "01_flash" part?
It can't be the animation name, can it?
Would a dummy part named "01_flash" be enough, or does it somehow have to be linked to an animation DB?

I just exported 3 files, each with the "main" animation named differently (menu_idle, menu_goodbye and run).
In each there is a second actor called "01_flash"linked to a second biped, and it's animation name is "01_flash".
So there should be an "01_flashDB" and an "01_flash", plus at least one "01_flash" object (the actor named 01_flash).
I named each 01_flush 01_flesh etc., copied into actors, and only the original menu_idle one, (which worked anyway and is named 01_flash) worked.
If I renamed 01_flash to 01_flosh it doesn't work.

Am I missing something obvious here?
They all have "01_flash" and "01_flashDB" entries if opened in a hex editor. Not that that means much, as we know, but I'm just mentioning it.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 27, 2012, 04:30PM
What I thought a bout your idea is this:
Each powerstyle power entry could look like this:


   FightMove {
   animenum = ea_power7 ;
   icon = 10 ;
   is_power = true ;
   lockangles = true ;
   name = power7 ;
   priority = 5 ;
      require {
      cat = skill ;
      item = flash_p7 ;
      level = 1 ;
      }

      trigger {
      name = runscript ;
      script = common/swap_in_power7_anim_file.py ;
      time = 0 ;
      }


The lengthily named script could copy an "01_flash.igb" from a subdirectory, overwriting the one in "actors".
This version of 01_flash would just have one animation, called "power_7", and the animation would play when called (I hope).
The next power used might be power 6, that runs a script to copy in the "power_6" version of 01_flash, and so on.
Whatever animation is required by a power, the script copies in the version of 01_flash which contains that power.
It's pretty simple, and worked for models in the mandarin script. I think it might work for powers.
I'll try a proof of concept test tomorrow.
In fact, this could be used for existing animation sets too. You could just overwrite 01_flash with a renamed 07_captainamerica or 01_wolverine or whatever had the animation you wanted.
If it does in fact work. Big if.
Title: Re: Modding Rundown: Animations
Post by: BLaw on September 27, 2012, 04:45PM
Big if.

QuoteOK walk me through as though I'm an idiot, one step at a time.
We are exporting one animation at a time, exporting to files called "01_flush.igb" "01_flesh.igb" etc.? - YES
A different animation in each one, with a different animation name;"power_2", "idle" etc. put in the "animation name" field in "actor editor" each time, yes?YES

The filename has to be found in each skeleton aswell. In this case, we have for example three skeletons:

- 01_flash
- 01_flesh
- 01_flush

Flash is the name of the character. So you'd have to hexedit the three files and insert "01_flash" because THAT is the file that we normally want to contain multiple animations but the exporter does not allow it (as stated in the alchemy documents).

Fortunately, the game depends on internal numbering and internal names. Short story: we give each file that we named differently the same internal name.

HOWEVER, the problem is: what in the world do we need to change into the internal name???

For skins it's "igActor01Appearance". For animations, I do not know. It might be "igActor01AnimationDB", but it ain't "igActor01Animation"  because it's the name of our animation.

Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 27, 2012, 05:03PM
Quick check of my script idea reveals two hurdles:
1. the mandarin code used "setskin" not copying.
2. I think you have to restart to load a new set of anims.

Maybe editing the herostat on the fly to look for different anims would work better?
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 27, 2012, 05:34PM
Back to your idea, I've looked in a hex editor at Blades anim files.
Each has "01_blade" or "01_blade_4_combat" entries, as you'd expect.
They also have "01_blade_skel" or "01_blade_4_combat_skel".
Now, looking in one of my "only one anim works" exports in the finalizer we find "igActor01Skeleton", and this is actually a name, so in the file where I named an actor "01_flash" theres an "01_flashSkeleton".

Also potentially interesting, under the "animationList: igAnimationList" section in finalizer, we have "_tracklist:igAnimationTracklist".
And elsewhere I see "igAnimationCombiner" which is what our plug-in doesn't do, but maybe the exporter can, if the plug-in script were altered?

Anyway, sleep now..
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 28, 2012, 05:11AM
Fun with Finalizer, part one.
So, I export an 01_flash.igb.
It contains 4 bipeds, linked to igActors 1-4, each with its own animation name (menu_idle, menu_goodbye, walk run).
It also contains a 5th igActor called 01_flash, which has an animation name of 01_flash. No particular reason for this in this experiment, but it is in there, anyway.
The export only plays menu_idle in-game.

Now, if I open up 01_flash.igb in the finalizer, this is what I see (expanded view to the right, with arrows to show what I've expanded):
(http://i15.photobucket.com/albums/a384/tommyboy2002/01_flash_finalizer1_zps7d1b8147.jpg)
We can see our 5 actors(igActor01 to 04 and 01_flash), and our 5 animation databases ("menu_idleDB", etc).
The expanded view on the right looks at whats in one of our 5 actors and one of our 5 animDBs.
Note the structures present in Actorinfo, and after the "=" my comments and ideas:
name= self evident
_actorList= again seems pretty obvious
_animation database= seems to link directly to the "igAnimationDatabase" entry, as you might expect. More on this presently..
_combinerList:igAnimationCombinerList(1 object) = Ooo! Interesting. This is what our plug in in Max cannot do. Note for later...
_appearanceList = I think this is to do with textures and lighting effects. I don't think it pertains to animations at all.

Now the structures of IgAnimationDatabase, AKA the good stuff. Again my comments and ideas follow the "=" :
_name= self evident
_resolve State:true= no idea
_skeletonList= links/leads to "igActor04Skeleton" which in turn has a list of all the biped bones in that skeleton.
_animationList:igAnimationList(1 object): that 1 object is of course "menu_idle". If you right click on this and select "edit object fields" you can see "igDataList::_count" with "1" in the field,
and "igDataList::_Capacity" with "1" in the field. I've edited the "capacity" to "10" and it doesnt seem to mind. Editing the "count" gets you a crash to desktop, so maybe dont do that for now.. I've saved the "capcity=10" version and it plays exactly the same in game, so now I have an anim file with an animation list with a larger capacity. My goal is to get those other animations in the file into that list, somehow.
_skinList= dunno links/leads to the actor, then the biped and light linked to the actor. No idea if its significant to us.
_appearanceList= dunno again
_combinerList:igAnimationCombinerList(0 object)= Ooo! again. A right click>edit fields on this can get you a "capacity" of 10 if you like, but dont edit the "count" unless you want a ctd at this point.

So, lots of exciting and intriguing stuff there, though I dont really understand much of it.
Now lets divert our attention to the other view available in finalizer, a kind of "schematic" view, if you will:
(http://i15.photobucket.com/albums/a384/tommyboy2002/01_flash_finalizer2_zpsf7a4f6c4.jpg)
In this pic we can see our scene root and all our actors, with a couple having their views expanded to show the nodes beneath.
Following the chain down gets you to the biped bones which are linked to each actor, which is of little interest to me presently.
One thing I thought might be worth trying is right-click on the igTransforms them selves and you get a menu, one of choices therein is "move item to new parent".
I did this for all the igTransforms making the 01_flash one the "parent" of them all, then saved, hoping this might get the anims of each to be read as part of the animationList of 01_flash. It did not work.
But maybe something like this will. Or editing one of the fields in this view or the pictured first "tree view" can get us to somehow link our other animations with the one working one.
Or figuring out the "combineList", if that is what we need.
The point is, with the finalizer we/I can fiddle about with the file till we get one of those other animations to work too, and its a bit easier to see what we are doing than hex-editing, and a bit easier to understand than random blind trials in Max.

Not that I'm dismissing your other idea of 01_flesh etc, but have had no luck there and thought maybe looking at the file would reveal where we can put the "01_flash" label you think we require to get the anims read by the game. The big advantage of doing that in the finalizer is unlike a hex editor, you can alter the length of names without it ruining the file.

More when I have more...


Title: Re: Modding Rundown: Animations
Post by: BLaw on September 28, 2012, 05:53AM
Well 01_flash is shorter than any entry. The problem still remains: what do we have to change into 01_flash. And will it work or not.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 28, 2012, 07:12AM
OK this IS interesting.
I do my standard "menu_idle" works export.
It works in-game, and I see the menu_idle animation, etc.
I then open up the 01_flash.igb in the finalizer and edit the "igActorInfo("igActor04") > "_animationDatabase:igAnimationDatabase("menu_idleDB") sub-entry to read "runDB" instead.
I save and run the game.
He's still doing menu_idle, not run.
So I open the file up again and edit the sub-entry "igActorInfo("igActor04") >"_animationDatabase:igAnimationDatabase("menu_idleDB") > "_animationList:igAnimationList(1 object)" > "igAnimation("menu_idle")" to read "run", and save.
This time he does the animation as a run not a menu idle.
So this tells us the "whateverDB" entry is not used by the game to figure out when to play the animation, the "igAnimation("whatever") is the one that does that.

So since the "_animationDatabase:igAnimationDatabase("menu_idleDB") is not doing anything, maybe there is our "01_flash" point.
EDIT: nope, either that's the wrong spot, or the concept is flawed.
Well, theres a few other places to try it, so I will, as I fiddle about trying to understand the inner workings..

And a bit more light is shed:
if in the "schematic" view, I delete "igTransform:igActor04" and all it's descendents entirely, the menu_idle still plays. So that view seems to largely deal with the "scenegraph", I think, ie the actual objects and textures in the scene.
In the "tree view", the "igTransform:igActor04" and sub-entries is now gone from the "igSceneInfo("Scene Graph")" entry, as you might expect.
Worth knowing that although connected in some ways, the "schematic view" seems to not affect the "igAnimationDatabase" stuff we want to play with.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 28, 2012, 07:39AM
Oh, and if I make no changes at all in Max, just export the igb, all the "object pointer" numbers (the 0x0115a444 type numbers at the end of entries) change, and change every time, as far as I can see.
Heres two exported without change about 30 seconds apart:
(http://i15.photobucket.com/albums/a384/tommyboy2002/01_flash_finalizer3_zps7ad5ab68.jpg)
Bear in mind thats the exact same 01_flash.igb.
Now whether the changes are because system memory shifts and changes on my pc as programmes run and do stuff, or maybe the exporter just randomly jumbles stuff up. I dunno.
Here's two identical exports in the hex editor:
(http://i15.photobucket.com/albums/a384/tommyboy2002/01_flash_finalizer4_zps35d59a49.jpg)

So that explains perhaps why so often examining files in a hex editor it seems really difficult to find similarities.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 28, 2012, 11:13AM
Well, you can't say I haven't made a start:
(http://i15.photobucket.com/albums/a384/tommyboy2002/mua_actor_editor_zpsf485c5c5.jpg)
It's effectively non-functional at the moment, but I'm learning as I go, so maybe in the next few days.....
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 29, 2012, 05:27AM
Still working on the actor editor script. I've now got to a point where I can create an actor from an selected object which does not appear in the actor rollout. Unfortunately it doesnt yet appear in my "actor2" rollout either. It also has no animation attached to it and has different properties in the finalizer. But it's still a sort of half-step forwards.
Anyway, I'm not here to post about just that:

I stripped my default export down to just 2 bipeds and 2 actors to keep it as simple as possible for when I'm trawling through the export in finalizer or a hex editor.
No geometry or lights, just 2 actors, 2 bipeds, exporting 2 animations only one of which the game plays.
Anyway, the default playing animation remains that of "menu_idle".
But today I find that by editing "igActorInfo("igActor04") > "_combinerList;igAnimationCombinerList(1 object)" > "igAnimationCombiner("combiner_igActor04")" and change "igActor04" to "igActor03" it now plays the 03 anim, the "run" during "menu_idle" anims!.
To clarify, the "combinerList" seems to assign the actual actor whose animations get played, the "animationList" assigns the in-game animation name.
So if I set "animationList" = menu_idle and "combinerList" = actor04(which is the "menu_idle" anim in my export) then in-game my "menu_idle" anim plays in the menus
If I set "animationList" = run and "combinerList" = actor04(which is the "menu_idle" anim in my export) then in-game my "menu_idle" anim plays when running
If I set "animationList" = menu_idle and "combinerList" = actor03(which is the "run" anim in my export) then in-game my "run" anim plays in the menus
If I set "animationList" = run and "combinerList" = actor03(which is the "run" anim in my export) then in-game my "run" anim plays when running

And bear in mind the "combinerList" appears under "igActorInfo" where it has "1 object", and is not the same as the "combinerList" which appears under "igAnimationDatabase".
The one under "igAnimationDatabase" has "0 object", which is possibly something we want to change, though as yet I'm not sure how. Simply editing the fields available in finalizer allows only altering "capacity" which seems to do little, or "count" which continues to CTD the finalizer.

God, how I wish I could open up just one of the games animations in the finalizer, it would clarify the structure so much..
True, it's still only one anim playing, but I'm starting to figure out what does what, and be able to list it all.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 29, 2012, 06:23AM
Trying a parallel, slightly different approach to the actor editor script:
(http://i15.photobucket.com/albums/a384/tommyboy2002/mua_actor_editor2_zpsa79d3c40.jpg)

The other one I'm trying tries to add a second Actor to the rollout in the hopes that it too gets exported along with the original one. Somehow. But I'm not sure that approach makes much sense. We are already exporting other actors and their animations, but they just aren't "seen" by the game.

So I started thinking about maybe only one actor but it has multiple animations attached. Somehow.
Getting the extra fields for the other 2 anims is relatively easy, and as you can see above, you can enter animation names all you like, but only the top one gets exported, theres no sign of the other 2 in the export. So far.
More when I know more...
Edit: although the second and third animation names seen in the above pic make no appearance in the finalizer (that i've found so far), they ARE in the igb, visible in a hex editor. So that's something...


I should add that it does occur to me that it's maybe a limitation of the igb exporter DLL (or dlu or dle) rather than the scripts, but that's even more of a black box. I mean, I can disassemble it easily enough, but reading raw assembly code is a wee bit beyond me, I'm afraid..
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 29, 2012, 07:05AM
OK, I found my added "animation names" in the finalizer.
They are under a "igHashedUserInfo("igActor01") entry/node/thing, in the scenegraph info, pretty far away from where I want them.
(http://i15.photobucket.com/albums/a384/tommyboy2002/mua_actor_editor3_zps6b902d6c.jpg)
Now with my other Actor Editor attempt at adding a second actor, the weird actors I could create also showed up as "igHashedUserInfo" something or others, rather than the standard "igActors".
What this means, I'm not sure yet.
It's good news in the sense that I'm actively adding new stuff to exports via my edited Actor editors, and that stuff shows up in the finalizer and hex editor.
It's slightly less good news in that my additions dont seem to be in a "proper" format, and don't alter how the animations work in-game at all.
If I actually knew what I was doing here, I might be able to do this more quickly or know if it even can be done. But we are where we are.

Title: Re: Modding Rundown: Animations
Post by: BLaw on September 29, 2012, 07:52AM
Quote from: thetommyboy2002 on September 29, 2012, 06:23AM
Trying a parallel, slightly different approach to the actor editor script:
(http://i15.photobucket.com/albums/a384/tommyboy2002/mua_actor_editor2_zpsa79d3c40.jpg)

The other one I'm trying tries to add a second Actor to the rollout in the hopes that it too gets exported along with the original one. Somehow. But I'm not sure that approach makes much sense. We are already exporting other actors and their animations, but they just aren't "seen" by the game.

So I started thinking about maybe only one actor but it has multiple animations attached. Somehow.
Getting the extra fields for the other 2 anims is relatively easy, and as you can see above, you can enter animation names all you like, but only the top one gets exported, theres no sign of the other 2 in the export. So far.
More when I know more...
Edit: although the second and third animation names seen in the above pic make no appearance in the finalizer (that i've found so far), they ARE in the igb, visible in a hex editor. So that's something...


I should add that it does occur to me that it's maybe a limitation of the igb exporter DLL (or dlu or dle) rather than the scripts, but that's even more of a black box. I mean, I can disassemble it easily enough, but reading raw assembly code is a wee bit beyond me, I'm afraid..
]

I tried it already. Its a DLL limitation.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 29, 2012, 08:19AM
Quote from: BLaw on September 29, 2012, 07:52AM
]

I tried it already. Its a DLL limitation.

You seem very certain about that, and I'm curious as to where that certainty comes from.
Have you disassembled the dll and read it's contents?
Seems to me I'm exporting extra stuff via editing this script, not via altering the dll, so I'm going to pursue this for a while, unless you have some sort of proof to back up your assertion that it's definitely the dll which lacks the ability to export more than one animation.
And I really cannot see how you can possibly know that, no offence, since we dont even know what the set-up for exporting multiple animations is.
We dont know if it involves note-tracks, or stipulating a frame range, or multiple actors, or multiple bipeds.
All we know is that we have not done it yet, and do not know how it's done.
And that was the position on "how to export models" till we found out how to, and also the position on "how to export a single animation" till we found out how to.

I'm not saying that you are wrong, the documentations seems to be saying what you are saying ie "combining animations is beyond the scope of this plug-in".
But the documentation also tells us we can export bump-maps and gloss maps, and that hasn't actually worked in the game, so I'm thinking there may still be wriggle room. (Hoping, more accurately.)
Title: Re: Modding Rundown: Animations
Post by: BLaw on September 29, 2012, 10:14AM
Quote from: thetommyboy2002 on September 29, 2012, 08:19AM
You seem very certain about that, and I'm curious as to where that certainty comes from.
Have you disassembled the dll and read it's contents?
Seems to me I'm exporting extra stuff via editing this script, not via altering the dll, so I'm going to pursue this for a while, unless you have some sort of proof to back up your assertion that it's definitely the dll which lacks the ability to export more than one animation.
And I really cannot see how you can possibly know that, no offence, since we dont even know what the set-up for exporting multiple animations is.
We dont know if it involves note-tracks, or stipulating a frame range, or multiple actors, or multiple bipeds.
All we know is that we have not done it yet, and do not know how it's done.
And that was the position on "how to export models" till we found out how to, and also the position on "how to export a single animation" till we found out how to.

I'm not saying that you are wrong, the documentations seems to be saying what you are saying ie "combining animations is beyond the scope of this plug-in".
But the documentation also tells us we can export bump-maps and gloss maps, and that hasn't actually worked in the game, so I'm thinking there may still be wriggle room. (Hoping, more accurately.)


What else it could be? I've tried editting the scripts to make the exporter show what you tried in the screenshot I quoted before. Exact same stuff. You cannot define animations elsewhere, nor can you link animations to 1 database, because THAT is exactly what the exporter is missing. And the documents even state it.
Title: Re: Modding Rundown: Animations
Post by: BLaw on September 29, 2012, 10:16AM
Quote from: BLaw on September 29, 2012, 10:14AM
What else it could be? I've tried editting the scripts to make the exporter show what you tried in the screenshot I quoted before. Exact same stuff. You cannot define animations elsewhere, nor can you link animations to 1 database, because THAT is exactly what the exporter is missing. And the documents even state it.

Another idea I had, which could be a temporary solution, is to build animations IN skins. I believe we did that before and it did show up. Which will cause us to:

- Enter a skinswap code into the powerstyle file to swap out the current skin for the skin containing the animation
- Enter a fightmove code that will play the animation.

I haven't tried this out yet. But it might work..
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 29, 2012, 10:41AM
Quote from: BLaw on September 29, 2012, 10:14AM
What else it could be?
It could be the dll, but it could be whole bunch of other things too.
There are more ways to fail to export than there are to do so successfully.
And again, because we have no information on how to set up Max to export multiple animations in one file for igb it seems more than likely that we just aren't doing something right.
I'm certainly not ruling out that the dll is the stumbling block, and I can certainly understand not wanting to waste a lot of time and effort on what may be something we simply cannot do with the tools at our disposal.

Quote from: BLaw on September 29, 2012, 10:14AM
I've tried editing the scripts to make the exporter show what you tried in the screenshot I quoted before. Exact same stuff. You cannot define animations elsewhere, nor can you link animations to 1 database, because THAT is exactly what the exporter is missing. And the documents even state it.
The documents state:"Operations such as changing skins, combining animations, and other features of the Alchemy animation system are out of the scope of this plug-in: the actor editor simply creates one igActor from the scene."
Now, as I've said before, we don't know if "combining animations" in this context means "exporting multiple animations in one file", or if it means "add "idle" to "run" to create a third, larger animation containing both".
But "out of the scope of this plug-in" is also ambivalent. Does "plug-in" refer to the "IGMax42Exporter.dle", (which after all, goes in the "plugins" directory of 3ds Max), or does it refer to the "Alchemy Utility.ms" itself, (since scripts can go in a "plugin scripts" directory)?
I think it's referring to the script. Look at it again, with my italicized emphasis:
"Operations such as changing skins, combining animations, and other features of the Alchemy animation system are out of the scope of this plug-in: the actor editor simply creates one igActor from the scene."

I'm definitely no where near certain that you are wrong but to me it seems more likely that a company would issue a cut-down version of their scripts than have a cut-down version of the dll.

Meh, if I'm wrong, I'm wrong. I should be finding out at some point in the next few days...

EDIT: I also forgot to quibble about how the docs say "the actor editor simply creates one igActor from the scene" when in fact it can create multiple actors from the scene, and export them all in one file. Maybe it means "only one actor seen by a game"..


Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 29, 2012, 10:43AM
Quote from: BLaw on September 29, 2012, 10:16AM
Another idea I had, which could be a temporary solution, is to build animations IN skins. I believe we did that before and it did show up. Which will cause us to:

- Enter a skinswap code into the powerstyle file to swap out the current skin for the skin containing the animation
- Enter a fightmove code that will play the animation.

I haven't tried this out yet. But it might work..
Another cool idea that might work.
The only thing I can think against it is the built-in anims dont play in-game as a rule, they only play in the menu.
But hey, it's got to be worth a shot to try it out..
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 29, 2012, 12:03PM
Here's a list, comparing the entries found in a small mua animation file with one of my single-anim, export-anim-only files:
In MUA file 32_kang.igb:       In my animation only exports:
 
InfoList                   InfoList
SkinList                  SkinList
AnimationDatabase            AnimationDatabase
SkeletonList                SkeletonList
AnimationList               AnimationList
AppearanceList               AppearanceList
AnimationCombinerList         AnimationCombinerList

Object                    Object
NamedObject                 NamedObject
DirEntry                   DirEntry
ObjectDirEntry                ObjectDirEntry
                        MemoryDirEntry
                        ExternalDirEntry
ExternalImageEntry             ExternalImageEntry
ExternalIndexedEntry          ExternalIndexedEntry
ExternalInfoEntry             ExternalInfoEntry
DataList                   DataList
ObjectList                   ObjectList
                        NodeList
                        Node
                        Group
                        ModelViewMatrixBoneSelect
SkeletonList                SkeletonList
Info                      Info    
AnimationDatabase             AnimationDatabase
AnimationList                AnimationList
SkinList                   SkinList
AppearanceList                AppearanceList
AnimationCombinerList          AnimationCombinerList
InfoList                  InfoList
                        Skin
                        SkeletonBoneInfo
                        AnimationHierachy
                        Skeleton
                        AnimationBinding
                        AnimationTrack
                        AnimationTRansitionDefinitionList
                        AnimationTracklist
                        AnimationBindingList
                        Animation
                        LongList
                        QuaternionfList
                        TransformSource
                        TransformSequence
                        TransformSequence1_5


As you can see, there is nothing in the mua file that is not also in my export, and a bunch of stuff in the export which is not in the mua file.
Some of the stuff in the mua file I'm starting to work out what it is, and what it does, and some is pretty self evident.
It should be mentioned that theres a lot I haven't transcribed, and though the mua stuff is in the order it appears, (including those that appear twice like SkeletonList), the ones from my export are not in the order in which they occur.
Since that order seems pretty much random, it may not mean much.
Also note all entries were originally prefixed by "ig" I just didn't bother writing it out.

So there are a mere 18 entries in the mua file, and we already know what some are or seem to do.
I may try to list and break down each in turn in the hope of getting a better understanding of what is in there..

Title: Re: Modding Rundown: Animations
Post by: BLaw on September 30, 2012, 05:12AM
A second and similar idea.

- Put animation inside skinfile
- Create an idle fightmove node
- Create custom playanim script containing the name of the custom anim
- runscript through the node

Fourth skeleton will not be accepted but, a skin is automaticly loaded by the game. So, it should be available of we run the acript.
Title: Re: Modding Rundown: Animations
Post by: thetommyboy2002 on September 30, 2012, 10:36AM
Quote from: Marvintage on September 30, 2012, 05:12AM
A second and similar idea.

- Put animation inside skinfile
- Create an idle fightmove node
- Create custom playanim script containing the name of the custom anim
- runscript through the node

Fourth skeleton will not be accepted but, a skin is automaticly loaded by the game. So, it should be available of we run the acript.

I really should be trying some of these ideas out, but I'm just neck deep in trying to get the probably-cant-be-made-to-work animations done.

I'm flitting between about four approaches:
1.rewrite the scripts- so far no joy
2.edit the export in finalizer/hex editor- no go as yet
3. decode the igb to understand whats what- some progress but quite slow going
4. trying every possible combination of things in 3ds max- not good, but am ruling out a lot of stuff.

As part of 4. I'm trying to link my 2 actors to a dummy, in the vain hope that they "somehow" get treated as equals, rather than being exported in an order which means only one works.
Now normally, Actor02 is the one that gets to work, and Actor01 is the bridesmaid.
But, if when I link them to the dummy I click Actor01 first, then Actor02 (holding down CTL to allow multiple selection) and then link to the dummy and export, now Actor01 is the dominant one whose animation is played.
Looking at the "tree view" in the finalizer, the Actor nearest the top is always the one whose anim gets played, and sure enough, my linking oddity swaps them around.
Now, one of the things I've been intrigued by is this arbitrary choosing of one Actor over another, so maybe this can point me towards understanding it a bit better..

EDIT: well, not much more understanding, but I can definitely control which Actor is the dominant, animation playing one in the export, simply determined by the order in which I link them to the dummy. Link Actor02 first, it's top dog. Link actor01 first, and it is the big cheese, the head honcho, numero uno, the grand poobah.
Bear in mind both get linked, so looking at either the schematic view in Max, or in Finalizer they appear to be equal under the dummy, but clearly the order of linking gets stored in the file and determines which Actor is exported as "active" as far as the game is concerned.
EDIT2: Indeed, you need not even link all the actors. If you have a 3 actor 3 biped scenario, and link only one of the Actors to the dummy, whichever one you link becomes the top Actor. It's probably no more complex or mysterious than whatever last gets changed gets written last, but I'm still intrigued by the possibility that there may be something here I can use...

Title: Re: Modding Rundown: Animations
Post by: BLaw on October 31, 2014, 10:16PM
Bump.

The day has finally come to say: custom animations are not limited.

My Director Fury mod has a nifty dummy in there which allows his van and buff effects to spawn in the correct spot without too much hassle. The van is animated. So I had an epiphany: what if I tried my animated mannequins in the dummy.

I already gave the spoiler alert in the first sentence, but yes, it works.

This basically means that you can have any and all self-made animation you want with the use of boltons and a dummy on a custom model.

There, said it. Should've been discovered years ago, but better late than never I guess.

Oh and one more idea I had which no doubt works:
With a custom model containing such a dummy, you can put in the herostat the codes to hide the body (provided it's a skinsegment) in the menuonly, and have an animation skin version attached to the dummy in the menu only. My point is: having a looping menu idle without having to use or sacrifice a third skeleton.

That's all for today.
Title: Re: Modding Rundown: Animations
Post by: BLaw on October 31, 2014, 10:23PM
Want proof? Alright.

Notice that Fury is standing in the same spot, but the Brood wolverine is not having the same pose.

(https://www.mediafire.com/convkey/5bf0/fi9jhi8nwi1ca3p6g.jpg)


(https://www.mediafire.com/convkey/d52b/a8q7ysy32llibxa6g.jpg)
Title: Re: Modding Rundown: Animations
Post by: nikita488 on February 24, 2019, 10:18AM
Now it's possible to combine animations in one animation database after Alchemy 5 Kit was leaked.
Download and install Alchemy 5 kit from here (http://marvelmods.com/forum/index.php/topic,10489.msg193870.html#new)

How to do that:
1. Export your actor in T-Pose as IGB file (for example actor.igb)
2. Animate your actor and export as IGB file (for example menu_action.igb)
3. Repeat Second step for all of your animations.
4. Open IGB file with animation in sgFinalizer and navigate to igAnimationDatabase->_animationList->igAnimation
5. Click RMB->Edit object fields and change Object name from "defaultAnimation" to something that MUA will understand (for example "menu_action")
6. Save file
7. Repeat 4-6 steps for every animation
8. Download Combiner (https://drive.google.com/open?id=1ZXPgiKcZetSeT-KiUZm0t2UtazFl15_q) scripts and unpack somewhere.
9. Change combine.txt file (i provided example in archive, too lazy to explain it right now, but you should pretty much understand how to edit it).
10. Run combine.bat file. You just created animation database that can be used in MUA.
Don't forget to change IGB version of this file via Hex Editor (Go to offset 2C, change from 09 to 08 and save).
Title: Re: Modding Rundown: Animations
Post by: Teancum on February 24, 2019, 12:18PM
Well done! Wish this worked in XML2 as well.
Title: Re: Modding Rundown: Animations
Post by: andersonbrazil on February 24, 2019, 12:30PM
Amazing!
I'll try this when I have time.
The Alchemy 5 pack, for me here, works only in the max 8 version. I would like to use it in max 2010, however when I instal the alchemy 5, it only recognizes the max 8. Anyone have any idea how to solve this?
Title: Re: Modding Rundown: Animations
Post by: nikita488 on February 24, 2019, 12:46PM
Quote from: Teancum on February 24, 2019, 12:18PM
Well done! Wish this worked in XML2 as well.
I can't test this right now, but i'm pretty sure if we change IGB Version via Hex Editor to the one that XML2 use, it will work.
Title: Re: Modding Rundown: Animations
Post by: LarsAlexandersson on February 24, 2019, 05:11PM
Mama mia, thanks. XD
Title: Re: Modding Rundown: Animations
Post by: Kaiko on February 25, 2019, 05:32AM
Quote from: andersonbrazil on February 24, 2019, 12:30PM
Amazing!
I'll try this when I have time.
The Alchemy 5 pack, for me here, works only in the max 8 version. I would like to use it in max 2010, however when I instal the alchemy 5, it only recognizes the max 8. Anyone have any idea how to solve this?

You have to install it your self.

First install A5
Then install the plugin by find where you but A C:\ most likely and then find export files and max scripts read the README files to find out where to place the plugin.
Title: Re: Modding Rundown: Animations
Post by: BaconWizard17 on February 25, 2019, 10:56PM
I’m sure the chances are minimal, but how possible is it for this to work with X-Men Legends II?

--See last page (Teancum)
Title: Re: Modding Rundown: Animations
Post by: UltraMegaMagnus on April 07, 2019, 03:51AM
Edit, BIP01 mustb e placed at Z 41.89 and foot bone touching ground.

Just wanted to share some info discovered with the precious help of Nikita488, Andersonbrazil & KingAdam about 3DS MAX 2010 & Alchemy 5 :

- For anyone making animation, always have the mesh & the biped bone facing you in the "Right View in viewport", because if you put the mesh+bones facing another direction, the animation won't face you in game.
Do this for converted skin just in case.

- We can't move igactor with 3DS MAX 2010 & Alchemy 5, igactor should be at xyz:000 to avoid jump issue I think, igactor automatically set to to pivot point of mesh I think, so if you put a pivot point for ALL mesh AND BEFORE USING SKIN MODIFIER to xyz:000, igactor should automatically set to the same location.
Never set pivot point after using skin modifier, or the model will be screwed in game.
I recommend doing this for the model you will use to create animation just in case.

- Don't use physique for converted model, because the model will start at bip01 after export, cutting in half the model in game.
Use only skin modifier, add all bones and you are set.

- Always tick in the exporter "merge skin" option, if you don't the model will be cut in half, I don't remember exactly what Nikita488 said about that, it is to make only one actor, instead of having actor for all mesh in the scene.

- If you imported a max file from 3DS MAX 4 or 5, I recommend deleting skin modifier and re-using skin from 3DS MAX 2010 to avoid potential issue.

- Don't use iglod in export dialog, even if the dialog looks like the igactor dialog from old Alchemy, it is not and will probably causes issues.
When exporting, the only setting you really need is the backface culling & merge tick option, no need to create a selection with the mesh like with old Alchemy.

- Don't need to color swap textures
Title: Re: Modding Rundown: Animations
Post by: defogexa on June 01, 2020, 12:04PM
Quote from: nikita488 on February 24, 2019, 10:18AM
Now it's possible to combine animations in one animation database after Alchemy 5 Kit was leaked.
Download and install Alchemy 5 kit from here (http://marvelmods.com/forum/index.php/topic,10489.msg193870.html#new)

How to do that:
1. Export your actor in T-Pose as IGB file (for example actor.igb)
2. Animate your actor and export as IGB file (for example menu_action.igb)
3. Repeat Second step for all of your animations.
4. Open IGB file with animation in sgFinalizer and navigate to igAnimationDatabase->_animationList->igAnimation
5. Click RMB->Edit object fields and change Object name from "defaultAnimation" to something that MUA will understand (for example "menu_action")
6. Save file
7. Repeat 4-6 steps for every animation
8. Download Combiner (https://drive.google.com/open?id=1ZXPgiKcZetSeT-KiUZm0t2UtazFl15_q) scripts and unpack somewhere.
9. Change combine.txt file (i provided example in archive, too lazy to explain it right now, but you should pretty much understand how to edit it).
10. Run combine.bat file. You just created animation database that can be used in MUA.
Don't forget to change IGB version of this file via Hex Editor (Go to offset 2C, change from 09 to 08 and save).

Sorry for necroing, but nikita488's combiner and Alchemy 5 (I haven't tried it with other versions) are usable as an extractor to pluck individual animations out of any animation set (not just 3), rename them however you want, and mix them together back into a single clean animation set.

Hopefully it works for everyone else, but I've been able to pull from basically any .igb in the Actors folder, including npc's. The basic character .igb, combat, fightstyles, interacts, you name it, and it also works with XML2 animations. Besides tweaking animation sets to suit my preferences, I've also been using this for general housekeeping in my mods, since this removes the need to juggle animation names around the hex length.

You can download what I've been using here. (https://www.mediafire.com/file/lahf8it8alm965h/combine_+_extract.rar/file)
The batch files are still nikita488's, just one renamed for clarity. And all I added to the scripts is pre-populated them with a set of common animations for convenience, added removal lines during extraction to fix bugs related to animations stacking within each other, and included fighter_default so the animations properly inherit the motion bone.

To Extract:

To Combine:
It is now ready to be copied into the Actors folder.

For future consideration, I'd like to streamline the scripts, or maybe someone who actually knows programming can help. They're very inelegant since I brute-forced my way through this. (A couple things I've tried: Animation Producer will happily "extract" non-existing animations, and some animations have a file size as small as an empty animation.)

Maybe with more experiments with Animation Producer's commands (I haven't been able to use many with success), we might be able to extract animations such that they can be easily previewed in the Alchemy Viewer, or convert them to other forms (I've been trying .fbx) usable in modeling programs for splicing/editing.
Title: Re: Modding Rundown: Animations
Post by: VsaintJ on August 31, 2020, 12:00PM
I kinda feel like this thread should be exploding with interest. Did something not work?
Title: Re: Modding Rundown: Animations
Post by: BaconWizard17 on August 31, 2020, 01:35PM
This has mostly been discussed on our Discord server. I highly recommend joining that to stay up to date on discussions.

As for actual implementations, not many mods have used this method yet. Most people are accustomed to using existing animation sets, especially since mixing animation sets is a bit more technical. Ultra's Batman Beyond is the only mod I know that's used it at all
Title: Re: Modding Rundown: Animations
Post by: ak2yny on February 01, 2021, 12:53PM
Quote from: BaconWizard17 on August 31, 2020, 01:35PM
This has mostly been discussed on our Discord server. I highly recommend joining that to stay up to date on discussions.

As for actual implementations, not many mods have used this method yet. Most people are accustomed to using existing animation sets, especially since mixing animation sets is a bit more technical. Ultra's Batman Beyond is the only mod I know that's used it at all

It's been published at Discord already - there's important knowledge and new tools about animations.

In an effort to remove the need of expert knowledge from animation mixing, I created, with the help of several other modders, an easy to use version of the extract and combine tool (https://marvelmods.com/forum/index.php/topic,10969.msg200476.html#msg200476).
Credits for it go to:
- Vicarious Visions (https://www.vvisions.com/) for the creation of the tool.
- KingAdam85 (https://marvelmods.com/forum/index.php/topic,10489.html) for the discovery of Alchemy 5, which includes the tool.
- nikita488 (https://marvelmods.com/forum/index.php/topic,236.msg193875.html#msg193875) for discovering the tool itself, plus it's functionality.
- defogexa (https://marvelmods.com/forum/index.php/topic,236.msg198916.html#msg198916) for creating the first batch tools and making animation mixing possible for us.

Update: The functions of "_extractOnly.bat" have been included in "_extract.bat". The former has been removed.

Animation mixing is now as easy as 1, 2, 3, i.e. extract, mix, combine:
1) Copy animation sets into a folder with "_extract.bat" and "_animations.txt" and execute the bat. (extracts all igb's in the folder)
2) Mix animations by moving and renaming the extracted igb's.
3) Copy the moved and renamed igb's into a folder with "_combine.bat" and "_fightstyle_default" and execute the bat. (combines all igb's in the folder)

More information can be found in the ReadMe. You don't have do deal with any "combine.txt" or "extract.txt" anymore. The tools are still compatible with old and custom "combine.txt" and "extract.txt" though.

I hope that modders start using it, especially since we have more modders among us who know how to export custom animations. A detailed tutorial about that is on the way as well. Meanwhile, we can learn from UltraMegaMagnus' great video tutorials how to import animations from fbx (https://www.youtube.com/watch?v=PvFkGP4vDYo&t=2m16s) and how to export animations to igb (https://www.youtube.com/watch?v=txgZFBtDIzY&t=2m22s).
We can also learn from the great pioneers in animation modding, thetommyboy2002 and BLaw, how to set up our Alchemy exporter in 3dsMax 5 for exporting animations:
Quote from: thetommyboy2002 on September 27, 2012, 12:13PM
Right, in order to ensure I don't need to experiment next time I come back in 3 years, heres some step by step with pics type instructions:
Their efforts were crucial for discoveries about custom animations, but because Alchemy 2.5 was not able to mix/combine animations, nobody ever really started to export custom animations back then.




Some more knowledge about animations:

I realized that something important is missing (even missing in Outsider's guide): Animation names to be used in powerstyles. Those are not equal to animation names in the files or even animation names with "ea" prefixes. The powerstyle names can be found in shared_anims and there you can see what names in the files equal what names in the powerstyles.
This spreadsheet (https://docs.google.com/spreadsheets/d/1uio2EmI3szi10yTR_3IteSpPWSBjdWuv6v0WVaAlfds/edit?usp=sharing) aims to help finding the right names for powerstyles and animation sets repectively.
I am guessing (am not certain yet) that there are internal animations (in the exe) and external animations, hence the "ea" prefixes. It could refer to actual animations, or just animation names, since there are a few animation names that aren't in any powerstyles, fightstyles or shared databases (menu_kowned is such an exaple). Internal animations don't have a powerstyle name or such, but use the file animation names directly.
We can't add any custom animation names to those: We're limited to the internal animations (presumeably all found in the exe, when searched with a hex-editor), and external animations, which can be found in data/shared_anims.xmlb. (Thanks to MrKablamm0fish for testing this).

One important note from Outsider's guide:
Quote from: Outsider on September 16, 2019, 08:55PM
[...] don't pick a female animation [...] if your character is male [...]




Quote from: nikita488 on February 24, 2019, 12:46PM
I can't test this right now, but i'm pretty sure if we change IGB Version via Hex Editor to the one that XML2 use, it will work.

Custom animations definitely don't work on XML2. Thank you for testing, Fr3ddy.
How it has been tested: Use XML2 animaion sets only; use an XML2 animation set to replace "_fightstyle_default" when combining; Change offset 2C to 06 (04 has been tested as well).
Title: Re: Modding Rundown: Animations
Post by: BaconWizard17 on February 02, 2021, 02:15PM
I don't believe it will work to use these animations on XML2. A lot changed between the engine used for XML2 and the engine used for MUA1.
Title: Re: Modding Rundown: Animations
Post by: ak2yny on February 03, 2021, 04:54PM
Quote from: BaconWizard17 on February 02, 2021, 02:15PM
I don't believe it will work to use these animations on XML2. A lot changed between the engine used for XML2 and the engine used for MUA1.

You are right. Fr3ddy tested it and it's definitely not working. I updated the post.