I have been trying to apply an IK module to a skinned mesh I have made and the only IK modules I have found are ones that use Motor6Ds which have very different properties to bones.
I eventually found one that doesn’t use Motor6Ds, specifically this one.
I modified the module a bit to make it work with my skinned mesh but when ever I run it I get this:
Here is the modified part of the module:
for i = #self.Positions, 1, -1 do
--self.Motors[i].WorldPosition = self.Positions[i]
if i ~= 3 then
--local dir = Vector3.new(b.x-self.Positions[i].x, b.x-self.Positions[i].y, b.z-self.Positions[i].z).Unit
--local position = basePos + Vector3.new(x*dir.X,y,x*dir.Y)
--part.CFrame = CFrame.new(position,b)
--print(CFrame.lookAt(self.Positions[i], self.Positions[i+1]))
self.Motors[i].WorldPosition = self.Positions[i]
--print(self.Positions[i+1])
var = CFrame.lookAt(self.Positions[i], self.Positions[i+1])
print(var)
--self.Motors[i].WorldOrientation = Vector3.new(var.LookVector, var.UpVector, var.RightVector)
self.Motors[i].WorldOrientation = var.LookVector*180
else
self.Motors[i].WorldCFrame = CFrame.new(self.Positions[i])
end
end
for i = #self.Positions, 1, -1 do
The length of self.Positions is 3 as the table contains the positions of the three bones. self.Motors
contains the actual bones.
The problem of this I believe is the CFrame.lookAt as for some reason when I set the WorldOrientation of the bone it does what is shown in the image but I am not sure how I would fix it.
Any help would be appreciated.