"Every ICameraModifier runs against the drawing camera, not the one it was authored for"
▸ SYMPTOM
You add a second camera (overhead, spectate, killcam) and it renders the wrong view. In one live case an orthographic planning camera placed dead centre above a building rendered pure sky. Its position and rotation both read correct under a direct query.
Neither camera reports anything wrong. The inspector agrees with the transform you set, which is what makes this hard to spot. You go looking for a bug in your own maths instead of somebody else's modifier. Verified on engine 26.08.05.
▸ CAUSE
Every ICameraModifier component in the scene runs against whichever camera is currently DRAWING, in ascending CameraOrder. It does not run only against the camera it was authored beside. So a second camera inherits every modifier already written for the primary camera.
In the planning-camera case, a player-controller modifier and a vendored first-person viewmodel's camera modifier both ran against whichever camera was the main one. The instant the second camera became the drawing camera, it inherited the player's look angles instead of its own. The picture became a plausible view from 900 units up looking level, instead of straight down. The second camera's own transform was never touched, which is why the inspector kept agreeing with you.
▸ FIX
Claim the intended view with your OWN ICameraModifier at a higher CameraOrder than anything else in the scene.
- Add an
ICameraModifierto the camera you control and set itsCameraOrderabove every other modifier in the scene. - Have it write the transform (or projection) you want for that camera.
Highest order runs last and wins by construction. Do not try to disable whichever modifiers got there first. They may own state you still need, such as an interaction probe or a health pool.
Diagnostic when a camera renders a flat wash: flip the suspect camera to perspective. An orthographic wash is unreadable, but a horizon line (or a first-person viewmodel hanging mid-frame) proves that something else is steering the view.
▸ WHY IT WORKS
Modifiers apply in ascending CameraOrder, so the highest-order modifier writes last and overwrites whatever earlier modifiers set. Owning the last write means the inherited player look angles get replaced before the frame draws. Any additional camera dropped into a project that already has a player controller or a first-person viewmodel will hit this the first time it goes live, so the higher-order modifier is the durable fix rather than a one-off patch.
- Published.