Question - FPS Standart Arms + Animations...method?

I’m trying to learn some animation methods as I am primarily a programmer. What is the typical method of FPS Arm animation?

I have standart Arms. I have weapons. Do I combine the Arms + Weapon in my modeling software and then render them combined into an FBX animation? (Arms+Weapon = Weapon Model)…this method makes the most sense to me. All Arms+Weapon models are added to the FPSPlayer. Inactive models are disabled. Equipping X weapon enables the appropriate Model.

OR

Do you animate the Arms separately from the Weapons. Animate the weapons firing…and then Place them together in editor? I don’t see how this would work properly because there would be too many dependencies between animations involving frame syncing between two different animations (Gun firing + Arm recoiling)

Also, would state machine be used to handle the animations? (Mouse click = sets bIsFiring to true… bIsFiring sets to false on mouse release or on timer?)

The way I’ve done it in the past is to use the latter setup. Arms has just the arms + anims for all weapons, so your single arm mesh might have anims for firing different weapons. The arms mesh has a hand bone locator on it, which you can parent various weapon models to. The arms and weapons are both driven by a state machine that plays the firing animation and causes the weapon animation for muzzle flashes, shell ejections and the like. Basically adding a new weapon is then about adding a weapon mesh and making sure you have the available anims for firing and have arm animations for that weapon (reload, firing recoil etc). I guess the advantage to doing it that way is that you can simply reuse animations on the arms if you implement a new weapon and then have your animator add a specific animation later (so an MP5 animation might work for an AK47 or other sub-machinegun until you can get a specific one made).

I’m sure there’s some info on how valve setup the whole FPS arms rig in counterstrike somewhere. But anyway, thats what we did back in the day.

There are a lot of ways to do this “process” and the question really comes down to efficiency based on the expected foot print best served by using set ups that are common that other key engine features could be used.

In the case of UE4 it does make use of IK solutions as well as the ability to added custom sockets to bind any type of added on or accessory you wish so from a conservative side of things the best practice would be to do all of your core asset additions as stand alone which will give you the greatest amount of flexibility. Once you bind the hands to the weapon as a the above example then things do become a bit more difficult and by keeping things separate for now you can defer the need to do it this way at a later time when it makes more sense as part of your overall design goals.

The reason I take this approach is it keeps all of the core animations and required asset inside of a single design pathway where animation for both 1st and 3rd person can be developed at the same time and then once every thing is up and running it’s easy enough to fork and re-target as to needs.

I think the method that makes the most sense to me is the most straight forward one.

Unless there’s a good reason not to…I am going to combine the FPS arms + Weapon model in every animation. Animations can still be reused by removing the weapon portion of a model and importing a new weapon (such as different pistols) followed by tweaking the animation to fit the new weapon.

Where can I find a good set of rigged FPS arms? I found a full set of all rigged FPS arms from Battlefield 3, but obviously I couldn’t keep these for a final release. Ideally, I would like something somewhat basic that fits the theme of my game (civilian arms) and looks decent. Only problem I can see is that if I change FPS Arms, I dont think it would still possible to re-target arm animations onto a new set of arms.

WHAT IF… I make the animations together. Then export twice, once without the gun and once without the Arms. This would create separate arm and weapon animations that play insync.