Getting center of mass of a model

I am looking for a way to get a models center of mass depending on the weight and mass of each part inside of that model. Where should I start? I have already looked at other forum posts about this topic, and I cannot find a good solution. This is where I’m at so far.

local mass, num = {},0 
for i, v in pairs(workspace.Model:GetDescendants()) do 
    if v:IsA("BasePart") then 
1 Like

That’s something very hard to do, I would look on the Internet how to get the center of mass of an object, I’m not sure how you would implement it in @Roblox but it’s better than nothing…

1 Like

Do you think I could get the average position of each part and multiply them by mass?

Nobody else has responded to this so I’m posting it not even 100% sure if it’s right, but try this:

In the Pirate Island template; workspace.Cutter.qShipManager:291

local function GetCenterOfMass(Parts)
	--- Return's the world vector center of mass.
	-- Lots of help from Hippalectryon :D

	local TotalMass = 0
	local SumOfMasses =, 0, 0)

	for _, Part in pairs(Parts) do
		-- Part.BrickColor ="Bright yellow")
		TotalMass = TotalMass + Part:GetMass()
		SumOfMasses = SumOfMasses + Part:GetMass() * Part.Position

	-- print("Sum of masses: " .. tostring(SumOfMasses))
	-- print("Total mass:    " .. tostring(TotalMass))

	return SumOfMasses/TotalMass, TotalMass
1 Like

I’m sorry. I made a repost since I did not do a very good job explaining my issue in this post. (I ended up just coding my own script for it and it worked somehow) I will mark your post as a solution for anybody else who comes by though.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.