DynamicHead (FaceControls) Animation only playing when visible and close enough on camera

When during runtime playing a face animation of eyes closed on a character, it stops rendering when not visible on camera (eyes get opened) and blends back with a delay when visible again, making it weird.
It only happens with facial parts, the body animations work properly. Here’s a preview:

Here’s a simple localscript i used to play the animation, you can test it in a new project, although you need to republish the animation as your own to be able to load it. I also tried setting networkownership to player, but it didn’t help.

local char = workspace.manface
local huma = char.Humanoid
local anim = Instance.new("Animation")
anim.AnimationId = "http://www.roblox.com/asset/?id={YOUR_ID}"
local track = huma.Animator:LoadAnimation(anim)
track:Play(0, 1, 1)

prj file:
dynamichead_test (1).rbxl (134.9 KB)

1 Like

Hi, this is by design for optimization purposes. When far enough, or not in view, the engine won’t evaluate and apply facial animations.

One improvement we can make down the road is to snap to LOD when things go in and out of view, as opposed to smoothly blend, which is better suited for when things in view change in LOD levels.

1 Like

Hi, I see, but wouldn’t it be good if there was a toggle to on/off the behavior? When say I want npc face animations locally, so i don’t really need optimization in that case, i just want it to play as intended. Like a global property in workspace settings or similar. Is there a way to add it as a feature?