I’m assuming those blue NPCs have this ESP, that gets turned off individually while they are in your camera view.
Try using a ViewportFrame with a WorldModel. You can then clone those Humanoid models into the viewport, remove all decals, and everything that isn’t a limb, then color everything blue.
To see if one NPC is visible, use Camera:GetPartsObscuringTarget (check if the table of obscuring parts has more than 0 elements), or raycasting (but this is less optimized in this case). Change the visibility of these NPCs accordingly (described below).
To disable this “ESP” for one of these NPCs, change the transparency of each BasePart in the NPC’s character (less performant). Or, set the Enabled property of each “parent” ScreenGui to false – meaning you would have one NPC per ViewportFrame, and each ViewportFrame would be parented to a different ScreenGui (best performance).
When would you check whether these NPCs are visible is up to you. Either do it in RunService.RenderStepped (IMO, this is too unimportant to use in a RunService loop, sacrificing some performance), or check at an interval of, say, a quarter of a second.