Reproduction Steps
Spawn a bigger group of Skinned Meshes (> 100). Place them directly under workspace or under some model in workspace (same issue). Now at random pick one of them and either destroy them, change their transparency or change their color. Big FPS drops occur.
Try this with normal Parts instead of SkinnedMeshes. There is no drop in framerate.
For some reason, doing this on SkinnedMeshes causes some invalidatedFastClusters and since they need to be updated, the PreRender takes a lot of CPU time. I checked this using the Micro Profiler:
To reproduce:
I have prepared a rbxl file that showcases this exact problem: SkinnedMeshProblem.rbxl (39.2 KB)
Just open up the Script found within the ServerScriptService, and change the first line to point to the two different models from within ReplicatedStorage. One model contains a Part, the other contains a SkinnedMesh.
When running the same script with the Part Model it works finely, while when running it on the SkinnedMesh Model, it causes big FPS drops.
Expected Behavior
I expect the skinned meshes to behave in the same way a regular part does when calling destroy on them, in terms of performance.
Actual Behavior
When deleting some of the skinned meshes from within the group, big frame drops occur making the game unplayable (visualized with the Micro profiler):
Thanks for the reply .
Sorry if I didn’t specify this, I thought it’s pretty self explanatory because it’s the default of Roblox when importing custom avatars. The skinned meshes are in a model of their own, and these models are inside a bigger renderModel.
That’s why I have posted this report. You can also check the video I have linked, I show the exact Explorer Hierarchy.
I have also attached a studio file reproducing the exact problem.
We’ve enabled part one of a two part fix for this, so you should see a modest improvement now. We will enable part two some time in the next couple of weeks, which will optimize this even further. Thanks for your patience.
We enabled the second fix for this last week. In order to fully optimize your skinned meshes to achieve the maximum improvement, you will have to re-import them. Re-importing is not required unless you are still experiencing frame drops.