R6 IK + FK Blender Rig | V1.91

Hey yall!

I put together a cool R6 rig for animating in Blender and I figured I’d share it here for anyone who might find it useful since the amount of R6 rigs with both FK and IK on the DevForum are lacking, so I wanted to make the only one you’ll ever need.

It supports both IK (Inverse Kinematics) and FK (Forward Kinematics), and you can blend between them with sliders.

It has full support for animating tools and any props attached to the rig.


Stuff the rig can do
  • IK + FK support for arms and legs
  • Spine bone for more torso movement
  • Sliders to switch between IK/FK and Grabbing and Free move
  • Head follow: yet another slider makes the head look at a target object
  • Grab Points: For grabbing onto stuff like a door handle
  • Very intuitive torso rotation, with UpperTorso, Spine, and LowerTorso all contributing to their own movement
  • Intuitive arm rotation, with UpperArm, LowerArm, Shoulder, and Hand movement all contributing to their own movement just like the torso.
  • Camera follow: even one more slider to make the camera follow the head (good for POV stuff or cutscenes)

Separate system for loading characters with Anchor Points

Since the rig uses a custom AnchorPoint method to let you animate tools in blender, characters need to be a little different and have the anchor points built into the character, so this rig comes with a free module that you can put into your game that lets you load the needed parts and stuff into every players character.

This does not automatically load any characters, this simply has functions that you call in your own .CharacterLoaded connection

CharacterAnchorManager.rbxm (8.9 KB)

Example Script:
AnchorExample.rbxm (4.4 KB)

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local CharacterAnchors = require(ReplicatedStorage:WaitForChild("CharacterAnchorManager"))
-- local SwordTemplate = script:WaitForChild("Sword") :: BasePart

local function setup(player: Player, character: Model)
	local ok, err = pcall(function()
		local success, reason = CharacterAnchors:LoadCharacter(character)
		if not success then
			warn(`Failed to load for {player.Name}: {reason}`)
			return
		end
		
		--[[ -- Remove comment to make a sword appear on the RightHand anchor point
		local sword = SwordTemplate:Clone()
		sword.Parent = character
		
		local offset = CFrame.new(0, 0, -1.4) * CFrame.Angles(0, math.rad(-180), math.rad(-90))
		local attached, attachErr = CharacterAnchors:AttachItem(character, "ObjectAnchorPoint_RightHand", sword, offset)
		]]
	end)
end

local function setChar(player: Player, character: Model)
	character:WaitForChild("Humanoid")
	setup(player, character)
end

local function setPlr(player: Player)
	if player.Character then
		setup(player, player.Character)
	end

	player.CharacterAppearanceLoaded:Connect(function(character)
		setChar(player, character)
	end)
end

for _, plr in ipairs(Players:GetPlayers()) do
	setPlr(plr)
end

Players.PlayerAdded:Connect(setPlr)

Blender 5.0:
Blender_5_R6_Rig.blend (5.8 MB)

Blender 4.5.5 and below:
Blender_R6_Rig.blend (5.3 MB)

Roblox Studio:
Studio_R6_Rig.rbxm (18.3 KB)


Tutorials
Adding props/tools

Adding tools that the rig can hold is a straight-forward process, but it does require you to use the studio rig for animating.

When you’ve got the rig in blender, you can find AnchorPoints on the Torso, Hip, Thigh, and Hands, they look like blue, red, or white spheres with a hexagon in the middle (or whatever shape that is)

Make sure you’re not mistaking the GrabPoints for the AnchorPoints

Once you’ve located the AnchorPoints, you should import whatever tool you want to be animated, for this example I’m going to be using a sword.

Go into Roblox Studio and take your tool, then in the Explorer, right click on the instance and find Export Selection… under Save/Export

Then export your tool, it will be saved as an .obj file, put the file wherever you want on


In Blender with the R6 Rig open, go to File > Import > Wavefront (.obj)

Then select your tool in the popup and click Import, and your tool should appear nearby


If you don’t see your tool, you might have exported it far away from 0, 0, 0,
To fix this, simply right click anywhere with the object selected, then Set Origin > Geometry to Origin

Your tool should then appear right in the middle of the viewport world


Go ahead and move your tool to a position where it would normally be held or just anywhere on one of the AnchorPoints

Then select your tool and go to the constraint tab on the right of your screen, and click on Add Object Constraint and search for Child Of

Then set the Target to Armature or use the eye dropper tool to select the rig itself (make sure to select the rig and not the body part)

