Setting EnableDynamicHeads to Disabled should render a static face

As a Roblox developer, it is currently too hard to make sure that I can absolutely disable the presence of dynamic heads in my experience outright. When I set EnableDynamicHeads to false, the instances responsible for dynamic heads still exist (FaceControls and the full dynamic head MeshPart with deformation rigging preserved). To preserve the artistic integrity of my experiences and classic Roblox avatars, I want a clean solution to retain a static 2D Decal face that works across all my experiences out of the box and doesn’t require me to architecture a solution per codebase.

I adamantly refuse to use dynamic head technology in any of my experiences and sacrifice the artistic integrity of my experiences and the assets that I commission for them. Roblox is capable of and should support heads as a packaged set, much like old bundles - depending on the RigType of the Humanoid, a different factor of a face is applied to the character. In my case, I want to only be using a Decal as the face, and for none of the bloat assets to be carried into my experience.

If this issue is addressed, it would improve my experience as a Roblox developer because I would not have to subscribed to forced adoption of avatar technologies that are incompatible with my experiences or deal with unused instances living in avatars. It would help me budget more clearly and focus on the styles I want instead of constantly having to remove the next big forced avatar update. I also do not want experiences on Roblox homogenised; I do not develop social games and do not need or want socialisation in my experiences to be based on avatars but of experience features.

Roblox has a vision but so do I. Please respect developers. There is no genuine or arguable reason why we cannot have options available.

9 Likes

You could disable Workspace.MeshPartHeadsAndAccessories. The default behavior (enabled) applies heads onto all R15 avatars as MeshParts, and if the head doesn’t support classic faces, the Decal instance won’t be inserted at all.

Disabling it will apply all heads similar to R6 heads, where the head is just a normal Part with a SpecialMesh and Decal. But in doing this, heads won’t be skinned, nor will they work with PBR textures.

4 Likes

Thanks for the point out, that actually works for me. It just becomes an issue of switching the mesh in the head back to the Head shape and setting back some scales.

Do we know if this option is intended to remain? Usually Workspace switches for technologies are meant for gradually phasing out old behaviours and removing them (3-phase roll out of opt-in, opt-out/default change then switch removal) I don’t know if this flag counts as one of them. If this option will be removed in the future, this is a non-solution for me.

2 Likes

No idea, but MeshPart heads on R15 was a pretty big change so I’d imagine the setting would stay around for a while. And it’s completely incompatible with R6 anyway, so Roblox is clearly still able to support the legacy head configuration. I don’t see any reason why they’d remove it anytime soon.

You could use game settings avatar presets to force the classic head, if that’s what you want, or, if you’re using HumanoidDescriptions, set the avatar’s Head ID to 0.

If you’re otherwise trying to dynamically switch out head meshes without HumanoidDescriptions it’s still not really that hard. Clear MeshId and TextureId, set scale to [1.25,1.25,1.25], set MeshType to Head.

2 Likes

Yeah, see, there’s my problem. We don’t have a definite answer on whether or not that option will remain since Roblox’s current trajectory seems keen on forced adoption, so I can’t stake my hopes on what may be looking at eventual removal with a large timeline (similar to how SignalBehavior will be removed in a few years and Deferred will be the enforced engine signal execution behaviour).

Disabling MeshPartHeadsAndAccessories is its own curious can of worms. I really like everything about avatars right now except dynamic heads and it’s really beneficial to use MeshParts over SpecialMesh objects especially when modifying the avatar in interesting ways. It’s entirely trivial to restore the classic head (maybe not the face, I’ll have to write something for that) if they aren’t MeshParts but I’m losing on a fair bit of benefits just to combat the scourge of dynamic heads.

Not the most sound solution for me in my opinion. I would just prefer if EnableDynamicHeads did what it said properly… sigh. I’ll leave this post open otherwise.

Thanks for your help though. In the meantime, I’ll just have to take the sacrifice in cases where I still want user avatars. Looks like my budget for modelers on my projects is going to increase quite a lot.

2 Likes