Maybe some kind of “ModelRenderFrame” that acts as a camera and has a CoordinateFrame/FieldOfView property, as well as a Model property that you could set to the model that has to be viewed in the frame, would work better. The ModelRenderFrame would act as a viewport based on its properties.
I have no idea how lighting/shadows/etc would work with that and it’s probably impossible to incorporate into the rendering loop, but that’s my idea.
EDIT: This is a comment on your first idea, I should clarify.