Mesh-part textures should support alpha channels


#1

As a Developer on Roblox I find it very annoying / near impossible to work with mesh-parts in terms of texturing. For starters they do not support alpha channels if you use a texture that has transparency on it. Anything in the transparency area will turn black. Now if I was to apply that same texture but as a decal on a mesh part, I would get the desired effect of the transparent part showing what ever color and material the mesh-part is. The problem with doing it this way is decals never follow the uv map that you created it follows roblox’s own uv map. My question is why does special meshes support alpha channels with textures but mesh parts can’t. Mesh-parts should have the ability to use a transparent texture which shows that part of the meshes color and material that you assigned to it rather than turning black as this works with no issues for decals. This is rather holding me back and I can imagine many other developers who uses mesh parts. Lets say some of us want to create a decal for a car but give users the choice to change the color of the car. We would not be able to do this currently as if we tried to the mesh-part will turn black for any area that has transparency, this causes us to then have to color the entire texture 1 solid color for areas that would be transparent just so that does not happen. This would not impact performance at all so I do not see why we do not have this support already.
The images below are to show what I am talking about.

  1. This image is showing what we currently have to do with a texture all the blue parts indicate what will be transparent but since we can’t do that due to the mesh turning black we have to make it 1 solid color that we can not change.

  2. This is what happens when I make the blue transparent currently. This is not a error on my end I have tried this so many different ways just to be sure and I either get all black for the transparent spots or black and white like in this image. “Yes I know the texture is backwards but I accidentally rotated it when I was using Photoshop that has nothing to do with the white and black spots though since that is just the transparent areas.”

  3. This is how it should look if roblox added this support / feature. Btw I got lucky that the uv map of the decal worked for this otherwise it would have looked bad although it is still wrong in terms of positioning location.

Anyways as you can see in the 3rd image I can adjust the roblox material and color and you can see it on the transparent parts of the texture only. How ever as I stated currently mesh-parts only work with this if you use a decal which for those of you who do not know, decals will not work on mesh-parts as they have a different uv map compared to the one that you assign to it and use textures for. So could we please get this feature supported because it has been like 2 years now and without this feature I am struggling to make certain things in my own game work because of the lack of this feature and I can’t be the only one who wants this support.


#2

I’ve either had to use special meshes or change the meshpart transparency to .011. An update to this would be greatly appreciated


#3

Yes I would rather not have to have 2 mesh-parts inside each other with one using a texture and doing .011 for transparency as that is just ridiculous. Bricks can do this special meshes can sorta do this but you can’t change material / reflective of it. Then mesh-parts which can’t do any of that.


#4

This is a sorely needed feature.

Changing the transparency of a mesh in order to access a pseudo-alpha channel is unintuitive, unexpected behaviour, and very confusing for both veteran and new developers alike.

This should be a bool value toggle to enable alpha channels.

Not to mention, transparency causes issues with Z-axis display, it makes nice meshes look terrible with incorrect parts layering above another.

Take a look at just how bad it can get (the two yellow plants are in front of the fern, yet the fern is displaying on top of them):

Also, as another thing to add, transparent parts are more taxing on computers, so a proper alpha channel option that would evade using transparency would also be beneficial for performance.


#5

They need to make a toggle for it so we can choose if the rest of the mesh should turn transparent or display the roblox material and reflectiveness. But honestly without this feature it makes two years of work kinda go rip due to limitations from things that they can easily bring to the table for us which not only will improve the platform but make the developers happy since this is a feature that has gotten requested multiple times now.


#6

How?


#7

Rather than having the entire mesh turn transparent which would use more data only the parts with transparency parts of the textures would be transparent. What ripull is saying is that rather than the entire meshing having a .011 transparency only the segments that the texture is transparent will be fully transparent everything else will have a transparency of 0 so this would save data in theory since the entire mesh would not be semi transparent.


#8

the segments that the texture is transparent will be fully transparent everything else will have a transparency of 0 so this would save data in theory since the entire mesh would not be semi transparent.

How would the GPU know that those segments are not transparent prior to sampling the texture in the pixel shader?


#9

? Not exactly sure on that but I do know specialmeshes, and bricks can do this already so I would assume you just mimic how specialmeshes does it but rather than it staying smoothplastic it uses what ever material the meshpart actually is.


#10

Also I can already do this using a hacky method by sticking a humanoid in the model and naming the meshparts r15 body parts but it works as a special mesh meaning it only shows as smoothplastic under the transparent parts of the texture.


#11

Oh, you just duplicate the mesh… I get it now. Haxx!


#12

No we don’t? That is horrible and causes more issues than good. You just name the meshpart LeftFoot then stick a humanoid in the model change it to r15 then transparent textures work on it but it only shows smoothplastic as the material which is a bad work around as we want the ability to change the material.


#13

Rip so I am assuming roblox is just going to ignore this feature request.


#14

This feature request is on our radar but the issue is that there are several different requests that people usually bundle into one. Case in point, the original request here is for something very distinct from what Ripull mentioned in this topic (there’s also a third type of request, to have materials show through transparent textures on mesh parts, and a fourth type of request, to use Texture objects to be able to have multiple layers, and have all of them UV mapped using the base mesh part UVs).

So we’re aware of this and are tracking this but this is not as simple because everybody wants something different. We need to figure out what exactly we want to ship and how - the request in the original post in this thread can be satisfied in two ways for example (supporting base UV map in Texture objects or showing part color for transparent MeshPart regions when Transparency == 0). Additionally there are some performance implications, the alpha cutout feature Ripull mentions is very much not free on mobile unfortunately, so that’d have to be enabled explicitly somehow.


#15

The only two requests for this feature that I have seen so far myself is what Ripull has said and what I have said about transparent parts showing the roblox material and color. I have never heard of this multiple layers uv unwrapping as no program to my knowledge does this, including 3d modeling programs that I have used.


#16

I believe most modeling programs support multiple UV layers / multiple material layers running off of the same UV set. And “roblox material and color” are also two, separate disjoint features with different usecases and performance tradeoffs - these are some of the use cases/requests I was referring to.


#17

oh I understand what you mean now with multiple layers pretty much assigning multiple materials to 1 mesh. That is talking it a bit to far as that would be extremely hard to do and you could just have 1 texture with different materials on it and use that. I guess I will wait till this feature exists before setting up custom skins for my game then.


#18

So are you saying developers would have to be able to opt in for alpha cutouts for mobile users?

There’s numerous games on mobile that use alpha in meshes and the games run at 60 fps. A great example of this is Real Racing 3, which runs great on the iPhone 4.

Of course, EA might have some secret optimizing sauce, but I’m not entirely sure. :stuck_out_tongue:

I also feel that certain taxing features should be allowed to be enabled or disabled by the developer.

Just my thoughts on the matter.


#19

I’m saying that a mesh with an alpha cutout is significaly slower to render than a mesh without an alpha cutout on some mobile devices, yeah - obviously this doesn’t matter much if you only have a few meshes using that, but my point is that we can’t just enable this blindly on every single mesh part.


#20

Polygonal limit possibly?

Like, if the polygon count is really high, it can’t have alpha channels? That could work possibly.