Making a CFrame animation converter thing and ran into an issue,
The pose’s CFrame is different from the Motor6D joint’s C1.
I need a way to fix that but idk how
For reference, this is the Pose’s CFrame
And this is the Motor6D’s C1 (when in animattion editor)
They don’t match, any way I can convert Pose’s CFrame to Motor6D C1?
Any help is gladly appreciated!
Bumping. Really need help anyone
Pose CFrame is applied to Motor6D.Transform property from the documentation.
So you can rearrange the CFrame weld equation:
Below is related but different, the function converts Part1 CFrame, to .Transform given a set of Motor6D values.
So for your case you have pose CFrame which is .Transform
--Motor6D equation given from .Transform documentation
PartParent.CFrame * CParent * Transform == PartChild.CFrame * Child
--Is equivalent to:
--If Part0 is closest to the root part
Part0.CFrame * C0 * motor.Transform = part1.CFrame * C1
--Solve for Motor6D C1
--Apply part 1 CFrame inverse both sides of the equation
part1.CFrame:Inverse()*Part0.CFrame * C0 * motor.Transform = part1.CFrame:Inverse()* part1.CFrame * C1
--Cancel out the part1CFrame inverse
part1.CFrame:Inverse()*Part0.CFrame * C0 * motor.Transform = CFrame.new()* C1
--Remove CFrame.new() identity CFrame does not effect the end value
part1.CFrame:Inverse()*Part0.CFrame * C0 * motor.Transform = C1
--Therefore
C1 = part1.CFrame:Inverse()*Part0.CFrame * C0 * motor.Transform
1 Like