Is there a way to detect "fake" dynamic heads?

In my R6 shooter game where player can use their own avatars, I would like to blacklist dynamic heads with facial expressions (due to visibility issues) such as:

but I would like to whitelist these “fake” dynamic heads that mimic classic heads such as:

I know for the fact that the “fake” dynamic heads do not have any facial expressions (or at least they are hidden). But every one of these heads have a different MeshId despite the fact that they all look identical.

Is there a way to differentiate these heads such that I can whitelist them?

1 Like

You could just run a check on the owner and the name + description of the heads, I don’t think there is any other way.

The “fake” heads have different sizes of the “Head” MeshPart. For example all the cylindrical heads have size (1.2, 1.2, 1.2) [rounded], whereas the “fake” ones vary, they can even exceed 2 studs in any of the dimensions.

So just check the size of the Character.Head and you know immediately with what head type you are dealing with.

From my testing, nearly all heads have a size of (2,1,1) in R6, am I missing something out?

I have not tested it out on R6, from my quick testing now you’ll need to get more creative with it. I did not notice any distinct similarities using which we can clearly tell if it is dynamic or not. I also do not see FaceControl Instance being created in case of R6, which might just be my studio acting up.

Regular Head / No head equipped in Avatar editor

Man Head (No dynamic, just different shape)

Odd Head

Normal shaped Dynamic Head

I did actually notice 1 inconsistency — if you equip Regular grey head, your Head.Mesh will not have any TextureId, whereas if you equip grey Dynamic head, it will have TextureId regardless.

If TextureId doesn’t work out, then I’d pay attention to the Values that get created under the Head.Mesh.

Grey Dynamic Head


Grey Regular Head


I have noticed about the values under the Mesh, specifically, for normal heads (even the fake dynamic ones), The Z value of the FaceFrontAttachment value should be between -0.65 and -0.55. So far I think this is the best possible way to determine a fake dynamic head and whitelist them.

Thanks for the heads up!

1 Like