CAMERA / SELECTION ANATOMY
METHOD ARCHIVE · CURRENT TEST2 / 2026.10.09 本次实测 ↗ 01 / 27
INPUT

完整房间 + 目标沙发

拖动可旋转 · 滚动切换步骤

DRAG TO ORBIT

正在读取规划数据

01

INPUT

从真实房间中
指定一个目标家具

房间以灰色代理显示,沙发保留真实轮廓。后续所有计算都围绕同一个世界坐标目标进行。

02

GEOMETRY PROXY

先把场景分成
三类几何角色

目标家具使用旋转 OBB;放在目标上的台灯、电脑等归为附属物;墙壁和其它家具归为环境障碍 AABB。三类都保留包围盒,但后续遮挡评分采用不同语义。

03

CAPTURE REGION

两层采样,
分别约束两件事

青绿色点从目标家具表面采样,要求家具主体完整入画并保持可见;蓝色点来自外扩捕获盒,覆盖家具周围和上方,为未知人体姿态预留画面余量。中央黑点是捕获盒中心,用作统一瞄准点,不是额外的人体预测。

04

POSITION REJECTION

先删掉相机本身
放不下的位置

红色体积表示相机不能进入的家具与结构占据空间;细线边界外也不允许放置。附属物同样参与位置碰撞,但不会在后续被错误地当成“外部遮挡家具”。

05

ONE DIRECTION / RADIAL INTERVAL

一条方向上,
先解近、远边界

太近时家具超出画面,太远时家具在画面里过小;两条边界之间,才是这个方向允许放相机的距离区间。

06

3D FRAMING SHELL

把所有方向的区间
扫成三维壳层

半透明体积是方向—距离区间共同形成的候选活动域;它已经与房间边界、相机高度和构图约束取过交集,所以只剩局部扇形体。细线是程序真正查询的离散截面。

07

AZIMUTH → ELEVATION → RADIUS

这些试探机位
从哪里来

先均匀扫 24 个水平角;每个水平角内试 5 个初始仰角,并在可行边界附近细分。每个方向只测试近—远壳层的端点和中点;遇到可行性、可见率或画面大小明显变化才继续二分,最后先保留该方向构图最好和距离最近的合法点。后两页会把其中的遮挡判断单独拆开说明。

08

OCCLUSION / TWO-VIEW EXAMPLE

拿两台试探机位
举一个例子

这里不是先在两台之间做选择,而是用一台被挡、一台通畅的机位解释同一套判断:红框是射线首先撞到的前景家具,红线在抵达捕获区域前被截断;黑线则能直接到达目标。

09

VISIBILITY / ALL QUERIES

把同一套判断用于
所有试探机位

画面为避免糊成一团,只抽样展示 14 个机位、每台 12 条射线;程序实际会对每个试探位置检查 512 个家具表面点和 256 个捕获区点。目标家具仍要求高可见率;附属物只计入轻量遮挡惩罚,不能因为台灯或电脑挡住局部就否定整台相机。

10

CANDIDATE POOL

留下 104 个
合法候选机位

每个方向先保留构图得分最高点与距离最近的合法点;局部微调、位置去重后,再把可行水平角分桶轮流保留,每个桶最多 6 个。这样既保留质量,也不会让同一片候选区占满候选池。

11

FINAL SET + OPEN TOUR

选出 8 台互补机位,
再单独规划开放运镜

这是 test5 历史案例:5° 水平方位、6° 观察方向和 0.35 m 空间距离的旧规则。当前代码已采用“方位或俯仰”去重和质量边界内的连贯排序;下方 CURRENT TEST2 展示实际更新结果。

12

EXAMPLE TWO / INPUT

同一个房间,
换成中间的小桌

把目标从沙发切换为房间中央的小桌。程序同时检测桌面上的水杯,并将它保留为目标家具的附属上下文。

13

THREE ROLES / BOUNDING BOX

桌子也先分成
三类包围盒

