Call of Duty ViewModel tools.
Here is a brief overview of how the viewmodels work. I'm going to reference
the bar viewmodel file, so use that while reading this. I'm attaching the bar
viewmodel max file, all exported files and all other assets needed to get the
BAR viewmodel into Call of Duty.
What to do with the files
First, be sure that you have a valid installation of Call of Duty, and of the
Call of Duty tools.
This package contains several files, which should be placed in the correct
directories on your computer in order for them to work correctly. If you unzip
the archive into your Call of Duty\Tools directory, all the files should end up
in the correct place. In case they didn't, here is where they should be:
Xanim_viewmodel_example.gdt goes in Tools\xanim_export.
Xmodel_viewmodel_example.gdt goes in Tools\model_export.
Weaponsettings_mp_example goes in Tools\source_data.
All .XANIM_EXPORT files go in Tools\xanim_export\viewmodels\bar
All .XMODEL_EXPORT files and all .dds files go in
The bar_viewmodel.max and this doc file can go wherever you would like to put
them. If you want to be able to see the BAR's textures in Max, make sure that
you have the DDS material plugin installed, and tell Max to look for maps in
your Tools\model_export directory.
Now let's move onto the Max file. Please note that it was made using 3DS Max
5.1 and Character Studio 3.1, and most likely will not work with other
1. Tag_view Tag_view is basically the camera tag. This is
where your camera in max should be attached at all times, because this is where
the eyebone, or camera is in the game. This tag is never animated.
2. Tag_torso Tag_torso is the bone that controls ADS (aiming down
the site). This is only animated on frames 0-55. It doesn't have to stay 0-55
for future viewmodels, but since the first one was done like that, I just
stayed with that format. The only animations you need from the tag_torso would
be the ADS up and ADS down animations. Frames 1-14 in the bar viewmodel file
are the ADS down animation. 32-43 is the ADS up animation. When exporting ADS
up and down animations, you only need to export tag_view and tag_torso. The
tag_torso position will be applied to whatever full viewmodel animations are
playing. When creating the ADS up and down animation, you need to make sure
that tag_weapon is always in the exact some place relative to tag_torso. For
instance tag_weapon should be at the exact same place on frame 1 as it is on
frame 55, and the same in between. Make sure you have your interpolation set
to linear, so it's not anywhere else between those two frames.
3. Tag_weapon Tag_weapon is what the majority of the
animating is done on, except the hands. The weapon you're using is parented to
that, and the right and left hands are usually IK'ed to it. Be really careful
to make sure that all your animations start and end on a particular tag_weapon
position so you don't get any pops before or at the end of your animations.
4. L Hand Web, R Hand web, R Cuff, R Cuff01, R Wrist, R Wrist01
These are all objects you need in your scene when you are exporting, as
they assist in the physiqing process. If you get a viewmodel in game, and the
geometry is doing weird things like pinching, then there's a good chance its
cause one of these was not exported. However, none of these objects need to be
animated in most cases - they are set up to move automatically when you animate
the biped hands.
5. tag_flash This is at the end of the weapon, and tells the game
where the muzzle flash should go, along with any other information that needs
to know where the end of the weapon is.
6. tag_brass This tag is where shells eject. Point X the direction
you want them to come out.
7. mapped01, 02 The hands geometry.
8. h_rightarm, left The sleeves geometry.
9. The Biped The Character Studio biped provides the main skeleton
for our arms and hands. The biped must be called Bip01, as our animation
system uses bone names to match models and animations. The biped's root bone
(bip01) should be linked to tag_torso. The biped's hands are IK'ed to
tag_weapon, rather than linking tag_weapon to one of the hands. Generally we
hide the entire biped, except the arms from the upper arm down. Sometimes we
animate the clavicles as well, but we hide them again before export.
Note: If you want to see an exact listing of the bones in any .xanim_export or
.xmodel_export file, you can open the file in a text editor. The bones are
listed near the top of the file.
We export our base viewmodel model files to folders within
model_export/weapon_models/. When exporting this file you want to export all
the above objects, plus all the bones from the upper arms down, and the weapon
geometry with all of its tags. (When animating you can animate the clavicles
or any other part of the biped, just don't export them.) This is the model
file that is used for animating on that particular weapon. You're pretty much
exporting everything that you'll ever use in the viewmodels in this file.
2. viewmodel_bar This is the weapon you're using in the file. It
is every bone that is underneath tag_weapon. I usually set tag_weapon to the
origin in max (0x, 0y, 0z) and export it from there on frame 1.
3. exporting animations
When exporting animations export
everything you would export for the viewmodel_bar_animated file, minus
Assman (Asset Manager) Settings
Assman is where you will tell what animations are used for specific actions.
It's also where you set up the statistics and mathematic details about how a
weapon behaves. The best way to learn how to set things up, is finding an
existing weapon that behaves like the new one you are going to add. For
instance, if you're going to add a new bolt action rifle, you're going to want
to open up the kar98 in Assman and check out its variables.
Weaponsettings.gdt is the file that contains all of the viewmodel information.
Weaponsettings_mp.gdt is the multiplayer viewmodel information. The BAR is of
the type bulletweapon, in the top-left selection list.
gunModel this is where you would have weapon_bar. It's the weapon file
for the viewmodel. Keep in mind that the world models for weapons are
completely separate from viewmodels.
worldModel- this is where you select the worldmodel for the weapon that
is dropped when you kill a player, or just the model that is dropped in general
when you drop a weapon for any reason.
idleAnin- the viewmodel animation that is being played when the player
is not doing anything. In Call of Duty this is always just a single pose,
although you may want to put a whole animation in here (there's no guarantee
it'll play properly though). Make sure that the frame you export is exactly
like the pose that is at the beginning and end of every other viewmodel
animation for that weapon, or you'll get pops.
emptyIdleAnim- This is the animation that is played when you're all out
of bullets or ammo for your weapon. In most cases it will be the same as
idleAnim, but for grenades you need an animation where the grenade is
completely out of the view since you aren't actually holding anything anymore
if you run out of grenades.
fireAnim- animation played when you fire the weapon
lastShotAnim- This is the animation played on the last bullet in the
clip. On most weapons when you finish off a clip, the bolt stays back. So
instead of the regular fire animation that has the bolt go backwards and then
forwards quickly, or from the back position, forwards, and then back again, you
would have an animation of the bolt staying where it is.
rechamberAnim- This is the animation that will be played on bolt-action
rifles after everyshot except the last shot.
meleeAnim- Melee animation goes here.
reloadAnim- This is the reload animation that is played when the you
still have bullets in your clip or magazine.
reloadEmptyAnim- This is the reload animation that is played when the
clip or magazine is empty. The reload process for many weapons is different
depending on whether or not you finished off the clip/magazine or not.
reloadStartAnim- On bolt-action weapons like the springfield where you
insert single bullets, this is the beginning of the animation. The animation
usually consists of pulling the bolt back and inserting the first bullet. In
this viewmodel mode, after this animation is played, it will use whatever you
put in reloadAnim as a looping animation. So in the case of the springfield
you would have reloadStartAnim be an animation of pulling back the bolt,
inserting the first bullet, and then the loop would be played which is
reloadAnim. If you needed three bullets to fill up your weapon, the loop would
play twice. Remember you already inserted one bullet on the reloadStartAnim.
reloadEndAnim- To finish off the single bullet insert animation, you
need to push the bolt forwards. This is where you would have an animation of
pushing the bolt into position.
raiseAnim- This is the pulling out the weapon animation.
dropAnim- Putting the weapon away.
altDropAnim- Put the firing mode switch animations in both of these
fields. To have a weapon with an alternate fire, you will actually have two
viewmodels setup in AssMan. They will be very similar, but of course will have
different rates of fire. You need to set the altDropTime value to the length
of the firing mode switch animation, and set altRaiseTime to 0. Do that for
both viewmodels for that weapon. The BAR viewmodel, for example, switches
between fast and slow fire rates.
adsFireAnim- We have an alternate field for the ADS fire animation
because sometimes the regular firing animation doesn't work correctly while in
ADS. The most common problem is the amount of recoil looks too crazy when
aiming down the site. You usually have to tone down the recoil in the firing
animation, and export it for an ADS fire animation. Keep in mind, even though
this is called an adsFireAnim you export this just like the other animations
and not like the ADS up and down animations.
adsLastShotAnim- Same thing as adsFireAnim except for the last shot.
adsRechamberAnim- Same thing as adsFireAnim except for rechamber.
adsUpAnim- This is the animation of tag_torso going from the at the hip
position to ADS. Look under important objects on how to export this.
adsDownAnim- This is tag_torso going from the ADS position to the hip
position. Look under important objects on how to export this.
Some of the time values at the top of AssMan are confusing, but I'll do my best
to explain the aspects I understand.
reloadAmmoAdd- This is only applicable to bolt-action rifles. This is
the amount of ammo added each time the the reload loop is played. For instance
the enfield uses stripper clips, so it would be five. It would be one for the
reloadStartAdd- This is how many bullets are inserted when the
reloadStartAnim is played. The enfield would be five, and the springfield
reloadTime- length of the reload animation when clip or magazine isn't
reloadEmptyTime- length of animation when clip or magazine is emptied.
reloadAddTime- This is how far into the reload animation the ammo is
actually added. You would see how long into the animation it takes before the
new clip is inserted into the weapon.
fireTime- Length of the fire animation.
meleeTime- Length of melee animation.
rechamberTime- Length of rechamber animation.
rechamberBoltTime- This is the time in the rechamber animation that the
bolt is actually pulled out. It tells the shells when to eject.
dropTime- Length of the putting the weapon away animation.
raiseTime- Amount of time it takes to pull the weapon out.
There are many other values in the weaponsettings.gdt file, which control the
behavior of the weapon. There are settings for the recoil strength and
direction, the amount of bullet damage and the speed at which a player can run
while carrying the weapon and the animation set used by player models when
players carry this weapon. There are also settings for the hud icons, the
sounds and effects played by the weapon.