VertexColor not working when a Descendant of a Character

Reproduction Steps

This occurs on any system.

  1. Make a part with a SpecialMesh inside of it. Set the texture and mesh to anything.
  2. Set the “VertexColor” of the mesh to 2,2,2 or anything else that would alter the appearance of the texture.
  3. Parent the Part into the character.

Or… use this place file which does it for you
tryitout.rbxl (41.8 KB)

Expected Behavior

I expect that the VertexColor displays the same unconditionally.

Actual Behavior

It does not, as shown in the video below.



Issue Area: Engine
Issue Type: Other
Impact: Low
Frequency: Often

5 Likes

Has been an issue for many years now. Same thing happens with the Reflectance property, it is locked to a range from 0-1.

OP didn’t mention this, but VertexColor actually does work, except that it’s locked to a range from 0 to 1 for all values.

3 Likes

I don’t understand how something like this could occur. I really need this fixed if I want to meet a deadline. Please come through devrel :pray:

Thanks for the report. I filed a ticket to our internal database.

4 Likes

Hello, is there any update on this? I’m currently using a hacky solution to get around this.

Hello, I am yet again asking for an update on the current situation with this. I’d like to roll out an update that is dependent on VertexColors. No pressure of course. Thanks Devrel :grinning:

Hello. It has been 1 day short of a month since I had filed this bug report. Any update?

I think the only issue with this is that so many tools use vertex colors higher than 1 that it would look weird in-game if they fixed it. I think Roblox would need to do an opt-in to fix this properly.

We’re nearing 2 months of this not being fixed. I’m not very happy but oh well.

This likely won’t be fixed anytime soon. It’s not really a ‘bug’ as it’s intended behavior. The VertexColor is transformed to a Color3, and anything outside of [0, 1] is undefined. Using out of range Color3 values to emulate emissive textures has never worked when parented to a rig with a humanoid, despite many reports. We can only hope Roblox adds proper emission textures, but I sincerely doubt they will.

2 Likes

since this may not ever get fixed…care to share your hacky solution?

1 Like

Ignore me if I’m wrong, but with the values the VertexColor are clamped from 0-1, but still represent RGB. This works the same with using .R values to RGB. In the original scenario, it would be cR = c.R * 255, so you should be able to do the same with RGB by doing

function setColor(SpecialMesh: SpecialMesh, Color : Color3)
   local R = math.clamp(Color.R / 255, 0, 1)
   local G = math.clamp(Color.G / 255, 0, 1)
   local B = math.clamp(Color.B / 255, 0, 1)
   
   local VertexColor = Vector3.new(R, G, B)

   SpecialMesh.VertexColor = VertexColor
   return VertexColor
end

They’re by default at 1,1,1. They are not clamped unless they are in a character, which is why I am filing this bug report. (they shouldn’t be clamped)

Yeh, this is a bug because when I place my meshpart inside of a model it glitches, but when I place it anywhere else it is fine…

The same thing happens with the UnionOperation object. However, I think that this is a separate bug.

Image:

However, this could possibly be related because of the way Humanoid has its own implementation of shadows and rendering.

This bug, along with ALL of my other bug reports, has remained unfixed for months. I’m very frustrated. It feels like I am talking to a brick wall.