How to correctly rig & animate weapons?


#1

I’ve heard there are several ways to do it, but I have no idea which one is optimal for what I’m trying to achieve. Not to mention that I also lack experience.

Most people weld the weapon to an arm and animate the original character rig,
which in my opinion, doesn’t look very good.
That’s why I thought of rigging the weapon onto the original character rig.

My current rig (which animates just as expected!)

image

I know rigging it to the Right Arm might be stupid, but it’s logical considering most one-handed weapons reside in either the left, or right arm.
If what I’m doing is correct, which I doubt,
how would I have an animation work correctly on both the weapon and the player?
I was thinking of having two of the same animations play. One in the weapon and the other in the player.

I’m hoping to get to know of a better way to handle these things,
because I personally am not fond of the methods I’m currently aware of.

Thanks in advance!


#2

I’ve used this approach before and it works fairly well. Basically you would use GripPart as an invisible proxy part. You animate your character with the GripPart and then during gameplay you weld/connect the given weapon to the GripPart. You can also stick a weapon to the GripPart during the animating process so it’s visually simpler and more convenient to animate, however don’t forget to exclude the weapon from the rig. With this approach you can reuse the animation for other similar weapons. E.g. you might have a pistol animation and you would use it for all the different pistols in your game.

Also, don’t forget to disable BaseParts that shouldn’t be part of your animation such as the legs. I personally forget this quite often.

This is completely acceptable and I would highly recommend it. The weapon moves relative to the hand/arm that is holding it. Therefore the most logical connection for the weapon would be that hand or arm.

This depends on your weapon. What kind of weapon are you dealing with? If they are gun-related weapons the method I described above would be good enough. A weapon is a static object that doesn’t organically bend, so there is no need to animate the individual weapon. Usually you would only use some additional visual effects when shooting.

If you want to animate weapons that exist out of multiple parts (e.g. nun-chucks) then I would recommend adding some root part to the model and connecting that root part to the arm that is holding the weapon. That way it becomes part of the rig and you can animate both the player and the weapon within the same animation. However, with this approach you lose some of the reusability of the aforementioned approach because you no longer have a proxy part.


#3
Here's the rig I'm working with!

https://gyazo.com/54e979e4b5fcb0a6a048f373e513b027

I’m glad to hear I’m relatively close to what you would do.
So what you’re saying is make the GripPart into it’s own rig, and connect that to the player rig?
I’ll definitely try to work with this, so thanks!


#4

I’m sorry to bother you even further, but I’m hoping you’ve ran into this issue in the past and know a way to work around it:

Issue: Using easing styles animates legs without reason

https://gyazo.com/f9864b962445cee274ba6b9ae1d7d5e3

If you compare the two gifs I posted, you can definitely see the difference.
I changed nothing except for the easing style on the torso, which is “Cubic, InOut”
Also worth mentioning that other easing styles still affect the legs like this and it’s preventing me from smoothing out my animation.


#5

Can you give an example of what you have for a weapon animation? I think it the best answer for how to break up the animations (or whether to) for publishing could depend on how much the character and weapon movements need to sync up or interact. Something like fancy nun-chuck or bowstaff moves would probably be easiest as on animation for character and weapon together. But animations that are more independent, like firing a crossbow and the string/limbs moving, might be easiest to code as 2 animations. But, even if you separate the animations, you can still animate all the parts together first and just uncheck everything from the grip/handle down to publish the character animation, and invert this selection to publish the weapon animation.

For guns, I do what Partcline suggests, proxy handle(s). I also use a single prototypical weapon to represent each major class, based on how the weapon is held. For example, my prototype “rifle” really just sets the standard for where the hand holds are, and the resulting holding/aiming animations can be used for any rifle, shotgun, or crossbow that is held similar to a rifle. I make as many models fit the standard as I can.


#6

Unchecking everything also sounds like a very nifty way to work with this!
Thanks a bunch!

In response to your first question, I’ve already provided two gifs in my replies above.


#7

If someone has a better way, I’m all ears! Animation is certainly not my area of expertise. Also, I save my rbxl source files that have the dummy character with the AnimSaves, because when you publish an animation, anything unchecked is lost. I also discovered that if you have something animated at, say 60 fps (for example motion capture imported and published directly from Den_S’s importer), re-opening in the animation editor will resample it down to whatever the animation editor plugin default is set to, I think it’s 20 fps by default. Just something else to keep in mind if you animate outside of Studio.


#8

Do you know of any possible way to lower the framerate on a certain animation?


#9

In theory, yes. In practice, I haven’t tried to use the animation editor’s increment time and export-reimport resampling to reduce frame count. If you have something simple like a dance emote, with nice continuous movements and linear interpolation, it might down-sample well. But if the animation has specific keyframes with special easing types, labels, or deliberate discontinuities, I can easily imagine it not going well, and probably requiring reduction by hand.


#10

Alright, thank you. Definitely worth noting whenever I end up working with it.

On another topic, have you seen the post below my first reply to Zomebody?


It’s a pretty annoying behaviour on easing styles and I can’t smoothen out my animation due to it.


#11

I’m not sure exactly what’s going on there. I’d have to see keyframeSequence from AnimSaves to know what’s actually supposed to be standing completely still, since there are keyframes for the legs on that middle frame.


#12

For the breathing animation I had to move the torso up, which also moves the legs.
To keep the legs on the ground, I had to move them individually onto the ground.

I’ll send you the model so you could take a look at it, if that’s okay with you!
I appreciate the help.


#13

I think even with a move increment set, you can end up with things not exactly back where they came from. I confess at this point that when I’m making animations in Roblox, I very often use utility scripts that loop recursively over the keyframes in AnimSaves->KeyframeSequence and do things to “fix” the keyframe.CFrame values.


#14

I think it would be nice to have a feature in the new animation editor that lets you “lock” certain poses if that were to be the issue.
Preventing limbs from moving along with their parent would be quite useful for making more detailed idle poses.
It might be a bit too complicated, but I’m sure you understand what I’m getting at.


#15

Yeah, I know what you mean, and this needs an inverse kinematics solver to be a generally useful feature, otherwise you’re only adjusting gaps between parts, which not everyone wants to do. For a bobbing idle like your use case, what I’d personally want is to be able to lock the character’s feet and move the LowerTorso up and down and have the knees automatically bend a tiny bit in the natural direction. It’s less desirable to me to add a gap between the upper legs and lower torso.