Then set the Bone option to whatever AnchorPoint you set the tool to (labeled as RightHand, LeftHand, RightHip, LeftHip, RightThigh, LeftThigh, FrontAnchor, BackAnchor.)
If the tool moves position or does something weird, make sure to click Set Inverse at the bottom of the constraint

Now your tool will follow the AnchorPoint you set it to.

You can now enter Pose Mode and animate how you do normally, and you can move the AnchorPoint you have set to the tool and the tool will follow it, assuming you set it up correctly.


Once you’ve got your animation, export it using the blender and roblox plugin that is needed to even export the rig. (if you don’t have the plugin, see my comment here: R6 IK + FK Blender Rig - #5 by Aeresei)

Then, head back to Roblox Studio

Before importing the animation into the rig, make sure you have the tool welded to the associated AnchorPoint you had in blender.

You can do this with the RigEdit Plus plugin (which was recently made free) or the Moon Animator Easy Weld to weld the sword to the anchor point, or you can simply add a WeldConstraint with the properties set to have it stay with the AnchorPoint

Make sure the tool is NOT anchored

Then, go ahead and import your animation onto the rig I provided with the same plugin I said above, and you should see the rig animated as well as the tool!


If you intend to use the props/tools to be animated for games, then you MUST use a module that I’ve created and attached to the post, which creates anchor points on every player that joins the game.

This does not automatically load any characters, this simply has functions that you call in your own .CharacterLoaded connection

The module is above the post in the “Separate system for loading characters with Anchor Points” dropdown


Exporting

Exporting the rig is extremely easy, however if you are animating tools/props, then you must use the special studio rig I have attached in the files above.


When you’ve got your animation, you’ll need to use a special plugin made by @CAUTlONED or its outdated version made by @Den_S, either work fine for this rig.

For this tutorial, I’ll be using the one made by Cautioned.


If you do not have either plugins installed, then you’ll need to do that.
To do that, first go here:
Blender rig exporter/animation importer - #1628 by CAUTlONED

Then here:
https://create.roblox.com/store/asset/16708835782/Blender-Animations-ultimate-edition

With your animation, you will need to click either “Export animation” or if you’re using the one by Cautioned, you can use “Export animation to file” or use the Live Sync server which exports the animation to Roblox as you animate, this tutorial will not cover Live Sync and will instead cover legacy exporting.

Then, in studio, you can use any R6 rig, whether you use the one I provided in this post or one just from the avatar loader that Roblox has, it doesn’t matter and either work.


If you’ve added a tool and animated said tool, then you must use the studio rig I have in order to see the item move when loading the animation, if you intend to use the animation of the tool in a game setting, then you will need to use the module script I have created for this exact thing, which loads characters with the Anchor Points, see “Separate system for loading characters with Anchor Points” above.


When you have your rig added, open the plugin of your choosing and select the rig, this will set the rig you have to be the main active rig.

Then, if you’ve exported through the normal “Export animation” button in the Blender plugin, then you should have a bunch of data copied to your clipboard, so click “Import Animation” in the Roblox plugin, and then press Ctrl+V, if nothing happens then you probably copied something between instances, so just re-export.

If you’re using the plugin by Cautioned and used “Export Animation to File” in blender, then you should have a .rbxanim file somewhere on your PC, simply click “Import Animation (file(s) bulk)”, then select the .rbxanim file that you’ve saved.

If you’re using 2.0+ of the plugin by Cautioned, then you can use Live Sync by connecting your blender to your studio via HTTPS service in the plugin, see Cautioneds GitHub here to learn how to use Live Sync properly: GitHub - Cautioned/Blender-Animations-Plugin: Addon for Roblox Blender Animation Importing and Exporting

From my experience, saving via file is better if you want to save your animation files since it’s faster and you get to keep the animation, however exporting through clipboard is good for one-time animations you don’t intend to edit in the future.

However, Live Sync is the fastest and most supportive, though I will not cover how to use it (see link above to Cautioned GitHub)


YouTube tutorial video coming soon!


Update 1.91:

  • Updated the blend file to work with Blender 5.0 and cleaned up the rig in some tiny little spots

(V2 of this rig will come with an R15 version, same rig, same style, just in R15, but way more intuitive than most of the other rigs you see on the DevForum)


This rig is NOT BEGINNER FRIENDLY, you need some knowledge with other Blender R6 rigs as well as general Blender knowledge, it doesn’t take a lot to learn the rig, however I highly recommend NOT using the rig if it’s your first Blender R6 rig, or if you just recently installed Blender.


Important Notes
  • You do NOT need the AnchorPoints for normal R6 animations, you can use any Roblox generated R6 rig, given it’s set-up properly (no weirdly rotated Motor6D’s)

  • This entire post’s point, which is the IK and FK rig, only works in blender, the studio rig does NOT have IK nor FK functionality, it is identical to a normal rig, thanks @gaigev2008 for suggesting to add this note

  • The rig was built on Blender 4.3, and has been tested on 4.1.#, 4.3.#, 4.4.#, and 4.5.# LTS and SHOULD work on higher versions in the future, if you’re on an older version, expect some things to not work properly like @Momiji_Dev’s issue, I’ll try and keep this rig updated constantly.

  • This WAS a personal project that I wouldn’t update a whole bunch but I kinda stopped doing that, so now it’s not really a personal project but I still really enjoy working on it

  • This is an extension and HEAVILY modified version of highflowy’s R6 IK Rig (this rig has no original work from that rig since I’ve rebuilt everything, but I’m still going to credit highflowy since I started with that rig), maybe they made it, maybe they didn’t, regardless this wouldn’t exist if not for their rig.


Common Mistakes
  • Attaching items and weapons to the GRAB points instead of the ANCHOR points, the Grab points do NOT export to roblox, they are there so you can lock the arms IK to follow global space instead of being relative to the torso/shoulder, the anchor points will export to Roblox and should be what you attach items and weapons to via Child Of constraints.

  • Trying to export “_PrimaryArmature” when done with an animation, make sure you are ALWAYS exporting “_Rig” and NOT “_PrimaryArmature”

  • Using Export Selection... to export shirt and pants UV images, this rig is built for the default Roblox shirt and pants template images and will not work with any images exported using Export Selection... in Roblox Studio.

  • Mistaking Pose Mode for Object Mode, you’d think this is obvious but I’ve gotten like 4 DMs with this as the issue.

  • Moving the armature/limbs in Object Mode, despite being able to move the entire rig easily in Object Mode, it’s not recommended if you plan to export the final animation to Roblox, since rigs won’t be in the same location as the animation.

  • Animating the MasterController normally, while yes you can do this, it isn’t a good idea when dealing with walking or stuff, since the master controller moves everything, you will not have foot-planting animations when animating walking or similar, the MasterController is there so that you can position the rig only once into it’s primary location, like a beginning spot.


If you make something cool with it you should post it here, I’d like to see what the other animators are doing

thinkin sword example metro man dance
goofy run
slidin


If you have any questions you can message me through discord or email, or you can put a comment under this post (I check DevForum frequently):

Discord: @distinguished_duccer
Email: dev@fancyduccportfolio.com

185 Likes

Thanks! It doesn’t work very well with multiple characters though.

4 Likes

Huh, that’s strange, it should work well with environments and rigs.
I’ll have to look into it

1 Like

So I made an animatio,n but how should I import it to roblox?

2 Likes

If you’ve got the correct Blender Animation plugin, then you should see a panel (hit N if you don’t see any) on the right of the viewport that looks like this:

If you don’t have it then you don’t have the Addon installed.

To install it, first go here:

and here:

You’ll need to follow the instructions precisely with blender and studio otherwise the plugin might not work as expected.

10 Likes

Hi! I was wondering how you could do this with multiple characters, as duplicating the rig’s collection seems to totally break it.

2 Likes

Okay I did a update to fix and add other stuff

  • Fixed duplicating the rig breaking stuff - you should be able to duplicate it as many times as you want now
  • Added Grabbing for arms (basically just normal IK but not influenced by torso movement)
  • Organized the dope sheet and graph editor and the outliner
1 Like

Thank you for updating this to fix some of the issues!! I was able to finish an attacking animation thanks to this fix!


8 Likes

absolutely fire :fire:

keep it up!

4 Likes

I love it.
I tested it and it is everything I could want. I have a few questions though.
Why did you not use any FK Switches for the legs.
And what are the grab points used for. Or how would you use them, I cant really see a use for them as they kinda work like the ik bones.
Also I want to add custom hilts for my weapons in game so that I can animate the “Handle”. If you dont mind would you mind sharing how I should add new bones?
I also noticed that the position of the bones isnt fixed its float values. So the right hand bones are like 1.5012134. instead of 1.5. is this intentional?
Thanks a lot.

Why did you not use any FK Switches for the legs.

The reason why is because this rig is a little bit… cursed? I guess?
Adding FK Switches to the legs is really difficult and not really important most of the time, though I could try again with it.

what are the grab points used for. Or how would you use them, I cant really see a use for them as they kinda work like the ik bones.

Grab points are in the name, they grab onto stuff that are solid, this is good for like, say holding onto a handle bar in the animation, or you could add a Child Of to each Grab Point that’s set to another rig’s arm to make a cool arm grabbing effect when being picked up (Seen in @Tarazicon’s animation above)

I want to add custom hilts for my weapons in game so that I can animate the “Handle”. If you dont mind would you mind sharing how I should add new bones?

I’ve ALWAYS had issues with adding new bones to the import and export blender plugin, I think it’s something to do with the _RigMeta and it not having data (like, if I wanted to add a bone, I think the _RigMeta would need changes somehow.)

I also noticed that the position of the bones isnt fixed its float values. So the right hand bones are like 1.5012134. instead of 1.5. is this intentional?

I’m pretty sure this is just blender being blender, but no, it’s not intentional but it shouldn’t effect the animation in any way.

2 Likes

I’ve ALWAYS had issues with adding new bones to the import and export blender plugin, I think it’s something to do with the _RigMeta and it not having data (like, if I wanted to add a bone, I think the _RigMeta would need changes somehow.)

I played around a little with the rig yesterday and I managed to add new bones.
The problem is the custom properties that imported rigs get when imported with the plugin. You cant replicate those.
And so I imported my custom r6 with a handle in each arm and redid the constraints to your rig. It would have maybe been possible to isolate the handles and add them to your rig and I did try but I failed.

Adding FK Switches to the legs is really difficult and not really important most of the time, though I could try again with it.

I guess thats true i’ve also never really used them. I’ll keep a look out though if you do manage to do it and update the rig.

Also here’s my edited rig with the 2 Handles, and it’s roblox file.
I added 2 parts to the r6 called Right/Left Hand and the bones for them are Right/Left Wrist.
If Anyone want to use it, usefull for animating Handles and reusing the animations for other weapons.
You weld your tools to the hand Parts by script and then animate. For blender you do child of.
You could say its R8, but normal R6 anims still work on it.
R8 Experimental.blend (5.6 MB)
RobloxR8Rig.rbxm (9.3 KB)

Aeresei, if you find these 2 files usefull you can put them alongside the original post.
Again thanks a lot for this rig. Saves me a lot of trouble of making one myself, especially when I have no idea how you did most of the stuff.

2 Likes

That’s funny, I just made an update to the rig after working on it since I responded to your questions
Here’s the update log:

  • Full IK + FK support for both arms and legs
  • Completely rebuilt the internal rig
  • Added item attachment points (like for tools or weapons) on the hands, thighs, hips, torso (front and back), and head
  • Cleaned up the outliner, dope sheet, and graph editor even more
  • Made custom rig for Roblox that uses all the new features and stuff
1 Like

Yeah xd.
Looked at it just know.
Ill use the one you edited. Has everything I need :D.
Thanks.

2 Likes

Oh I just saw the blend file has 2 problems. The text for the sliders is not parented to the sliders so it doesn’t follow the sliders. and the slider for the FK switch on the right arm doesnt work. Instead the left arm slider is connected to both.
And the right arm sliders are indexed as Left and vice versa.

2 Likes

Wow, I don’t even know how I missed that, thanks for telling me though. The rig should be fixed now and that should be the last update needed!

Wow this is super intuitive, maybe i’ll finally swap out my controller from 2023 lol. Thanks!

1 Like

R6.blend (4.9 MB)

I noticed the head and legs were crooked in their rest position due to a misalignment with the positioning of certain bones in the controller rig and misconfigured constraints, which caused inconsistent imports into studio. I’ve corrected the faults and tested the accuracy in this version so I’m just going to leave it here incase anyone wants to look at it.

2 Likes

I’m missing a lot of stuff that shouldn’t even be possible to miss lol.
I tried using your rig with the fix but the leg IK was behaving a little weird, and rather than trying to make it work I just applied it to the normal rig in the post ¯\(ツ)

But now the legs are actually aligned, as well as a few other tweaks with the legs, like I found out the legs are closer together than a normal rig, which isn’t big but it makes animations with leg accurate movement (like walking or running) look strange since the gap between the legs is smaller then in Blender than it is in Roblox.

Also the rig is happy now :v

Let me know if it’s still weird looking, the sun was in my eyes the entire time I was changing the rig and blinding me lol.

1 Like

how can i add props/tools to the rig?

1 Like