Layer UV Mapped Textures + Change Color3 Values

As a Roblox developer, it is impossible to create customizable mesh deformation characters by colouring and layering textures.

I am the owner of a game called Felandia (✨[QOL update!!] Felandia - Roblox). In Felandia, users can customize their character by changing colour, markings, eye type, and more.

As you can see in this image, the amount of character customization is significant. However, it is impossible to do the same with mesh deformation characters. I believe that it is important to incorporate mesh deformation into Roblox games because this is the future of the platform. There are also performance benefits that come with mesh deformation rigs (no hidden vertices from parts clashing into parts, there would only be one Meshpart).

Currently, the only way to apply a UV-mapped texture onto a mesh deformation rig is by changing the TextureID or SurfaceAppearance ColorMap. Both options do not allow you to change the colour of the texture (think: Decal Color3 values allow you to change the colour of white images in-studio) or allow you to layer multiple textures ontop of one another. This restricts the mesh deformed character’s colours to being what’s on the ColorMap image, thus, restricting all customization in-general.

image

This is a dog model I created for RDC 2022 Gamejam. It uses a SurfaceAppearance ColorMap in order to display it’s texture. If I wanted to colour the white part of the dog brown (for example), I could not since there is no way to adjust the Color3 value of textures in-studio (and it’s a hassle to create hundreds of images for every single colour possible). Additionally, if I wanted to change the white part and the dark part of the dog separately, I could not since there is no way to layer each texture individually. Below, I attached an image for what it could look like if I were able to colour each part individually.
image

A solution for this problem would be either to introduce ZIndex and Color3 properties for SurfaceAppearances or allow Decals to use UV maps (since Decals have ZIndex and Color3 properties). That way, the ZIndex order can look something like this:
The ZIndex order would look something like this:

1 - Base Colour

2 - Underfur

(any player-chosen markings would go in here)

3 - Eye Whites

4 - Eye Colour

5 - Pupils

The user could colour each texture individually, resulting in customizable mesh deformation characters.

If this issue is addressed, it would improve my development experience because I could create a mesh deformation game similar to Felandia, but without the lack of real-time customization. Mesh deformation is the future of Roblox, and I’d love to make an experience that’s also competitive off-platform (blocky rigs turns down an older audience).

44 Likes

A list of other threads I found similar to mine:

10 Likes

I’d like to add that we need the ability to tint SurfaceAppearances because it is even more difficult to recolor transparent meshes at the moment.

While you can leave the ColorMap blank to use the MeshPart’s base color, you cannot do this with transparent meshes since the alpha channel is based on the ColorMap. Therefore you need to upload a separate texture for every color variant you need, which is not always scalable.

Roblox is still supposedly on the fence about implementing tinting because they’re unsure about the best way to do it, but at any rate it is becoming a desperately needed feature along with all others mentioned in this thread.

5 Likes

image
Adding onto this, World of Warcraft Classic does what I want to do on Roblox regarding texture layering (with armour).

And it was released back in 2004… :sweat_smile:

11 Likes

The best way to do it is like what is done with Decals right now.

2 Likes

bump this needs to be done


This minion has multiple textures so i cannot upload hot minion :frowning:

10 Likes

Guess I’ll go ahead and bump this even though I’m sure there are dozens of lingering requests for this. Still patiently waiting on anything AT ALL resembling this feature, that many people have asked and made good cases for, with no communication from roblox whatsoever. It’s 2023 and we still haven’t gotten improvements in SurfaceAppearance functionality. :unamused: Is it too much to ask or something?

13 Likes

Bump! I can’t believe that this is still not a feature! Roblox wants everything to be dynamic, yet forces you to swap the whole texture to change the colors of details. Having to upload a different texture for eyes of different colors, along with many other things, is painful. Both of these features would make my life SOOOO much easier.

3 Likes

I’m bumping this, I’m making a wolf game and I’d like the ability to layer markings on my character to give people more flexibility in customization.

4 Likes

Examples of different possible wolf markings, yet I am unable to implement them due to the lack of this feature.

9 Likes

Bumping this again for you because a year ago I started a project to make a horse game with customizable marking options- found out this was STILL not possible. Gave up the project completely because I refuse to cut up my model and I refuse to create “skins” players have to collect. I want them to be able to breed their own unique horses.

You use to be able to layer decals with zindex…but for some reason this feature was removed. This is honestly so disappointing D:

3 Likes

I ran into this issue recently. A work around is to just create a ton of variations of the same thing and then, import those in. It’s a really dumb solution given that this can be solved by classifying a UV texture as regions and applying color values to those regions. Would have literally saved me months of time had that been a thing. Plus, I wouldn’t have to deal with the a nest of IDs. Given that there were about 50 variations, that was 50 different IDs that have to keep track of as opposed to one where I can tweak the parameters. It would be nice to have a parameter to tweak reflectance for textures (per texture, per UV region) that are PBR compatible but, that feels like a different feature request outside the scope of this. +1

2 Likes

I would absolutely love support for multiple UVs + layered textures.

Being able to adjust RGB, saturation, brightness, contrast, etc on textures post-upload would be really nice too.

Post-process effects apply to the entire scene but sometimes I only want to adjust a few graphics.
Having to re-upload edited versions of textures feels wayyyyy too extra and unnecessary.

In a different game engine I’d write my own shader/material for it so I can change colors, contrast, etc but we’ll likely never get custom shaders here.

Having more run-time color adjustment options for all image-based assets would be super useful.

6 Likes

As a temporary solution you can apply all the roughness/metallic/normals/etc to the model and bake it into a single texture.

Or if you really need high-res textures, split the mesh and have textures for like the top and bottom half.

A lot of these textures you can currently combine manually.
We shouldn’t have to do this but it’s a temporary, albeit slightly tedious solution.

2 Likes

BUMPING this.

If you “split” a character model with weight paint data sometimes it glitches out when importing into Roblox and the rig has vertices that aren’t weight painted.

This would solve any need to “split” character models entirely. I have been asking for over 4 years.

3 Likes

I wonder if EditableImage will be performant enough to use just for layering once it’s out of beta

3 Likes

this feature seems to cover this request, thank you for hearing us @ engineers

1 Like