Trying to build a world, but I need singular poses that are solid.
I don’t need an idle animation or anything like that, just a solid pose. Does anyone know a method? I’ve tried duplicating after posing, etc.
Do you mean like a emote? If you could elaborate on this more maybe I could help you.
No, I need a solid pose. Like, as if it were a statue. It remains like that forever, not an animation.
Cause I used to use the Animation Editor to make statues but now I can’t duplicate the model to get that animation frame.
Is there any other method of posing R15 models as easily as the animation editor allows?
I mean, that would probably be a stupid way of doing it, but can you just run the animation while play testing, then hit Pause at the right moment and then copy the pose model?
You might be able to use that character creator plugin, and anchor the parts.
You could try manually setting the CFrame of each part in the model by selecting the relevant part in the explorer and copying its values, then putting them into another duplicate model. You’ll need a plugin or the command bar to do this, though.
There is a cumbersome, manual option of this sort: You can open the animation editor, go to the frame of the animation you want to capture, drag the current animation “dummy” character to ServerStorage, close the animation editor, delete all the Rig attachments and joint Motor6D from the dummy, anchor the body parts, and finally drag the dummy back to Workspace. If you don’t remove the attachments with Rig in the name, the character will get re-rigged and reset to default platform standing pose.
The reason you can’t just copy paste poses from animating characters easily, is that the animation system sets the joint Motor6D.Transform property, which is ephemeral and not stored anywhere (like things that are not Archivable).
I don’t do this. I make player statues with a script. I make a copy of the character I want to pose into a statue, save the animation I want to take the pose from using the Animation Editor (so it ends up as KeyframeSequence in Dummy->AnimSaves), and then I use this utility script I wrote to copy a selected Keyframe onto the character:
--[[
AllYourBlox 2017 - Statue Util - Apply animation Keyframe to a copy of a player avatar in the workspace
1. Select avatar character model (e.g. a copy of your avatar you copy-pasted into the workspace from play solo)
2. Select Keyframe object (A Keyframe object from an animation saved from the Animation Editor, e.g. Dummy->AnimSaves->KeyframeSequence->Keyframe)
3. Run this script
--]]
local RunService = game:GetService("RunService")
local Selection = game:GetService("Selection")
local selectedThings = Selection:Get()
local char = nil
local kf = nil
if selectedThings and #selectedThings >= 2 then
for _,child in pairs(selectedThings) do
if not kf and child:IsA("Keyframe") then
kf = child
end
if not char and child:IsA("Model") then
char = child
end
if kf and char then
break
end
end
end
if kf and char then
for _,pose in pairs(kf:GetDescendants()) do
if pose:IsA("Pose") then
local bodyPart = char:FindFirstChild(pose.Name)
if bodyPart then
local joint = bodyPart:FindFirstChildOfClass("Motor6D")
if joint then
joint.C1 = joint.C1 * pose.CFrame:Inverse()
end
end
end
end
wait()
for _,bodyPart in pairs(char:GetChildren()) do
print(bodyPart.Name)
if bodyPart:IsA("MeshPart") or bodyPart.Name == "Head" then
bodyPart.Anchored = true
local joint = bodyPart:FindFirstChildOfClass("Motor6D")
if joint then
joint:Destroy()
end
for _,att in pairs(bodyPart:GetChildren()) do
if att:IsA("Attachment") and string.find(att.Name,"Rig") then
att:Destroy()
end
end
end
end
else
if not char then
warn("There is no character model in the current selected items")
end
if not kf then
warn("There is no animation Keyframe object in the current selected items")
end
end
Just set the pose in the animator, then with the animation editor open, close studio and publish the file. When you reopen the place, the model should be stuck in the pose
A long time ago I created a module to Create statues of characters and have them posed nicely using a single Keyframe animation. I just updated that so that it works again if you want to take a look.
Here is the code for applying a single keyframe to a character, it’s similar to the code that @AllYourBlox posted earlier but it might be a bit easier to see how the Keyframe is being applied to the character. You can test it out by copying an R15 character into workspace and changing the PosedCharacterName.
local CharacterToPose = workspace:WaitForChild("PosedCharacterName")
local PoseAnimationId = "http://www.roblox.com/asset/?id=532421348"
local KeyframeSequenceProvider = game:GetService("KeyframeSequenceProvider")
local KeyframeSequence = KeyframeSequenceProvider:GetKeyframeSequenceAsync(PoseAnimationId)
local PoseKeyframe = KeyframeSequence:GetKeyframes()[1]
local function applyPose(character, poseKeyframe)
local function getJointBetween(part0, part1)
for _, obj in pairs(part1:GetChildren()) do
if obj:IsA("Motor6D") and obj.Part0 == part0 then
return obj
end
end
end
local function recurApplyPoses(parentPose, poseObject)
if parentPose then
local joint = getJointBetween(character[parentPose.Name], character[poseObject.Name])
joint.C1 = joint.C1 * poseObject.CFrame:inverse()
end
for _, subPose in pairs(poseObject:GetSubPoses()) do
recurApplyPoses(poseObject, subPose)
end
end
for _, poseObj in pairs(poseKeyframe:GetPoses()) do
recurApplyPoses(nil, poseObj)
end
end
applyPose(CharacterToPose, PoseKeyframe)