Howdy, developers!
Today I come to you seeking… well, wisdom, I guess. I spent all day today trying to write up a function to take all of your accessories and turn them into parts with special meshes inside. I thought this would make things easier on me because my game is meant to allow players to translate, rotate, scale, retexture, and recolor their accessories. The biggest draw for me here is that VertexColor is a property of SpecialMesh, allowing players to freely apply color filters over accessory textures so they don’t have to do a ton of extra work to make, upload, and apply their own custom texture. With hats that are already in that configuration, scaling is a simple matter of taking their input and multiplying it by the ‘original’ scale of the SpecialMesh.
depicted above: the original MeshPart necklace is scaled just fine, but the SpecialMesh duplicate seems to have slightly altered dimensions. It’s slightly thinner than the real accessory when set to 1,1,1. Setting the SpecialMesh to 1.15,1,1 seems to set them on the exact same scale, however I doubt multiplying the X by 1.15 works on every MeshPart accessory on Roblox.
This is a problem with MeshPart accessories, however. With those, VertexColor doesn’t exist so that entire feature is gone. But when trying to add that feature by converting MeshPart accessories to Part + SpecialMesh accessories, I encountered an issue.
The biggest issue seems to be that SpecialMesh scaling doesn’t work the same way as MeshPart scaling at all. In fact, scaling a SpecialMesh of the exact same MeshId as a MeshPart in at least some scenarios seems to produce entirely different mesh shapes. The AccessoryWeld is easy enough to convert/scale, welds don’t change.
TL;DR - Is it possible to convert MeshPart accessories into Part + SpecialMesh configurations? Currently, it seems like this may not be possible because of limitations on mesh weirdness, but I would love to be proven wrong on this one. That VertexColor feature of SpecialMeshes is very nice.