I have a custom character model consisting of MeshParts. A short sleeve shirt mesh is part of the mesh, and has an image texture applied.
My goal is to have the body part color show through, such as the arm color, where the shirt does not cover the arm. The shirt texture is transparent where the arms are, and has a color where the shirt is. But this does not work.
The problem is that Roblox does not support image transparency on the texture applied to the MeshParts. So I was wondering if there is any other way that the body color can show through when a MeshPart has a texture applied?
There’s no way to do it that’s not an expensive hack. It’s done on regular avatars by pre-compositing the clothing graphics on top of the skin color, and then applying that to the character Meshparts as a single opaque texture. To use that pipeline, you of course have to make your body parts use the default Shirt uv mapping, usually only an option when your character parts are similar to regular Roblox avatar parts, and with of course you lose texture resolution when it makes the character composite texture.
If you apply a texture to a MeshPart via MeshPart.TextureId, the alpha channel transparency of the texture is only used if you nudge MeshPart.Transparency to > 0.01 And it still does not composite with the part color (the part underneath is not rendered at all); to get that you need a second, opaque copy of the part with no texture. This can be impractically expensive, since you’re doubling the geometry, plus rendering transparent parts. It’s not guaranteed to always look correct either; it’s a non-future-proof hack.
To really do it right requires a feature request for support for MeshParts textures with transparency to be able to composite with part color on the fly (without having to make the part transparent).
Indeed we quite urgently need transparency ( alpha channel ) support.
My current “hacky” workaround is to place a special mesh inside my meshparts with the meshpart ID assigned to it, now inserting a decal of my transparent .PNG texture into the special mesh will actually properly render/respect the alpha channel
plus support texture transparency and custom color3 values.
Now even though that’s pretty awesome it comes with the quite immense drawback that special meshes do not support Roblox’s materials/material textures and as some ppl once said it sort of “doubles” the geometry/polygons as the decal get’s placed onto a very thin invisible copy of the mesh like a hull that covers it or something along those lines…