Modme Forums

Ported zombie model has weird running animation

Game Modding | Call of Duty: Black Ops 3 | Models & Animation


ModmeBot:

Thread By: jasonhuangz2002
hi guys,
I recently started to make a custom map in BO3 and i ported some zombie models from advanced warfare following uptownpapi25's tutorial vid and then made custom zombie variants following uptownpapi25's tutorial vid (i made zombie variants from the models ported from advanced warfare and zombie variants from models that was included in the black ops 3).

I compiled and ran my map. zombie variants made from models that was included in the black ops 3 was fine (normal running animations). zombie variants from the models ported from advanced warfare has a wierd running animation where the body is bent at a 90 degress angle forward at the waist.

Does anyone know how to fix this problem or has ran into this problem as well?


ModmeBot:

Reply By: mathfag
I have never ported from AW but my guess is that the zombies have a different bone structure (you'll get the same issue if you try to play zombie animations on the player models in maya and I'm guessing in game). Basically you'll also need to port anims and make a animation map table .ai_am in bo3/share/raw/animtables/custom_zombie.ai_am. Then assign the table in the archetype in APE. The rest should be able to stay the same as long as the first section in the file stays the same.

should look like this (nsz brutus ai_am)

STAYS THE SAME,NEW ANIMATION
STAYS THE SAME,NEW ANIMATION
anim_zombie_brutus_melee,brutus_swing
anim_zombie_brutus_death,brutus_death
anim_zombie_taunt,brutus_run


and of course add the anims in the zone file


ModmeBot:

Reply By: jasonhuangz2002
thanks mathfag

i looked everywhere is there a video tutorial on how to port anims and make a animation map table .ai_am in bo3/share/raw/animtables/custom_zombie.ai_am. and then assign the table in the archetype in APE?

if not would u mind walking me through it?

i have wraith, would i need maya for this?

thanks


ModmeBot:

Reply By: mathfag

jasonhuangz2002
thanks mathfag i looked everywhere is there a video tutorial on how to port anims and make a animation map table .ai_am in bo3/share/raw/animtables/custom_zombie.ai_am. and then assign the table in the archetype in APE? if not would u mind walking me through it? i have wraith, would i need maya for this? thanks


Idk if there are any videos, but based on the fact that you ported the models, I'll assume you have maya and codtools and seatools.
Open your model in maya and import the anim via seatools. Look if the anim plays correctly and export it via codtools.


To make a custom ai_am file copy the default zombie file and just change the anims. Leave the words before the first comma alone and replace the words after it


As you see some lines have more commas. The first one separates the alias from the anims, the rest of them just add anims.
anim_zombie_barricade_ad_m has 3 anims as you see from the second line.
So basically replace ai_zombie_base_walk_ad_win_trav_m_vl with your animation from APE
Also the file must start with the #


To use the ai_am add it here

replace zm_genesis_zombie.ai_am with your file.


ModmeBot:

Reply By: eDeK
I have exported from bo2 a "spawn/get up zombie anim", in APE the anim works fine but in what line i need add the "ai_zombie_traverse_ground_v2_walk_alta" inside my file ".ai_am"?
Or i need to do other thing...


ModmeBot:

Reply By: mathfag

eDeK
I have exported from bo2 a "spawn/get up zombie anim", in APE the anim works fine but in what line i need add the "ai_zombie_traverse_ground_v2_walk_alta" inside my file ".ai_am"? Or i need to do other thing...

any line. just look above


ModmeBot:

Reply By: eDeK
I added the anim "ai_zombie_traverse_ground_v2_walk_alta" in this line because you say dont care where:

anim_zombie_barricade_ad_l,ai_zombie_base_walk_ad_win_trav_l_v1,ai_zombie_traverse_ground_v2_walk_alta
I compile the map and the mod tools convert the anim, but the zombies dont use the anim to "Appear from the ground".
Im using:
zm_genesis_zombie.ai_bt
zm_genesis_zombie.ai_asm
zm_genesis_zombie.ai_ast

zm_genesis_zombie.ai_am


ModmeBot:

Reply By: mathfag

eDeK
I added the anim "ai_zombie_traverse_ground_v2_walk_alta" in this line because you say dont care where: anim_zombie_barricade_ad_l,ai_zombie_base_walk_ad_win_trav_l_v1,ai_zombie_traverse_ground_v2_walk_alta I compile the map and the mod tools convert the anim, but the zombies dont use the anim to "Appear from the ground". Im using: zm_genesis_zombie.ai_bt zm_genesis_zombie.ai_asm zm_genesis_zombie.ai_ast zm_genesis_zombie.ai_am

i meant
animation_alias,anim1,anim2,anim3
go on any line.