黑色是小桌的目标 OBB;琥珀色是程序检测到的桌面水杯 AABB;灰色是房间里的其它障碍。三类都参与相机位置碰撞,但只有环境障碍会触发强外部遮挡惩罚。

14

SUPPORT-SURFACE SAMPLING

先找自由桌面,
再向上建立采样柱

程序先在桌面生成 70 个锚点;与水杯及其它几何发生碰撞的 9 个点标为琥珀色并剔除,保留 61 个青绿色自由锚点。随后在每个自由锚点上方 0.15、0.50、0.90、1.30 m 取样,共得到 244 个蓝色交互采样点。

15

POSITION REJECTION

先删掉相机本身
放不下的位置

其它家具和墙体对应的相机禁入区域标红;桌面水杯仍保持琥珀色附属物身份。它同样不能与相机碰撞,但不会与外部环境障碍混成同一种语义。

16

ONE DIRECTION / RADIAL INTERVAL

一条方向上,
先确定距离范围

沿一个查询方向求近边界和远边界:太近时小桌与上方交互空间无法完整入画,太远时目标过小,只有中间区间继续参与位置搜索。

17

3D FRAMING SHELL

各方向的距离区间
组成候选壳层

蓝色体积由各方向的近—远距离区间共同组成,并不是规则球面;它已经受到房间边界、相机高度、构图和碰撞约束,红色线段是壳层内被障碍占用的部分。

18

DIRECTION SEARCH

24 个初始水平角,
再做自适应细分

这一案例共执行 756 次方向查询与 3333 次位置查询。只有在合法性边界或质量变化明显的区域继续细分,避免穷举整个三维空间。

19

SUPPORT-AWARE VISIBILITY

三类几何,
三种判断方式

目标小桌必须保持高可见率;普通环境障碍截断观察射线时使用强惩罚;水杯属于目标附属物,只对局部遮挡做折扣计分,因此不会因为杯子挡住少量点就淘汰整台相机。

20

EXAMPLE TWO / CANDIDATE POOL

3333 次位置查询,
留下 128 个候选

所有候选均通过位置、构图和支持关系感知的可见性检查;候选池还会限制同一方向的占用,避免局部高分区域挤满全部名额。

21

ARCHIVE / TEST9

历史桌面案例,
保留方法脉络

这组 test9 结果解释附属物处理,并非本次新算法验证。历史路线图是示意插值;下方只播放 test2 的实际输出帧轨迹。

22

CURRENT / VERIFIED TEST2

回到当前代码,
从 128 个候选开始

复用同一房间与沙发,输入 8 个机位预算。先搜索位置和角度,再选关键机位,随后才处理连接和访问顺序。这次只规划与渲染,没有人体重建。

23

COMPLEMENTARY KEY VIEWS

水平拉开,
或者高低互补

两台机位满足 15° 方位差或 15° 俯仰差即可通过两轴角度去重;仍需满足独立的方向和距离约束。集合选择综合构图、覆盖与最弱相机对差异,并做有界局部替换。

24

ORDER AFTER SELECTION

先确定机位,
再减少来回绕路

最近未访问机位提供候选顺序,但不强制逐步取欧氏最近。比较安全连接形成的完整开放路线,在画面质量容差内减少长度、重复经过与方位折返。

25

SMOOTH → VALIDATE → CHOOSE

平滑以后,
再检查输出帧

过强平滑可能切进障碍。尝试多个强度后,仅从通过碰撞与视野检查的轨迹中选择。本次采用 0.25;播放的是生产导出的相机位置和朝向。

26

ONE OPEN SHOT

八个机位,
一段连续开放镜头

编号表示实际访问顺序。相机经过各机位,不在中间停顿;各帧朝向来自生产 R 矩阵,对应固定目标 look-at。首尾不强制闭环。

27

ACTUAL OUTPUT / NO RECONSTRUCTION

看真实视频,
再检查八张图

视频先渲染 336 张 PNG,再由 FFmpeg 合成 MP4。8 个机位到达帧的 K/R/T 已核对;可用比例和质量分数属于几何采样代理,请结合实际画面判断。