I’m trying to figure out how to apply an initial pose that I created in Blender to a skinned rig. When I uploaded the rig to Studio, I noticed that it contains a folder named “InitialPoses,” which contains CFrameValue instances. These are likely the bone position values of the pose.
When I load the rig to the ‘MoonAnimator’ plugin, bones are positioned the way they were before I created the pose. Is there a method to quickly apply the CFrame Values from the “InitialPoses” folder to the bones, or am I forced to replicate the pose in studio?
I have found a solution where I’m not sure if it works, so what I did was run this script in my commandbar (make sure to duplicate your current rig and test it on there)
local rig = workspace -- put your rig over here
local initialPoses = rig:FindFirstChild("InitialPoses")
local values = {
[1] = 'Original',
[2] = 'Composited',
[3] = 'Initial',
}
local target = 1 -- cycle through this to see if it's there
local rest = {}
for i, v in pairs(values) do
if (i == target) then continue end
table.insert(rest, v)
end
local function FindFirstDescendant(part: Instance, name: string)
for index, value in pairs(part:GetDescendants()) do
if (value.Name == name) then
return value
end
end
end
if initialPoses then
for _, pose in ipairs(initialPoses:GetChildren()) do
if (pose.Name:find(rest[1])) or (pose.Name:find(rest[2])) then continue end
local boneName = string.gsub(pose.Name, '_' .. values[target], '')
local bone = FindFirstDescendant(rig, boneName)
if not (bone) or not (bone:IsA("Bone")) then continue end
bone.CFrame = pose.Value
end
end
this script basically applies it to the bones, you just have to manually set the rig and change the targetNumber through 1 to 3 to see which of the 3 initial poses are yours.
For me this worked, but make sure to make a duplicate first as you might get the wrong one first as I have no clue what these names mean regarding the rig.