What is the zombie doing in your animation?

If it's the rise anim, it's defined in _zm_spawner.gsc line 3047
You can also define it with level.custom_riseanim as seen in line 3039


ModmeBot:

Reply By: eDeK
The anim:

https://www.twitch.tv/videos/338142398
My file "anim_zombie_ground_spawn.atr":
share\raw\animtrees

anim_zombie_ground_spawn
{ 
ai_zombie_traverse_ground_v2_walk_alta
}
My zone file:
rawfile,animtrees/anim_zombie_ground_spawn.atr 
xanim,ai_zombie_traverse_ground_v2_walk_alta
My "zm_genesis_zombie.ai_am":
In the botom of the file...

anim_zombie_ground,ai_zombie_traverse_ground_v2_walk_alta
void,void
My GSC:
#precache("xanim", "ai_zombie_traverse_ground_v2_walk_alta");

#using_animtree("anim_zombie_ground_spawn");
zm_spawner::do_zombie_rise( &dracula_spawn );
function dracula_spawn()
{        
    self endon("death");  

	self AnimScripted( "rise_anim", self.origin, self.angles, "ai_zombie_traverse_ground_v2_walk_alta" );

	self zombie_shared::DoNoteTracks( "rise_anim", &zombie_utility::handle_rise_notetracks, spot );        
}
What im forgetting or doing wrong?
Thanks for reply.


ModmeBot:

Reply By: mathfag

eDeK
The anim: https://www.twitch.tv/videos/338142398 My file "anim_zombie_ground_spawn.atr": share\raw\animtrees anim_zombie_ground_spawn { ai_zombie_traverse_ground_v2_walk_alta } My zone file: rawfile,animtrees/anim_zombie_ground_spawn.atr xanim,ai_zombie_traverse_ground_v2_walk_alta My "zm_genesis_zombie.ai_am": In the botom of the file... anim_zombie_ground,ai_zombie_traverse_ground_v2_walk_alta void,void My GSC: #precache("xanim", "ai_zombie_traverse_ground_v2_walk_alta"); #using_animtree("anim_zombie_ground_spawn"); zm_spawner::do_zombie_rise( &dracula_spawn ); function dracula_spawn() { self endon("death"); self AnimScripted( "rise_anim", self.origin, self.angles, "ai_zombie_traverse_ground_v2_walk_alta" ); self zombie_shared::DoNoteTracks( "rise_anim", &zombie_utility::handle_rise_notetracks, spot ); } What im forgetting or doing wrong? Thanks for reply.

Ditch the drakula_spawn function and add this somewhere in function main
level.custom_riseanim = %ai_zombie_traverse_ground_v2_walk_alta;
Never done risers before. I'll try it tomorrow, it's late now.
If it doesn't work put the anim in quotation marks instead of %

The code seems pretty solid (_zm_spawner.gsc lines 3037+)
if( isdefined( level.custom_riseanim ) )
	{
		self AnimScripted( "rise_anim", self.origin, spot.angles, level.custom_riseanim );	
	}
	else if( isdefined( level.custom_rise_func ) ) 
	{
		self [[ level.custom_rise_func ]]( spot );
	}		
	else
	{
		self AnimScripted( "rise_anim", self.origin, spot.angles, "ai_zombie_traverse_ground_climbout_fast" );		
	}


ModmeBot:

Reply By: eDeK
Thanks Mathfag, works perfect dude!

https://www.twitch.tv/videos/338580327
% = Crash the game

" " = Works perfect.
How can i do the risers use 3 or more anims to appear, i tried with this function but the risers only can use 2 anims:
function new_spawn()
{
	while(1)
	{
		
	    if( RandomInt( 100 ) > 52.3 )
        {
		    level.custom_riseanim = "ai_zombie_traverse_ground_v2_walk_alta";
	    }

	    else
	    {	    		
	        level.custom_riseanim = "ai_zombie_traverse_ground_climbout_fast";  
	    }

	    wait(1);
	}    
}


ModmeBot:

Reply By: Harry Bo21

function new_spawn()
{
	while( 1 )
	{
		n_random = RandomInt( 3 );
	    	if ( n_random == 0 )
        	{
		    level.custom_riseanim = "ai_zombie_traverse_ground_v2_walk_alta";
	   	}
		else if ( n_random == 1 )
	    	{	    		
	        	level.custom_riseanim = "ai_zombie_traverse_ground_climbout_fast";  
	    	}
		else
	    	{	    		
	        	level.custom_riseanim = "ai_zombie_traverse_ground_climbout_fast";  
	    	}

	    wait 1;
	}    
}


ModmeBot:

Reply By: eDeK
Thanks!