Improvements to Humanoid scaling


#1

Static Joints

As a developer, it’s difficult to use Humanoid scaling for rigs with static joints. For static joints, it’s convenient to use Welds/WeldConstraints, but I’m forced to use motors instead since Humanoid scaling does not work with static joints. This complicates something as simple as a WeldConstraint which encapsulates the joint into just Part0/Part1 into:

  • Unique names for each static part (so I can uniquely identify the attachments between them)
  • Lose the ability to distinguish between static/not joint (no way for me to tell whether to use weld or ballsocketconstraint for generated ragdoll since I can’t know if the joint is static or not)
  • Have to write code snippet to generate attachments for each part vs using Create > Weld ribbon tool

    local p0 = game.Selection:Get()[1]; for i,p1 in pairs(game.Selection:Get()) do if i > 1 then local attachment0 = Instance.new("Attachment", p0); local attachment1 = Instance.new("Attachment", p1); attachment1.CFrame = p1.CFrame:toObjectSpace(p0.CFrame); local name = p1.Name.."RigAttachment"; attachment0.Name = name; attachment1.Name = name end end

Proposed solution: Humanoid scaling should support Welds/WeldConstraints

Generating Rigging

As a developer, it’s difficult to debug issues with humanoid rigging because BuildRigFromAttachments does not give any feedback when I do something wrong. I’ve encountered a number of issues due to:

  • Forgetting to append “RigAttachment” to the attachments in my model
  • Forgetting to add a counterpart to the RootRigAttachment which broke everything down the chain because it stopped there
  • Weird behavior when I had accidentally created more than two attachments with the same name.

Proposed solution: Add warnings for:

  • Calling BuildRigFromAttachments on a model with no attachments ending in RigAttachment
  • A rig attachment missing a counterpart
  • There being more than two rig attachments with the same name

Modifying Rigging

As a developer, it’s difficult to modify a rig once its OriginalSize and OriginalPosition values have been generated. I have to manually delete each OriginalSize/OriginalPosition value object in the parts I’m modifying, usually I forget one, and then I have to make changes to it again since humanoid scaling reset it to the old values stored in OriginalSize / OriginalPosition.

Proposed solution: Method to re-generate OriginalSize/OriginalPosition values inside model.