Constraints cause massless parts to add inertia to assemblies

RobloxStudioBeta_vp1F5XyviK
As you can see in the gif, the middle part has a constraint inside, which is affecting the inertia of the assembly.
Every part visible, except the grey ones, are Massless and thus should not affect mass or inertia.
This test is done with HingeConstraints, I have not tested other types yet.

Structures are as follows:

Left (Just a single part)

Middle hierarchy:
 WeldConstraint (Between Middle and Outer)
 Outer (Part)
  OuterAtt (Attachment)
  Inner (Part)
    InnerAtt (Attachment)
    HingeConstraint (Between OuterAtt and InnerAtt) - set to Motor ActuatorType

Right hierarchy:
 WeldConstraint (Between Right and Outer)
 Outer (Part)

I’ve attached a file so you can see for yourself, if you’re still confused:
weird.rbxl (60.3 KB)

Expected behavior

Massless parts should not affect inertia.

2 Likes

That’s unfortunate. I can imagine why it is happening, Roblox is calculating the inertia by distributing the mass over the complete volumes of the constrained parts (the most logical approach).

An interesting test to try would be to disable collision/touch/query on the welded parts (it may use that volume for the calc).

Is it the same if you add the weld at run time? Just wonering if it is smart enough to recalc inertia.

I haven’t studied the weld / part docs to see if this behaviour can be disabled.

Thanks for the report! It looks to me like the green block in the center is not welded to anything, but still marked as massless. This can be a little unintuitive, but when that’s the case, the massless designation is ignored, and the part still has mass (https://create.roblox.com/docs/reference/engine/classes/BasePart#Massless). A part can only be truly massless if it is welded to a part with mass, so that the massless part is not the assembly root part.