I spent a some time tracking this down, hopefully I can save some others the effort.
Problem:
misc_gamemodel* (or similar**) entity disappears from view when it should not.
Reason:
ET just checks whether the origin of your misc_gamemodel can be seen (technically whether the cluster containing the origin of your model is in your PVS). It does not care about the actual triangles that make up the model, or its bounding box. So when the origin is out of view, the whole model disappears.
Solution:
Use one or more misc_vis_dummy entities, targeted on your misc_gamemodel. Position the misc_vis_dummy entities in the other clusters the actual model occupies. You can use the portal viewer plugin to see where these are.
- if you use the ‘trunk’ key for a misc_gamemodel the bounding box of the trunk will control where it is visible from.
** I’m not sure exactly which entities are affected by this, but I have seen func_rotating_door and func_explosive exhibit similar behavior.

