Skinned MeshParts are live!

Can confirm, happens on one of my games as well.

https://gyazo.com/76be02bbd7df9f287cf3b2104980202f

1 Like

Yep, Roblox you’ve changed/broken something with how the root bone on a skinned mesh works. It seems(?!) to be (double?!) transforming the root bone by the transform of the mesh part now? This completely screwed up a game I’m working on where I dynamically set the transform of every bone manually. What gives?

Could you guys make Lola with a school uniform or with a wedding dress?

Oooooh, thanks alot this is really cool. There is one problem though. Previously, when you would add a new skinned object to a rig it would automatically place the mesh visually and have it follow the model how its meant to, but now looking back in my place rigs where I added hair/clothing too after don’t have correct placement but the placement of their actual cframe (i think).

4 Likes

cool stuff, but why you have to show it on characters with Rthro? R15 blocky character would be better since it has loot more gaps.

@SnooperRBLX, does @CJ_Oyer’s fix apply to your setup as well?

2 Likes

Thats due to a recent update Cage Deformation, That update kind of messed with how they work which is kind of annoying.

1 Like

I don’t think so, I wasn’t using cage deformation to do this, I would just insert meshes into the character model and position them around the torso, and bind them to the rig using a motor6d. When I would add the motor6d and bind the clothing and the hrp the mesh would automatically move into place, which no longer happens. So would I have to use the new cage mesh deformer technology to do this now?

1 Like

@MrChickenRocket do you have a test scene we can use to reproduce this issue?

So I worked out what the change in behavior actually is.

The root bones in hierarchical rigs are not obeying their rigging weights anymore.

You can test this by manually animating a root bone (eg: change its orientation), if it was rigged, those verts don’t move anymore. A couple of days ago it was treating them like they had a weight of 1.0, which was wrong too.

For debugging, I’ve attached a scene with two meshes.

image

Both meshes have a simple 3 bone skinning, where each bone influences just 1 box.

The green mesh has an extra “empty” root bone and works as intended.

The blue mesh, though, is broken. Modifying the local transform or orientation of the root bone does nothing, even though it is skinned to influence the bottom box.

When I wrote my initial post, it was even worse, modifying bone001 on the blue mesh moved ALL vertices, but that seems to have been fixed.

brokenRigging.rbxl (35.7 KB)

Always including an empty root bone is a workaround for now, but I still think the behavior is unintended and was changed without notice.
I had to modify and reexport/reimport a dozen character models for my project, so it made me grumpy :slight_smile:

2 Likes

@MrChickenRocket , do you have Beta Features → Cage Mesh Deformer turned on? If so, can you try turning it off and see if that changes this behavior?

Yes, disabling caged mesh beta does change this behavior. I don’t know if it’s the correct behavior, but it does change it.

With Cage Mesh Deformer Beta off it should not require an empty root bone or any other rig modifications, let us know if you find otherwise. We are working on a fix for Cage Mesh Deformer Beta that will fix the root bone behavior change in that mode as well.

1 Like

Could you guys please add a new constraint SPECIFICALLY for skinned meshes.

INFO

It would act like the weld constraint does now, except with no welding, and what I mean is, it would only skin two separate parts together.

USES

It could be used for many things ranging from, trampolines, ropes, elastic objects, pretty much anything, and makes everything so much easier to connect.

3 Likes

@SnooperRBLX, sorry for the slow reply. You weren’t using the cage mesh deformer but was Beta Features → Cage Mesh Deformer turned on?

2 Likes

I found a bug :slightly_frowning_face::
If you rapidly change the transparency of a part welded to your skinned mesh or the skinned mesh itself, the mesh reverts to its non-animated state for one or two frames then changes back.
Video:


Place:
SkinnedMeshGlitch.rbxl (31.5 KB)
I ran into this problem with a custom skinned mesh I created and it looked pretty bad with the mesh glitching.

Edit: changed video so it isn’t laggy

1 Like

They don’t work with tools
i clearly cannot make it holding to it’s skinned character

By default, it should hold but this thing falls infront of me

ANOTHER BUG AGAIN
while animating a character I’m not able to select a bone but only through the list

2 Likes

Unless you skin that sword too / manually position them every renderstep it won’t work. Currently deformed mesh doesn’t affect any physical properties, and rather only changes visual (so any visual change doesn’t affect physics). In the future though, according to some posts above they plan to make deformed mesh physically interact too (with some sort of weld class), which will allow non-skinned objects to follow skinned object deformation!

Thanks for reporting, we’ll take a look.

In order for your character to hold tools you have to create a part named “RightHand” under your character model(I would recommend making the size small like (.1,.1,.1). Then, create a motor6D under the HumanoidRootPart and set Part0 to the hrp and Part1 to the RightHand. Create a localscript under the StarterCharacterScripts(or player) and paste this into it:

local LocalPlayer = game.Players.LocalPlayer
local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local hrp = Character:WaitForChild("HumanoidRootPart")
local RunService = game:GetService("RunService")
local boneparent = hrp--or the parent of your bones

local bone = boneparent:FindFirstChild(yourhandbone, true)--or the bone that you want it to track
local mesh = Character:FindFirstChild(yourskinnedmesh)

local handToPartCenter = CFrame.Angles(math.rad(0), math.rad(0), math.rad(0))+Vector3.new(0,0,0) --tweak until it looks good

RunService.Stepped:Connect(function(time, step)
    if Character then
	    local partCFrame = bone.TransformedWorldCFrame * handToPartCenter
	    Character.RightHand.Motor6D.Transform = (mesh.CFrame:Inverse() * partCFrame)
    end
end)

This is just a slightly modified script that @RobieTheCat posted earlier, don’t ask me how it works because I don’t know(well… kinda).
The “bone” should be the bone you want it to track, the mesh is your skinned mesh that you are using, and the bone parent is what part your bones are parented to, usually hrp or your skinned mesh. change the Vector3 position and CFrame.Angles values of the “handToPartCenter” to make it look like your character is holding the tool(which means click Run 100 times)

Also not being able to click bones is not a bug, it is just a fact, that is why it is important that you name your bones correctly so that you can easily rig mesh.
I did make a plugin that creates a small box around whichever bone you have selected, because I noticed that the moving and rotating UIs are kinda big so, you can’t see which bone you have highlighted very well. So I can publish that is y’all want.

4 Likes