R6 Inverse Kinematics

i get what you mean and it is acheivable give me an hour to make something based off what i think you are trying to ahceive

1 Like

thank you so much for putting in the time to help me! also, isnt this IK supposed to simulate the second limb, so why is achieving this proving to be so tough?

Hello! i am extremely sorry for the very late response since i haven’t been active on devforums for a while. I’ll try to check out your problem in a bit but i can not promise a solution in near time due to activities i have to do, but if i do i will immidiately notify you.

1 Like

no problem and thanks a lot for this

edit: also what are some alternatives to reaching you if you arent active?

sorry, are you guys still active? i still need help as i have not been able to figure it out, but i understand if you are busy. thanks.

Hey, again sorry for the late response but is it possible that the animations currently playing on the characters arms effecting the IK? since this module does not support animations playing on it and it looks like on your video that the animation is playing.

yea the default animations are there, how do i disable it - should i just make my own animation without the arms and replace that in the Animate script?

edit: ill try that and let u know if it works

also do yk an r6ik module that works with animations?

no its not the problem - i replaced the animate script with just a dummy script and it still didn’t change anything

YEESSSS FINALLY OMG I FOUND IT I SPENT HOURS ON THIS
TO MAKE IT SIMULATE THE SECOND LIMB YOU JUST GOTTA CHANGE THIS CODE

	self.LeftUpperArmLength = 1
	self.LeftLowerArmLength = 1

	self.RightUpperArmLength = 1
	self.RightLowerArmLength = 1

TO THIS

	self.LeftUpperArmLength = 2
	self.LeftLowerArmLength = 2

	self.RightUpperArmLength = 2
	self.RightLowerArmLength = 2

thank you guys for the help

1 Like

how would you toggle this on and off, so the limbs behave normally again and vice versa

Thank you for this module! I’ve used this in my game for a footplanting system and I can’t say I’m disappointed.

7 Likes

Hello, just a little planned update towards this resource.
There are several features I plan to add onto this module, all of it which is listed here:

  1. Animation support
    I have seen some people having problems with the IK due to animations, to combat this problem I hope to add an override animation feature to the IK Module where it would override the animation playing to prioritize the IK.

  2. Possible torso following arms IK
    Or i could just call this Torso IK, this feature aims to “drag” the torso with the arms when trying to reach the target position. This can end up with a longer range for the character to do IK, I already have an idea of how this would work and have a prototype on the works. Although this feature would be optional if released.

  3. “End IK” that offsets the arms when aiming towards the target
    Quite hard for me to describe, but basically in the ends of each limbs there would be an attachment of an “End IK” where the IK will try to make sure to offset enough that that attachment will end up in the target position (I know it sounds very vague or not clear at all, but its basically the end point of the limb to touch the target)

HOWEVER, I can not promise to work and release these features in a near date. I have important matters in real life to do, so don’t try to bug me to work on this. I will try to work on these features whenever I can but don’t expect much.

2 Likes

About the animation support, please make it a toggle. as it would likely cause problems if your using something like a ragdoll script.

1 Like

Use poles

–extra characters blah blah blah

Hi, I really like what you’ve done. I’ve been trying for a few days to do something similar. Can you tell how you did it?

1 Like

Honestly, what I did was pretty hacky and I wouldn’t recommend it. BUT! I’m not one to dictate what you do.

First of all, I plant the feet if a torsoswing variable is bigger or smaller than 0 and it’s the sides turn.

local torsoSwing = 0
local side = false

-- You can do some wacky phase stuff to make this slower or faster with velocity.
torsoSwing = math.sin(tick())

if torsoSwing > 0 and side then
   side = not side
   -- Move your left foot here.
end

if torsoSwing < 0 and not side then
   side = not side
   -- Move your RIGHT* foot here.
end

Then, I lerp it. Pretty simple, but you may need to find a suitable amount to lerp the foot places by.

RlerpedFoot = RlerpedFoot:Lerp(rfplace, math.min(1/0.075*dt, 1))
LlerpedFoot = LlerpedFoot:Lerp(lfplace, math.min(1/0.075*dt, 1))

I then calculate a “raise” number, Pretty simple.

local raise = math.sin((RlerpedFoot - rfplace).magnitude/2)
local raise2 = math.sin((LlerpedFoot - lfplace).magnitude/2)

Then I move the legs with the IK module

ikFigure:LegIK("Right", RlerpedFoot + Vector3.new(0, (raise/2), 0))
ikFigure:LegIK("Left", LlerpedFoot + Vector3.new(0, (raise2/2), 0))

I’m not saying this is the best way to do this, it’s just the way I did it.

6 Likes

is there any current work arounds for the ik conflicting with animations

Set a joint’s transform to a blank CFrame if you want only IK on that specific joint.

does all of this go in a renderstepped or while loop ? also where does lfplace and rfplace come from

How did you even achieve the inverse kinematics for hands? With all that extending limbs