The first step is to calculate the dot product:
-1 <> 0
is behind you, 0 <> 1
is in front of you.
Above, there is a 10 deg leeway just to show how things pop into view. This is not a complete thing, ofc. - just to demo what I meant.
You know the camera fov, you know the aspect ratio, you know the viewport size and you know the bounds of actor. You can check whether this value is inside or outside of the desired range.
Sorry, don’t have the actual math for frustum in my head, would need to google that.
But culling is exactly what the renderer does and the calculations have been done; query the target’s recently rendered state. Isn’t that enough? If it’s not, experiment with doing it manually like in the example above.