Free R15 IKPF System (Inverse Kinematics Procedural Footplanting)

I don’t know where to find them, but I know they exist.

1 Like

Yes, but you need to understand the math behind IK in order to.

1 Like

its bug i guess when i play when 2 person the leg is gone crazy

1 Like

Can you show me a video of this? Feel free to upload it to streamable or YouTube so that you don’t worry about file size.

1 Like

idk what just happened the leg was folding infront looks scary so here Desktop 2021.07.08 - 12.56.50.01

1 Like

Interesting. Did you change any settings?

3 Likes

nope i didnt change any single things

1 Like

Does it apply in-engine? And, did it only happen once?

2 Likes

I don’t know the name of this behavior but this is the reason why that happens

Putting tuples in a tuple takes only the first element of every tuple except the last tuple where it uses the whole thing, for example

local function returnTuple()
	return 1, 2, 3, 4, 5
end
print(returnTuple(), returnTuple(), returnTuple())
--prints :  1 1 1 2 3 4 5

On line 175 of the IK module there is this line

RaycastParameters.FilterDescendantsInstances = {unpack(Mod),unpack(ParamBlacklist)}

Where mod is the list of characters

This results in only one of the characters animating properly, as the rest have their raycasts hit themselves instead of the ground.

local tableOne = {1,2,3}
local tableTwo = {4,5}
print({table.unpack(tableOne), table.unpack(tableTwo)})
--prints {1 4 5}
5 Likes

Sup. Love the module, and I’m experiencing the exact same issue. Same bug criteria (only happens in multiplayer), and it’s an issue with the leg going dolphin.

To answer your questions, it happens every time, and an issue both on studio and in-game.

However, taking what GrimDarkLord7 helped me fix the issue. Hope this helps!

2 Likes

For anyone not able to do what @GrimDarkLord7 was referring to. Here is an example of how to fix the issue. On line 163 in the IK module change the function to this.

function IK_HANDLER.UpdateRaycastBlacklist(Blacklist)	
	local FilterList = {}
	
	if Blacklist and type(Blacklist) == "table" then
		--ParamBlacklist = Blacklist
		FilterList = Blacklist
	end
	
	--local Mod = {}
	for self,_ in pairs(IK_HANDLER.ActiveInstances) do
		if self.Character then
			--table.insert(Mod, self.Character)
			table.insert(FilterList, self.Character)
		end
	end
	
	RaycastParameters.FilterDescendantsInstances = FilterList --{unpack(Mod),unpack(ParamBlacklist)}
end
6 Likes

can you guys make it R6 please

1 Like

As what iGottic said

altough i found a resource for an R6 IK but im not sure if it works now

https://www.roblox.com/games/367789063/foot-planting-for-everyone111

2 Likes

Thank you for posting this. I do have some slight issues with the footplant because its technically one more joint in the ankle. The 2 joint looks good at first but it seems a bit lacking when the foot goes inside the part. Do you know if there might be a solution as to push up the foot. It looks fine on flat plane but on stairs when one foot is elevated higher, there is a notable change as it does not take account to the foot size but only the lowerleg endpoint

image

4 Likes

So what I realized was that the hip and ground positions were derived from a variable. I pushed the points to allign with any characters height and position. I supressed the variables underneath and it seemed to be working fine for a moment. The problem now is that it seems one of the legs (left leg) are making a larger circle than the right leg even though the hip and ground positions of left and right legs are mirrored as shown in the gif.

--local RightHipCFrame = CFrame.new(0.5, -0.4, 0)--CFrame.new(0.5, -0.4, 0) -- The self.RightRotationAngle-hip reference CFrame, relative to the RightUpperLeg position
--local LeftHipCFrame = CFrame.new(-0.5, -0.4, 0) --CFrame.new(-0.5, -0.4, 0) -- The self.LeftRotationAngle-hip reference CFrame, relative to the LeftUpperLeg position
--local RightHipCFrame2 = CFrame.new(0.5,-2.7,0)
--local LeftHipCFrame2 = CFrame.new(-0.5,-2.7,0)

ezgif.com-gif-maker (8)

The second issue is to get the smooth cycles (evenly spaced out movements) shown in the post from @dthecoolest. To compare my walking cycle is speeding up at different points and slowing down at other points during the truncated circle movment. Is there a way to get evenly spaced out circular movement?

ezgif.com-gif-maker (9)

Here is what I changed in the code: This refers to the right leg, but the exact same thing was done for left leg. The change belows takes into account the character sizes of bodyparts.

before

--(RIGHT LEG)
local hip = (rootcf*RightHipCFrame).Position
local ground = (rootcf*RightHipCFrame2).Position

(RIGHT LEG)
after


local down = -rootcf.upVector
local rSY = self.HumanoidRootPart.Size.Y/2 -- half of root size y
local rSX = self.HumanoidRootPart.Size.X/2 -- half of root size x
			
			
local RightUpperLeg = self.Character.RightUpperLeg
local rootpos = Vector3.new(RightUpperLeg.Position.X,rootcf.p.y,RightUpperLeg.Position.Z)
			
local hip = (rootpos + down*rSY) 
local legsize = self.Humanoid.HipHeight
local ground = (hip + down*legsize)
1 Like

the hands are animateable?bc im working on fps game

Im not very sure, but i believe they are animatable

im working on fe gun kit idk how to animate the rig

Well im not sure where is the rig because the resources isn’t mine, i just found it

ouh now i know it use r6 startercharacter and animate it and the character will follow