MULTIPLE ANGLES — one plate, three virtual cameras
Can a single locked-off clip be re-photographed from cameras that were never on set?
We inferred a 3D proxy of the room from one frame, placed three virtual cameras in it, and asked
MiniMax H3 to render the same performance from each. This page is the honest result of run 1 —
including the parts that failed, because that is what decides whether this is showable to a producer.
Everything below is measured: H3 open weights (int8) on a rented L40S, 1344×768, 90 frames
@24 fps, 20 steps, one seed per arm, ~13 min per arm, total GPU spend ≈ $1.35.
1 · The plate, and what we inferred from it
The 3.75 s window used (12.00–15.75 s), 24 fps, 1344×768.
Three people, paper-covered desk, window wall left, locked-off camera.The inferred proxy (red) over the plate: room shell, window bank, desk, three
figure masses placed from their measured screen positions. It is a plausible set, not a survey —
that limitation is the root of what fails below.
2 · The virtual cameras
SOURCE — the inferred original cameraWIDE — same axis, 2.4 m back, 68° fieldSIDE — 45° around to the window sideTOP — 3.6 m above the desk, plan view
3 · Three ways of asking H3 for the camera change
A · prompt + line-art controlGrey blocking sketch of the target camera into
MiniMaxH3FunControlNetApply at strength 1.0, plate on the reference-video channel.
B · photometric guideSame, but the control is the plate's own pixels warped
to the target camera (2.5D re-projection), strength 2.5.
C · new angle as the referenceThe warped 90-frame clip is fed as H3's
reference video; the prompt asks it to clean the re-projection at exactly that camera.
The approach-B/C guide for the SIDE camera:
the plate's own pixels re-projected 2.5D to the new camera. Smeared and holey on purpose — it is a
geometry brief, not a picture.The approach-A guide for the TOP camera:
line-art plan. H3 turned this into a vertical board facing the lens.
1_wide
approach ApartialNCC vs plate 0.845
same axis, 2.4 m back, 68° lens
1344×768 · 3.75 s · 90 f · 1.3 MB
Pleasant, but still the original frontal angle. Prompt and line-art control did not move the camera.
2_side
approach AfailedNCC vs plate 0.611
45° around to the window side
1344×768 · 3.75 s · 90 f · 1.4 MB
Still frontal. The requested 45° relocation is not there.
3_top
approach AfailedNCC vs plate 0.524
straight overhead, plan view
1344×768 · 3.75 s · 90 f · 1.6 MB
Not overhead at all — the desk became a vertical board facing camera. The model re-interpreted the sketch semantically.
4_wide_nocontrol
approach A (no sketch)failedNCC vs plate 0.796
same as 1_wide
1344×768 · 3.75 s · 90 f · 1.2 MB
Prompt alone, no sketch. Compares at 0.855 with 1_wide: the line-art control changed almost nothing.
5_wide_v2
approach BfailedNCC vs plate 0.625
same axis, 2.4 m back
1344×768 · 3.75 s · 90 f · 1.5 MB
ControlNet at 2.5 with a photometric guide: conditioning collapse. Green smear, no scene.
6_side_v2
approach BfailedNCC vs plate 0.400
45° side
1344×768 · 3.75 s · 90 f · 1.7 MB
Same collapse. Technical appendix only.
8_side_v3
approach CpartialNCC vs plate 0.490
45° side
1344×768 · 3.75 s · 90 f · 1.4 MB
Clean, legible, temporally stable — but the camera came back FRONTAL/three-quarter. Diagnostic, not coverage.
9_wide_v3
approach CmovedNCC vs plate 0.453
same axis, 2.4 m back, wide lens
1344×768 · 3.75 s · 90 f · 1.5 MB
Genuinely wider: whole table, chairs, more room. Faces and props are visibly softened. Previz grade, not coverage.
What the numbers say. Approaches A and B never moved the camera: A ignored the
control (wide: 0.845 vs plate; no-control control: 0.796), B destroyed the image. C is the only route
where the framing changed — the wide pull-back is real and visible — and that is exactly where the
model's dominant channel is the one carrying the new angle.
4 · Measurements
arm
approach
target camera
NCC vs plate
read
1_wide
A
same axis, 2.4 m back, 68° lens
0.845
Pleasant, but still the original frontal angle. Prompt and line-art control did not move the camera.
2_side
A
45° around to the window side
0.611
Still frontal. The requested 45° relocation is not there.
3_top
A
straight overhead, plan view
0.524
Not overhead at all — the desk became a vertical board facing camera. The model re-interpreted the sketch semantically.
4_wide_nocontrol
A (no sketch)
same as 1_wide
0.796
Prompt alone, no sketch. Compares at 0.855 with 1_wide: the line-art control changed almost nothing.
5_wide_v2
B
same axis, 2.4 m back
0.625
ControlNet at 2.5 with a photometric guide: conditioning collapse. Green smear, no scene.
6_side_v2
B
45° side
0.400
Same collapse. Technical appendix only.
8_side_v3
C
45° side
0.490
Clean, legible, temporally stable — but the camera came back FRONTAL/three-quarter. Diagnostic, not coverage.
9_wide_v3
C
same axis, 2.4 m back, wide lens
0.453
Genuinely wider: whole table, chairs, more room. Faces and props are visibly softened. Previz grade, not coverage.
Measurement note (worth reading before the table). Three of the eight arms first
arrived as the input clip rather than the render — 2_side, 3_top,
4_wide_nocontrol all came back at exactly 2,070,907 B, the source window's size, and briefly
read as "the model copied the plate perfectly". Cause: LoadVideo publishes the file it opened
in the prompt's outputs as a UI preview, so a fetch that scans every node can pick up the input.
Every number on this page is from files pulled off ComfyUI's output/ directory and
size-checked. Approach C's side arm (0.490) is a real render, and a real render can still return to the
frontal angle — that is the finding, not the bug.
NCC = normalised correlation of a 320×184 grey frame against the plate at the same timecode.
0.845 means "still visually the same framing"; it detects "it stayed frontal", it is not a success
metric for a real camera move (a genuine side view would score low, as 8_side_v3 does while still being frontal).
Temporal check: measured frame-to-frame shift is 0.0 px on the plate and on every arm — none of the renders
invented camera drift. Grade: luma p10/p50/p99 12/109/219 against the plate's 16/115/228.
5 · Why it failed, and what it costs to make it work
The core problem: H3 is an appearance-preserving video model, not a
camera-conditioned renderer. Its reference-video channel wins over prompt and control, so the output
protects the view it was given. Raise the control hard enough to fight that and the image collapses
(arms 5 and 6). The one lever that worked was putting the target view into the reference — and
then the render inherits the guide's softness.
The corollary: a re-projection sharp enough to be a good reference is the real
prize. Our proxy came from a single frame with no depth estimation, so the side view is guesswork.
A proper depth pass (or a camera-conditioned model) is the next experiment, not another prompt.
moves within the same family; separate model family, separate benchmark
~$2
6 · Prompts and graph, verbatim
A/B prompt — WIDE
In Video 1, re-shoot the same continuous live-action moment from a different camera position: the same office, the same three people, the same performance, seen from a camera that is 1.6 metres further back on the same side of the desk, with a wider 24 mm lens.
integrated_multimodal_description:
[Shot 1] Live-action, cinematic, naturalistic office drama. A wide medium shot from the same side of the paper-covered desk as Video 1, but the camera now stands 1.6 metres further back with a wider 24 mm lens, so the whole work table and all three adults are visible from mid-thigh upward, with the office around them. The grey-haired woman in the dark navy blazer leans over the desk with both hands among the papers in the centre of frame; the curly-haired woman in the loose beige blouse stands to her left in three-quarter profile; the tall Black man in the open grey overshirt stands behind them to frame right with his hands at his hips. They continue the exact performance of Video 1: every glance, head turn, hand movement, paper movement, eyeline, pause and timing is identical, only the camera has moved. Soft daylight comes from the window wall on the left of the room and falls across the desk exactly as in Video 1. The room keeps the same rows of office desks, black chairs, hanging rectangular ceiling lights, white columns and window mullions. Static Shot, no camera movement. Preserve the same people, faces, hair, clothing, colours, ages, the same papers and desk objects, the same background geometry, the same lighting direction, intensity and softness, the same exposure and colour grade, and the same motion and timing. Do not add, remove, replace, move, duplicate or invent any person, prop, lamp, window, chair, paper, door or background detail. Do not change the story action. No cut, no shot change, one continuous shot.
overall_soundscape:
The same room tone and the same dialogue performance as Video 1, with the same timing: quiet office air, distant movement in the open-plan room, papers shifting on the desk.
non_diegetic_music:
None.
A/B prompt — SIDE
In Video 1, re-shoot the same continuous live-action moment from a different camera position: the same office, the same three people, the same performance, now seen from the window side of the room, roughly 45 degrees around the group from where Video 1 was shot, looking back across the desk toward the inside of the office.
integrated_multimodal_description:
[Shot 1] Live-action, cinematic, naturalistic office drama. A medium-wide shot from the window side of the room, 45 degrees around from the camera position of Video 1, with a 40 mm lens looking across the paper-covered desk toward the interior of the office. The grey-haired woman in the dark navy blazer, who is nearest the desk, is now seen from her far side in three-quarter profile; the curly-haired woman in the loose beige blouse is farther away in the middle of frame; the tall Black man in the open grey overshirt is to frame right behind them. Soft daylight now comes from behind and beside the camera, from the same window wall as in Video 1, so the light falls on the faces and the desk from the side that the windows actually are, with the same softness and the same exposure. They continue the exact performance of Video 1: every glance, head turn, hand movement, paper movement, eyeline, pause and timing is identical, only the camera has moved. The room keeps the same rows of office desks, black chairs, hanging rectangular ceiling lights, white columns, window mullions and shelving. Static Shot, no camera movement. Preserve the same people, faces, hair, clothing, colours, ages, the same papers and desk objects, the same background geometry, the same lighting direction, intensity and softness, the same exposure and colour grade, and the same motion and timing. Do not add, remove, replace, move, duplicate or invent any person, prop, lamp, window, chair, paper, door or background detail. Do not change the story action. No cut, no shot change, one continuous shot.
overall_soundscape:
The same room tone and the same dialogue performance as Video 1, with the same timing: quiet office air, distant movement in the open-plan room, papers shifting on the desk.
non_diegetic_music:
None.
A/B prompt — TOP
In Video 1, re-shoot the same continuous live-action moment from a different camera position: the same office, the same three people, the same performance, now seen from directly above the desk, looking straight down.
integrated_multimodal_description:
[Shot 1] Live-action, cinematic, naturalistic office drama. A high-angle overhead shot with the camera 3.5 metres above the paper-covered work table, looking vertically downward, a 28 mm lens, so the desk and the tops of the three adults fill the frame. This is a plan view: the edges of the long work table run almost parallel to the frame, thick with files, folders, loose papers and glossy photographs. The grey-haired woman in the dark navy blazer stands at the near long edge with both hands spread among the papers; the curly-haired woman in the loose beige blouse stands at the left end of the table; the tall Black man in the open grey overshirt stands at the far long edge on the right. Only their heads, shoulders, arms, hands and clothing are visible from above, in their true positions around the table. Soft daylight from the window wall comes in from one side of frame and falls across the desk and the floor with the same softness and the same exposure as Video 1. They continue the exact performance of Video 1: every hand movement, paper movement, head turn, pause and timing is identical, only the camera has moved. The room keeps the same rows of office desks, black chairs, hanging rectangular ceiling lights, white columns, window mullions and shelving. Static Shot, no camera movement. Preserve the same people, faces, hair, clothing, colours, ages, the same papers and desk objects, the same background geometry, the same lighting direction, intensity and softness, the same exposure and colour grade, and the same motion and timing. Do not add, remove, replace, move, duplicate or invent any person, prop, lamp, window, chair, paper, door or background detail. Do not change the story action. No cut, no shot change, one continuous shot.
overall_soundscape:
The same room tone and the same dialogue performance as Video 1, with the same timing: quiet office air, distant movement in the open-plan room, papers shifting on the desk.
non_diegetic_music:
None.
C prompt — clean up the re-projection (SIDE)
In Video 1, restore and finish the shot. Video 1 is a rough re-projection of the moment at a new camera angle: the geometry and framing are correct, but the image is smeared, has seams and blank patches. Render the same moment cleanly at exactly that camera: the same office, the same three people, the same performance, at the same camera height and position, with the same lens.
integrated_multimodal_description:
[Shot 1] Live-action, cinematic, naturalistic office drama, medium-wide shot from the window side of a paper-covered work desk, looking across the desk toward the interior of the office at roughly 45 degrees to the original angle. The grey-haired woman in the dark navy blazer stands at the desk with her hands among the papers; the curly-haired woman in the loose beige blouse stands to one side in three-quarter profile; the tall Black man in the open grey overshirt stands behind them on the other side. Their positions, faces and body orientations match Video 1 exactly, but rendered cleanly and sharply, with correct perspective, correct occlusion between them, and no tearing, smearing, duplication or ghosting. Soft daylight comes from the window wall on the original camera's left, which is now behind and to one side of the camera; it falls across the desk and the faces with the same softness, colour and exposure as Video 1. The room keeps the same rows of office desks, black chairs, hanging rectangular ceiling lights, white columns, window mullions and shelving seen in Video 1. They continue the exact performance and timing of Video 1: every glance, head turn, hand movement, paper movement, eyeline, pause and timing is identical. Static Shot, no camera movement. Preserve the same people, faces, hair, clothing, colours, ages, the same papers and desk objects, the same background geometry and furniture, the same lighting direction, intensity and softness, the same exposure and colour grade, and the same motion and timing. Repair the image only: do not add, remove, replace, move, duplicate or invent any person, prop, lamp, window, chair, paper, door or background detail, and do not fill blank areas with new objects. No cut, no shot change, one continuous shot.
overall_soundscape:
The same room tone and the same dialogue performance as Video 1, with the same timing: quiet office air, distant movement in the open-plan room, papers shifting on the desk.
non_diegetic_music:
None.
Graph (what is wired where)
LoadVideo(plate) -> GetVideoComponents -> MiniMaxH3ReferenceToVideo.ref_videos.ref_video_0
-> .ref_video_audios.ref_video_audio_0
LoadVideo(guide) -> GetVideoComponents -> MiniMaxH3FunControlNetApply.control_video [approaches A and B]
ModelPatchLoader(controlnet_union_2.0_pruned_int8) -> .model_patch
UNETLoader -> MiniMaxH3FunControlNetApply -> BasicGuider.model AND BasicScheduler.model
MiniMaxH3ReferenceToVideo -> CONDITIONING -> BasicGuider ; -> LATENT -> SamplerCustomAdvanced
RandomNoise(seed) / KSamplerSelect(euler) / BasicScheduler(simple, 20 steps, denoise 1.0)
SamplerCustomAdvanced -> VAEDecode -> CreateVideo(24 fps) -> SaveVideo(h264)
Approach C: the warped clip replaces LoadVideo(plate) on the reference channel; no ControlNet.
7 · What a producer can take from this today
Usable now: a wider version of a locked shot, at previz grade — enough to cut into a
pitch or an animatic to show "we can open this up", not enough to cut into a finished scene.
Not usable yet: a true side or overhead angle from a single plate. The pipeline that would do it
(ReCamMaster-class, camera as an input) has not been run here; that is the next ~$4.
Files: this page, the eight renders, the camera sketches, the re-projection guides and the
FINDINGS document are in the Drive folder MULTIPLE_ANGLES. Everything is reproducible from
greybox.py / crosswarp.py / build_multicam.py in the same folder.