渲染瞳距设错会整体改变对物体大小的判断
别名: 虚拟瞳距 · 相机间距 · virtual IPD · stereo scale
概念解释
两只渲染相机之间的距离是渲染瞳距(rendered / virtual IPD),不是头显上那对镜片的物理间距。相机比人的真实瞳距更开,同样的视差会被视觉系统当成「更近、更小」——整座房间缩成模型,这叫 Lilliputism;相机更窄,世界被放大。一次设错,大小判断是全局的,不是某几个物体的贴图比例错了。
镜片没对准眼睛会模糊、会累,那是另一条通路。这里即使图像是清晰的,几何基线错了,尺码照样整体漂。
机制
立体视觉在解深度时默认基线是自己的瞳距。视网膜视差 δ 近似 IPD / D,人用来反推 D。渲染用了 IPD′,人仍按自己的 IPD 去解,得到的距离是真距离乘以 IPD/IPD′。大小知觉跟距离走:同一张角大小的桌子,被解得更近就会被看成玩具,解得更远就会被看成巨型道具。
这和「把模型按比例缩小」不同。比例缩小改的是物体相对世界;渲染瞳距改的是观察者的尺。地面纹理、家具、自己的虚拟手会一起变,所以人很难用「这个杯子不像」单独校准,整把尺子都歪了。
运行时若拿一个群体均值(比如 63 mm)给所有人,两端的人会稳定地生活在偏小或偏大的世界里。用户改的如果只是镜片滑块而渲染相机没跟着改,模糊好了,尺码还是错。
怎么研究
做虚拟–真实大小匹配:让人调虚拟物体,直到它和手边一件已知尺寸的实物看起来一样大;或让人用双手比出物体的宽度。系统化地改渲染相机间距,保持物理镜片间距与清晰度不变。
自变量:渲染 IPD 与真实 IPD 的比值、场景中有无身体参照(虚拟手、已知尺寸道具)、任务是匹配还是绝对估计。 因变量:等效缩放系数、距离估计偏差、是否报告「自己变大了 / 世界变小了」。
筛掉立体视异常的人,否则大小效应会和「根本没在用视差」搅在一起。
边界
单目观看、或立体通道被关掉时,渲染瞳距几乎不起作用,大小改由角大小和熟悉尺寸承担。没有熟悉物体、没有身体可见的抽象空间里,人本来就估不准绝对尺度,基线误差会被更大的不确定盖住。视频透视若相机基线与眼睛不一致,会叠上另一层缩放,跟引擎里的虚拟 IPD 不是同一只旋钮。实验室常用的短时匹配测不出「十分钟后是否用虚拟手重新标定了尺度」。
怎么落地
- 渲染相机间距跟随用户的瞳距设定,并且和镜片滑块写成同一条数据,不要各改各的。
- 提供按自己手或一件真实参照物校准尺度的步骤,而不是只给「瞳距毫米数」一个数字框。
- 默认值用可改的个人档案,不要把一次出厂均值写死在场景里。
- 验证:让人并排看虚拟杯子和真实杯子,只改渲染间距、不改模型。杯子整体变玩具或变水缸,就是这条设错了;单个贴图比例正常不能当通过。