I think best is to fade them out but don't just set invisible then, but save their position in an array, and delete them. A global action then controls this array and recreates the models when the player comes nearer. With this system you save the time models consume through their functions and collision detection even if invisible is set. Disadvantage is, that your global function also consumes time (depending how fast you want your level to be actualised)