Skinned MeshParts flicker when removing MeshPart from welded group

My game’s dragons flicker to the t-pose when changing between customization options, and this is jarring for players. It seems to occur for one frame when switching through the options:

The MeshParts are unanchored, and welded to an anchored root part that contains the bones. The bones are directly parented to the root part, and are animated in Lua using Bone.Transform. All parts are in the same model containing a humanoid, but it still happens with no humanoid.

It occurs on all devices I’ve tested. Here’s the game: Shard Seekers - Roblox

15 Likes

I’ve had the same issue where the skinned MeshPart returns to its default bone transforms for a single frame. I haven’t looked into it too deeply, but it seems to happen for me when I have a lot of bones in the workspace (a lot = at least 1000). It becomes more prominent when the bone count is too large, and the flickering happens for all skinned meshes in the workspace, at the same time (seems to be some sort of frame skip in the rendering, not local to the specific mesh).

The meshes I used were also similarly welded to an anchored root, but the root becomes unanchored when the mesh is tossed by the user. It is a whipped cream container with the whipped cream element being the skinned mesh, and contains over 250 bones (overkill yes, but testing limits is fun). The flickering begins to occur when cloning the whipped cream and parenting it to workspace, but as I said above it begins to do it on its own sporadically (though it seems to be improved from before).

Here’s the base mesh:
image

Here’s what happens if you try to spam the game with whipped cream containers:

Obviously it was an easy fix to just remove the meshes once they were thrown away, but I can imagine this is a headache for anyone actually requiring them visually (if they were external for example).

Place: Caffeine Cabin - Roblox
(for anyone who is checking the place, follow the green markers and go inside the cabin, there will be a door with the minigame label above it)

I’ve updated the game to remove instances every 30 seconds, and I’ve disabled removing the skinned mesh once it is thrown in case the behaviour needs to be observed more reliantly.

2 Likes

Thanks for the report! We’ve filed a ticket to our internal database and we’ll follow up when we have an update for you.

5 Likes

Hello. Sorry for the bump, but this issue hasn’t been addressed yet. Also, this bug has a much broader impact than reflected in this post.

In fact, skinned MeshParts always flicker back to their original position/shape when one or more of their properties related to rendering is changed (including BrickColor, Color, Reflectance, Transparency and Position). This however does not happen when CanCollide is changed. Inserting an image (Decal/Texture) to the MeshPart, or changing any property of the image object child of the MeshPart, will trigger this bug.

This happens regardless of whether the MeshPart is anchored or not, or if its DoubleSided property is ticked or not.

Furthermore, changing the property of a single skinned MeshPart can lead other skinned MeshParts (occasionally all of them in a game) to flicker as well, even if they were not affected by the change.

The effects seem to be way bolder while play-testing in Studio and in live servers than while running a test in Studio.

Total number of bones does not seem to have any relation with this bug.

Repro steps:

  1. Insert a skinned .fbx file through the Avatar Importer plugin.
  2. Deform the MeshPart by changing the CFrame of its bones (by scripting or manually, using Move and Rotate tools).
  3. Run the game with a script like this:
game:GetService("TweenService"):Create(workspace.MeshPart, TweenInfo.new(15), {["Transparency"] = 1}):Play()

Using a TweenService makes the part to flicker constantly until the tween has been completed, so it’s easier to observe.


Related: Deformable meshes flicker when MeshPart size changes - Bug Reports / Engine Bugs - DevForum | Roblox

7 Likes

Thank you for bringing this issue to attention again. This is a massive UX issue in our (@thunder1222) upcoming game as well. I’ve added lots of optimizations to try and mitigate it, but this seems to be an issue on Roblox’s end. The quicker this can be fixed, the better.

I’ve supplied a minimized repro file in the thread that @mishajones linked above.

6 Likes

This bug seems to occur whenever something new is added to the player, and it still a issue that hasn’t been resolved as of May 1st 2021

https://gyazo.com/2ebd528020133a0e6863542dd0e4b58a

2 Likes

I ran into this issue with my current remake of Roblox Battle where I use the TweenService on the superball tool for changing colors. For me, this causes flickering pretty much every other frame, which might actually be enough to cause an epileptic seizure. I am at the point where I am debating of having a feature flag to enable or disable mesh deformation-based characters because of this.

(Flashing warning)

3 Likes

This still happens when any property of the meshparts is manipulated, including transparency and colors, and objects are moved around in the character. May have something to do with roblox needing to rebake and setup the objects after the change. Would appreciate a fix, need to manipulate these properties in a game, but this makes my goal unachievable. interestingly enough, one of my meshparts have no problem having their transparency changed, but the other does.

2 Likes

Can confirm we’re also running into this issue and it is very frustrating, literally ruining the whole experience ahaha. Our characters are fully skinned models and as soon as they start moving around it’s a constant T-pose flicker simulator.

We’re unable to release our game until this is fixed… :woman_shrugging:

Also experiencing this issue, but with TextureID.

We have Skinned Mesh rigs (custom rigs, animal-like). We are trying to support “blinking” by changing the TextureID of a MeshPart, but it randomly (sometimes does, sometimes does not) causes the rig to take on its default pose for 1 frame.

Maybe it has to do with whether the change is made before/after AnimationStep in the frame.

I’ve seen this issue before as well. To anybody experiencing it - try turning on the Beta Feature for Cage Mesh Deformer and then try to replicate the behavior in Studio. It fixed the problem for me, (though it can’t run in a live game yet), so if it works for you guys too, I think the solution could be somewhere in that feature’s code.

This issue still happens bumping so Developer Relations can see!

This happens for even something as minor as a position change, so the issue is actually quite big.
I’m not sure why this hasn’t been fixed yet, since it’s a pretty visible bug.
My game has bows that use mesh deformation, and they repeatedly flicker when the players move while holding them. I hope it gets fixed eventually, it’s such an eyesore in my game.