N5.02.1depth-based occlusion设计研究

虚拟物被真实物遮挡需要环境深度

别名: 环境深度遮挡 · 虚实遮挡 · occlusion mapping

概念解释

把虚拟立方体放到真实椅子后面,椅子腿应该挡住立方体。系统若没有椅子的深度,立方体只会整块画在最前,或者整块画在最后,中间没有「被挡住」这一档。基于深度的遮挡(depth-based occlusion)说的就是这件事:真实物体要挡住虚拟物体,必须先有一份环境深度——网格、深度图、或可命中的平面——供深度测试去切虚拟几何。

缺的不是「看起来融进去」的材质,是一张能参与深度比较的现实几何。

机制

光栅化按深度缓冲决定每个像素谁留下。虚拟几何自带深度;真实世界没有,除非另做一份。这份深度来自双目视差、飞行时间、结构光或 SLAM 重建的场景网格。分辨率、更新率和覆盖范围都有洞:桌沿可能是一条锯齿,椅腿可能被建成实心板,刚搬来的箱子可能还是空洞。空洞处虚拟物会漏出来,锯齿处边缘会闪。深度还是有时间戳的:网格停在上一秒,人已经把杯子伸进画面,测试用的是过期几何。

没有深度 API 的光学透视设备往往只能做加法叠加,真实物挡虚拟物这一方向根本进不了流水线——不是没画好,是没有可比较的第二份深度。

怎么研究

在已知几何的实验室里放一张桌子、一把椅子,把虚拟物分别放在「应被挡住」和「应挡住真实物」的位置,用外置相机或截取眼位画面,按像素算遮挡正确率,并量深度图与真值(激光扫描或标定模型)的绝对误差。自变量是深度源类型、网格分辨率、物体距离;因变量是遮挡像素正确率、边缘闪烁次数、被试判定「在后面」的比例。

界面研究用它来验收:场景理解权限打开之后,放置类任务是否真的具备「躲到家具后面」这一档,而不是只有「贴在所有东西前面」。

边界

远场、低空间频率的背景(整面白墙)即使深度粗糙,遮挡错误也不显眼。预先扫好房间、几何几乎静止时,静态网格够用;有人走动、门开合,过期网格会立刻变成错误遮挡。纯标记点方案把虚拟物钉在二维码上,不需要环境深度,但也无法让无关的真实家具参与遮挡。完全虚拟、关掉透视的关卡里,不存在真实物这一方,这条约束不成立。

怎么落地

  • 凡是「放到某件家具后面」的内容,把环境深度或场景网格列为功能前置,而不是上线后再补。
  • 深度置信度低的区域不要做精确遮挡:改成半透明轮廓或暂时提到近处,避免破洞漏光。
  • 几何会变的场所(会客、零售)要允许用户触发一次重扫,而不是假设开机那次网格永远正确。
  • 验证:把虚拟盒子放到真实椅背之后,左右绕行一周。任一角度盒子从椅腿中间完整露出来,就是深度没参与测试。

延伸

  • 同组N5.02.2 遮挡错误立即破坏空间可信度 · N5.02.3 手部遮挡是最常被注意的错误
  • 相邻N5.01 透视方式 · N3.10 深度冲突与穿模
  • 站内检索depth-based occlusion · scene mesh · environment depth

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/N5.02.1