# VR 双目字幕景深与遮挡问题调查报告 > 调查日期:2026-09 > 范围:`vrsub` 单体版 `srt-to-dual-eye-ass` 节点(`nodes/ass.py`)生成的 VR 双眼 > 字幕在头显中"景深/位置漂移、挡住人脸"问题的原理与配置/解决方案。 > 文档性质:原理调查报告 + 可选配置方案;**不含代码改动**(改动需另行评审)。 --- ## 1. 问题现象与现状定位 ### 1.1 用户观察到的现象 用 VR 头显观看 SBS(左右眼各半幅并排)双目视频时: 1. 字幕在虚拟环境中"自带"一个深度位置,时常与视频主体(人脸/近景物体)**不在同一景深**, 眼睛在字幕与画面主体之间来回对焦、会聚,有"飘浮感"或疲劳感; 2. 字幕有时**正好压在人物面部**上,遮挡人脸,影响观看。 ### 1.2 当前生成逻辑(代码事实) `nodes/ass.py` 的做法是: - 输出一个 `PlayResX×PlayResY`(默认 `3840x1920`)的 ASS 画布; - 为**同一句字幕文案**生成两条 Dialogue,分别套用 `LeftEye` / `RightEye` 两个样式; - `LeftEye` 样式的文本区域落在**左半幅**(`MarginL=50, MarginR=1920`), `RightEye` 落在**右半幅**(`MarginL=1920, MarginR=50`); - 两眼的垂直位置完全一致(`MarginV = height/2 + 60`,`{\an2}` 底部中央对齐); - 左右两半幅中的字幕**横向相对位置也完全一致**。 播放器把 SBS 帧的左半幅给左眼、右半幅给右眼后,左右眼画面中字幕落在各自视野的 **同一方向角**上——这正是"零视差 / 屏幕平面"的定义(详见 §2)。 结论:**当前实现把字幕固定渲染在"屏幕平面"上**(即双眼融合位置 = 头显虚拟屏幕所在 深度,通常约 1.3~2 m 光学距离)。而 VR 视频内容本身带有左右视差:人脸、近景道具等 可能凸出屏幕(负视差/交叉视差,视觉上更近)或陷入屏幕后(正视差,更远)。于是: - 当画面主体在屏幕前或屏幕后较远时,主体与字幕不在同一深度 —— 这就是"景深不匹配"; - 当画面主体(人脸)位于屏幕中央附近、字幕恰好也画在中央(当前 `MarginV` 使字幕位于 画面中部偏下)时,二者在屏幕坐标上重叠 —— 这就是"挡脸"。 > 也就是说:**"景深不匹配"与"挡脸"是两个不同层面的问题**。 > 前者由"字幕双眼视差 ≠ 画面主体双眼视差"引起(深度维度); > 后者由"字幕与主体占用同一块屏幕二维坐标"引起(平面维度)。 > 解决方案必须分别处理,不能混为一谈(见 §4、§5)。 --- ## 2. 双目视觉与立体显示的基本原理 ### 2.1 人眼如何感知深度 人眼判断深度依赖多类线索,立体显示主要利用的是**双眼线索**: - **双眼视差(binocular disparity)**:左右眼从不同位置观察同一物体,成像在视网膜上 存在水平位置差。大脑通过视差量级与符号判断物体的相对距离。 - **会聚(vergence)**:双眼注视近处物体时眼球向内转(会聚),看远处时近乎平行。 会聚角直接由注视距离决定,是一个**肌肉本体感受**线索。 - **调节(accommodation)**:晶状体通过改变曲率把注视点清晰成像在视网膜,调节量对应 注视距离,也是一个**肌肉线索**。 - 视差又分两类: - **交叉视差(负视差 / crossed / 出屏)**:物体在屏幕前方,左右眼看到的像互相"交叉", 双眼会聚于屏幕**前**; - **非交叉视差(正视差 / uncrossed / 入屏)**:物体在屏幕后方,双眼会聚于屏幕**后**。 - 物体恰好在屏幕平面时视差为零,双眼会聚点正好落在屏幕上。 在自然世界中,**调节与会聚指向同一距离**:看多近就聚焦多远、双眼就转多近。二者联动 且有同一套肌肉反馈。立体显示器(含 VR 头显)打破了这个联动,见 §2.2。 ### 2.2 会聚-调节冲突(VAC)是立体观看疲劳的根源 Hoffman 等人(2008,J Vis 8(3):33,PMID 18484839)在"会聚-调节冲突损害视觉表现并 造成视觉疲劳"一文中指出: > 立体显示器把所有图像呈现在**同一个物理表面**上,因此**调节与模糊线索始终指向屏幕 > (或头显透镜的固定光学距离)**,而会聚却被双眼视差拉向画面内容所在的深度。两者被 > 强制解耦,导致:(a) 需要更长的时间才能识别立体刺激;(b) 限时任务的立体敏锐度下降; > (c) 感知深度失真;(d) 疲劳与不适增加。 **VR 头显的特殊性**:HMD 的每只眼睛通过透镜观看一块近屏,光学上等效于把屏幕放在一个 **固定距离**(多数消费级头显约 1.3~2 m,部分早期设备更近),并且**没有真实环境参照**, 眼睛无法通过"看屏幕以外的东西"来放松调节。因此 HMD 中 VAC 是持续存在的(Kramida, IEEE TVCG 2016 对此有综述)。画面中任何"深度偏离屏幕平面较远"的内容,都会让使用者 承受相应大小的调节-会聚冲突。 Shibata、Kim、Hoffman、Banks(2011,J Vis 11(8):11,PMID 21778252)进一步量化了 "舒适区(zone of comfort)": > 对**给定观看距离**,存在一个能让绝大多数人不感到不适的**有限深度范围**;冲突的屈光度 > 越大越不适,且"内容在屏幕前"与"内容在屏幕后"在不同观看距离下不适程度不对称。 > 临床上的融合/调节测量(隐斜、单眼清晰融像范围)可以预测个体的易感性。 工程上常引用的经验结论是:在立体显示器上把内容深度限制在屏幕前后约 **±0.3~0.5 屈光度 (D)**(约屏幕前后 0.2~0.6 m,取决于观看距离)以内,绝大多数观众可舒适观看;超出此 范围疲劳与融像失败显著上升。注意**这是对常规直视型显示器**的结论,对 HMD 同样适用、 甚至更严格(因为 HMD 完全没有真实环境放松调节的途径)。 ### 2.3 视觉疲劳研究的其他关键结论 - **Yano 等(Displays 2004)**:"立体 HDTV 图像视觉疲劳的两个因素"——疲劳与 ① 会聚-调节冲突的累积、② 画面内大视差/快速视差变化都有关系;视差越大、变化越快越疲劳。 - **Speranza 等(Proc. SPIE 6055, 2006)**:立体图像中**大视差与画面运动叠加**会显著 降低舒适度——即使单帧视差不大,运动中反复跨越会聚点也使人疲劳。 - **Lambooij 等(J. Imaging Sci. Technol. 2009,综述)**:系统地总结了立体显示 不适/疲劳的诱因:过大的视差、过快的视差变化、会聚-调节冲突、观看时间、个体差异等。 对**字幕**的启示(结合上述原理与行业实践,如 SMPTE ST 428-10/429-12 的数字影院 字幕惯例、各 3D 电影制作规范): 1. **文本是"强调节刺激"**:阅读要求眼睛持续、精确地聚焦在字符上。把字幕放在零视差 (屏幕平面)时,调节与会聚指向同一处,阅读负担最低、字符最清晰; 2. **字幕若带视差**(放在场景深度),会让观众在"读字"与"看场景"之间来回切换会聚点, 且字幕常常持续整句数秒——属于"长时间、恒定的大视差",正踩中疲劳研究的雷区; 3. 因此,3D 电影/电视的字幕在**绝大多数情况下被放在零视差平面**,只有少数"叙事性 字幕/内嵌文字"会随物体入画。 > **核心结论 A(对应"景深不匹配")**:字幕在虚拟空间中的"位置/景深"完全由**左右眼 > 字幕渲染的水平错位(视差)**决定,与字幕在屏幕上画在哪里(上下左右)是**两回事**。 > 想要"把字幕放到某个深度",唯一要改的就是**左右眼各自字幕的水平位置差**。 --- ## 3. 把"深度配置"落到 ASS 几何上 ### 3.1 SBS 视频的字幕如何变成"双眼视差" 设 SBS 帧总宽为 `W`,左半幅给左眼、右半幅给右眼;`w = W/2` 为每眼半幅宽。 当前 ASS 以 `PlayRes = 3840x1920`(等于两条 1920 宽的半幅)建模: - 字幕在左半幅中的水平位置记为 `xL`(0..w),右半幅中记为 `xR`(0..w); - 当前代码:`xL == xR`(两半幅内相对位置相同)⇒ 两眼中字幕位于**同一方向角** ⇒ **零视差,字幕在屏幕平面**; - 若想让字幕**比屏幕更近(出屏)**:左眼图像中的字幕应**向右**移,右眼图像中的字幕应 **向左**移,即 `xL > xR`(交叉视差,双眼会聚点移到屏幕前); - 若想让字幕**比屏幕更远(入屏)**:反过来 `xL < xR`(非交叉视差,会聚点移到屏幕后)。 > 方向上的一句话记忆:**"左眼看得偏左、右眼看得偏右" ⇒ 物体比屏幕近**; > **"左眼看得偏右、右眼看得偏左" ⇒ 物体比屏幕远**。 > 与真实世界一致:近物在左右眼视网膜上位置相反(交叉),远物相同方向。 ### 3.2 从"目标深度"反推每眼要偏移多少像素 设: - `S` = 虚拟屏幕距离(≈ 头显光学焦距对应的观看距离,通常 1.3~2 m,可查头显规格); - `C` = 想让字幕出现的深度距离(`C < S` 出屏更近,`C > S` 入屏更远); - `IPD` = 瞳距,成人均值约 0.063~0.065 m; - `p` = **单眼像素的角宽度**(度/像素)= 单眼水平视场角 ÷ 每眼水平分辨率。 例如某头显单眼水平 FOV ≈ 100°、每眼 2048 px ⇒ `p ≈ 0.049 °/px`(等距柱状画面中央 区域近似;边缘因投影会拉伸,但字幕通常位于画面中央,近似够用)。 两步换算: 1. **需要的双眼视差角**(小角度近似): `η (rad) ≈ IPD × (1/C − 1/S)`,转为度数 `× 180/π`。 例:`IPD=0.065 m, S=1.6 m, C=1.1 m`(比屏幕近 0.5 m)⇒ `η ≈ 0.065 × (0.909 − 0.625) = 0.0185 rad ≈ 1.06°`。 又例:`C=2.2 m`(比屏幕远 0.6 m)⇒ `η ≈ 0.065 × (0.455 − 0.625) = −0.0111 rad ≈ −0.63°`。 2. **每眼水平平移量**:让左眼画面右移 `δ` 像素、右眼画面左移 `δ` 像素,会产生约 `2δ·p` 的双眼视差角,所以: `δ (px) ≈ η(度) / (2p)`。 接上例(`p=0.049°/px`):`η=1.06° ⇒ δ ≈ 10.8 px`;`η=−0.63° ⇒ δ ≈ −6.4 px`。 > 必须提醒:**`p` 因头显与播放器而异**(不同 FOV、是否等距柱状重投影、画面是否被 > "拉近"播放)。因此最稳妥的工程做法是**把"深度"暴露成可调参数而不是写死像素值**, > 让用户在自己设备上微调一次即可(见 §4.2)。本节公式只用于给出合理初值。 ### 3.3 舒适区边界对应的像素量级(实用参考) 把 `|Δ = 1/S − 1/C|`(屈光度差)限制在约 0.3 D 内作为**舒适初值**,以 `IPD=0.065 m, S=1.6 m, p=0.049°/px` 测算: | 字幕目标深度 C | 相对屏幕 | 视差方向 | 双眼视差角 | 每眼偏移 δ | | --- | --- | --- | --- | --- | | 1.6 m | 屏幕平面(0) | 零视差 | 0° | 0 px | | ≈1.22 m | 出屏约 0.38 m(+0.19 D) | 交叉(近) | ≈ +0.73° | ≈ +7 px | | ≈1.08 m | 出屏约 0.52 m(+0.30 D,舒适初值上限) | 交叉(近) | ≈ +1.12° | ≈ +11 px | | ≈2.3 m | 入屏约 0.7 m(−0.19 D) | 非交叉(远) | ≈ −0.71° | ≈ −7 px | | ≈3.05 m | 入屏约 1.45 m(−0.30 D,舒适初值上限) | 非交叉(远) | ≈ −1.11° | ≈ −11 px | **量级结论**:让字幕"明显换一个深度",通常只需**每眼 5~15 个像素的水平错位**; ±1° 双眼视差(每眼约 ±10 px @2048 半幅)就已是"明显出屏/入屏"的观感,同时也是 多数观众能长时间舒适融合的边界附近。做配置时**不要一上来就给几十上百像素的错位**。 ### 3.4 在 ASS 里如何表达这个水平错位(可行性说明) 当前实现让左/右眼字幕各自居中于半幅,水平位置由样式的 `MarginL/MarginR` 决定。 要加入视差偏移,有两种**不改变协议、不动播放链路**的表达方式: - **按样式偏移**:给 `LeftEye` 样式的文本区整体右移 `δ`、`RightEye` 整体左移 `δ` (即在各自半幅内把 `MarginL/MarginR` 同时平移),实现"整片字幕一个深度"; - **按句偏移**:在 Dialogue 的文本前缀使用 `{\an2\pos(xL+δ, y)}` / `{\an2\pos(xR−δ, y)}` 覆盖水平位置,实现**逐句不同的深度**(例如对白在屏幕平面、需要强调/场景绑定字幕 放到特定深度)。 垂直方向(上下)只影响"放在画面哪里",**不影响深度**。 --- ## 4. 方案 A:让字幕处于"正确"的深度 目标:消除"字幕景深与视频主体不匹配"的漂移感,同时把疲劳风险压到最低。 ### 4.1 A-1 默认零视差(屏幕平面)——推荐的保守默认 - 做法:维持现状(`xL == xR`),把字幕放零视差平面。 - 理由: 1. 文本是强调节刺激,字幕放在屏幕平面时**调节=会聚**,阅读最轻松(§2.2/§2.3); 2. VR 视频观看距离固定,屏幕平面本来就处在头显最舒适的深度区(VAC 为 0); 3. 字幕与所有"也在屏幕平面的内容"深度一致,漂移感最小; 4. 全行业 3D 字幕的主流做法。 - 适用:绝大多数对白字幕。 - **它与当前代码的差别**:当前实现其实**已经是零视差**,但有两个真正的缺陷需要修: - 播放器若以"整帧平面"方式渲染 ASS(很多播放器把字幕贴在全景帧上)没问题;但如果 播放器把字幕当作 **2D 悬浮层**叠加在 SBS 帧之外,深度由播放器决定,与 ASS 无关—— 此时需要确认播放链路(见 §6 局限); - 垂直位置默认在画面中部(`MarginV = height/2+60`),导致挡脸高发——见 §5。 ### 4.2 A-2 "贴合主体深度"模式(可调参数,谨慎使用) 若希望字幕"跟随"视频主体所在的深度(例如大部分时间人物位于屏幕前约 0.5 m),可让字幕 带一个**固定的、小的、与主体同方向的视差**,把字幕放到主体的平均深度附近: - 在 `srt-to-dual-eye-ass` 节点增加可选参数,例如: - `depth_mode`:`screen`(零视差,默认)| `scene_fixed`(固定目标深度)| `per_scene`(逐场景,需深度估计,远期); - `target_depth_m` / `depth_diopter`:目标深度或相对屏幕的屈光度差(推荐用屈光度, 因为它与屏幕距离无关、头显间可移植性好); - 运行时按 §3.2 换算成每眼偏移像素,写入样式或逐句 `\pos`。 约束(否则会重蹈"疲劳"覆辙): - **把相对屏幕的屈光度差限制在约 0.3 D 以内**(对照 §3.3,即每眼偏移几像素到十几像素); - **出屏(近)方向比入屏(远)方向更易疲劳**(Shibata 2011:近距离处正/负冲突不对称), 字幕尽量别比人脸更近; - **不要给单条长字幕恒定大视差**:一条字幕通常停留 2~6 秒,等于让眼睛长时间固定在一个 偏离屏幕的会聚点上(Yano 2004 的"累积疲劳")。 - **需要先估计主体的平均深度**。无深度图时可用近似规则: - VR 成人/剧情类视频大量为"人物近景、脸出屏 0.2~0.5 m"构图,可设 `target_depth_m = S − 0.3` 起步并允许用户微调; - 镜头/人物位置多变时,"固定一个深度"反而可能与某些镜头不匹配——此时建议退回零视差。 ### 4.3 A-3 动态/逐场景深度(远期路线) 更高阶做法是给字幕逐句/逐场景分配深度: - 用深度估计(如 MiDaS/双目立体匹配)或预置的视差图,求每句字幕对应时间段内 "画面主体/安全区"的平均视差,把字幕深度绑定到主体深度(或主体稍后 0.1~0.2 D); - 通过既有 OCR/抽帧流水线就能拿到关键帧,**人脸检测 + 主体视差估计**可以组合起来(见 §5); - 每句之间视差**平滑过渡**,禁止突跳(Speranza 2006 的"运动+视差变化"是疲劳来源)。 路线建议:**A-1 打底 → A-2 固定深度参数(近期可做)→ A-3 动态深度(远期)**。 --- ## 5. 方案 B:解决"字幕挡住人脸" 挡脸是**二维平面重叠**问题,深度方案救不了它——把人脸放到不同深度也不能让字幕"穿 过"人脸不遮挡视线(在立体显示中,若字幕深度比人脸更近,观感是字幕盖在人脸前;若更 远,则是人脸挡住字幕,同样干扰阅读)。因此主力方案是**二维位置避让 + 视觉降噪**。 ### 5.1 B-1 默认位置下移:避开人脸高频区(零成本,先做) 当前字幕画在画面**中部偏下**(`an2` + `MarginV = height/2 + 60`)。VR 人物近景构图里 人脸常处于画面中央区域,这是挡脸高发的直接原因。 - 把默认垂直位置改为**贴近底部安全区**(如 `MarginV ≈ 80~150`,可配参数); - 若视频主体/对白字幕本来就常出现在底部(少见,但可配 `top` 模式放到顶部),给 `position: bottom|top|center` 与 `margin_v` 两个可选参数; - 注意:VR 全景视频的画面**底部可能是地面/近景道具**,顶部可能是天花板/光斑—— 没有"永远安全"的固定位置,所以还需要 B-2/B-3 的动态手段。 ### 5.2 B-2 半透明底框 + 描边(视觉降噪,成本低) 挡脸的另一半观感来自"字压内容"。采用: - ASS 样式:`BorderStyle=1`(描边)+ `Shadow`,必要时用 `BorderStyle=3`(不透明框) 或增大 `BackColour` 透明度做半透明底板; - 可同时**轻微缩小字号**、限制每行字数(中文字幕建议单行 ≤ 14~16 字),减小覆盖面积; - 底框颜色选择接近视频暗部、半透明,观感为"字幕浮在画面上方"而非"糊在人脸上"。 这不能消除遮挡,但能显著降低"看不清人脸/看不清字幕"的双输观感,成本几乎为零。 ### 5.3 B-3 人脸/主体检测驱动的动态避让(推荐的中期方案) 在**字幕生成阶段**做一次"占位冲突检测",复用项目已有的抽帧与 OCR 基础设施: 1. 对每条字幕的起止时间段,从视频抽取 1~3 个关键帧; 2. 用人脸检测(或显著性/主体检测)得到每帧人脸包围盒,映射到 ASS 画布坐标; 3. 若字幕默认摆放位置与该时间段内的人脸框重叠,则按优先级移动: - ① 垂直移到对侧安全带(顶部/底部); - ② 同一侧上下微调避开具体人脸框; - ③ 仍冲突则缩短/分行/加底框兜底; 4. 对移动做**时间平滑**(相邻句子的位置不要跳来跳去),每句只需知道"前一句的位置"。 - 与现有代码衔接点:`subtitle-ocr`/`frame-extract` 已产出 `frames_manifest` 与帧图, 人脸检测可插在抽帧后;也可以做成独立可选节点(`face-aware-place`),不污染对白链路。 - 检测失败(无 GPU/无模型)时自动回退 B-1 的底部默认,保证可用性。 - 进阶:把"人脸框的中心深度"作为 A-3 动态深度的输入(§4.3),让字幕即不挡脸又贴合景深。 ### 5.4 B-4 字幕与人物"绑视差"(针对对白语义的高级玩法,谨慎) 对"对白字幕"可考虑让字幕深度**跟随当前说话人**(把字幕放到说话人所在深度、且稍微偏下 避开嘴部)。但这要求精确的主体视差/深度追踪,工程量大、且若说话人贴近屏幕(0.5 m 内) 字幕被迫也出屏很多,反而违背舒适区原则。**不推荐作为默认**,仅作为特殊场景的可选项。 ### 5.5 B-5 方案对比小结 | 方案 | 成本 | 解决程度 | 说明 | | --- | --- | --- | --- | | B-1 默认下移到底部安全区 | 极低(改默认参数) | 中 | 先做,立刻降低挡脸频率 | | B-2 半透明底框+描边+字号/行数限制 | 低 | 中(观感) | 与 B-1 组合默认启用 | | B-3 人脸检测动态避让 | 中(人脸模型+调度逻辑) | 高 | 推荐中期实现 | | B-4 字幕绑说话人视差 | 高 | 中高但疲劳风险 | 仅特殊场景 | | A-2/A-3 深度贴靠 | 中-高 | 解决"景深不匹配" | 与 B 系列正交,组合使用 | --- ## 6. 局限与需要注意的链路问题 1. **播放器如何渲染 ASS 决定一切**。当前假设"播放器把 ASS 渲染进 SBS 帧后分眼"。 若用户使用的 VR 播放器把字幕作为**头显 2D 悬浮 UI**(固定渲染在屏幕平面上、不随 视频视差移动),则 ASS 里任何深度配置都无效,只能靠播放器自身的字幕位置设置; 验证方法:在某句字幕上故意加 20 px 视差看是否产生出屏/入屏效果。 2. **SBS / 上下 / 帧封装格式**:本报告按 SBS(左右各半幅)推导;若是上下格式(TB)则 视差仍为水平方向,但需要把"半幅"概念换成上下半幅,且左右眼各自的水平错位关系不变。 3. **等距柱状投影的角分辨率不均**:画面中央角分辨率高、边缘被拉伸;字幕若放在画面边缘, §3.2 的 `p` 不准确。字幕通常放中央/下部,影响有限,但精确配置建议按"字幕所在区域" 校准 `p`。 4. **个体差异**:舒适视差范围因人而异(Shibata 2011 用隐斜测量预测个体易感性)。 参数化 + 允许用户微调,比"一刀切最佳值"更实际。 5. **动态内容**:镜头运动、人物出入画会改变主体视差;任何"固定深度/固定避让"都可能在 部分镜头失效——这正是 A-3/B-3 动态方案存在的意义,也是建议先做保守默认的原因。 6. **本报告不构成代码改动**:以上参数化(`depth_mode`、`position`、`margin_v`、 底框样式、人脸避让节点)都尚未实现,需要时另行按仓库 TDD 流程开发。 --- ## 7. 建议的落地优先级(结论) 1. **立刻可做(无新模型/无协议改动)**: - 字幕默认垂直位置从"画面中部"改到**底部安全区**,并暴露 `position`/`margin_v` 参数(对应 B-1); - 增加**半透明底框 + 描边**样式并限制单行字数(B-2); - 明确记录"当前实现 = 零视差/屏幕平面"这一事实到 AGENTS.md 与 ass 节点注释。 2. **近期可做(少量参数 + 换算函数)**: - 给 `srt-to-dual-eye-ass` 增加 `depth_mode`(`screen` 默认 / `scene_fixed`)、 `depth_diopter` 参数,按 §3.2 公式换算每眼像素偏移(A-2); - 配换算与边界检查(限制 |Δ| ≤ ~0.3 D、输出像素偏移范围、防越界); - 100% 覆盖率的单测(纯函数,可测)。 3. **中期可做**: - 人脸检测驱动的动态避让节点(B-3); - 场景主体深度估计 + 动态深度(A-3),二者可共享同一套关键帧与检测基础设施。 4. **设计原则**(沿用仓库北极星): - 深度/位置全部是**节点参数与 ASS 数据**,不写死业务代码; - 节点保持无状态、只经产物 URI 交换; - 任何新的"检测"能力做成独立可复用节点,不绑定单一工作流。 --- ## 8. 参考文献 以下文献的关键结论均经过原文/摘要核验(PubMed/Crossref/arXiv): 1. Hoffman DM, Girshick AR, Akeley K, Banks MS. **Vergence-accommodation conflicts hinder visual performance and cause visual fatigue.** J Vis. 2008;8(3):33. doi:10.1167/8.3.33. PMID 18484839. —— 会聚-调节冲突损害视觉表现并导致疲劳;显示器的调节线索固定指向屏幕。 2. Shibata T, Kim J, Hoffman DM, Banks MS. **The zone of comfort: Predicting visual discomfort with stereo displays.** J Vis. 2011;11(8):11. doi:10.1167/11.8.11. PMID 21778252. —— 定义并量化"舒适区";冲突大小与正/负方向、观看距离、个体差异对不适的影响。 3. Lambooij M, IJsselsteijn W, Fortuin M, Heynderickx I. **Visual discomfort and visual fatigue of stereoscopic displays: A review.** J Imaging Sci Technol. 2009;53(3):030201. doi:10.2352/J.ImagingSci.Technol.2009.53.3.030201. —— 立体显示视觉不适/疲劳诱因综述(视差幅度、视差变化率、观看时间等)。 4. Yano S, Emoto M, Mitsuhashi T. **Two factors in visual fatigue caused by stereoscopic HDTV images.** Displays. 2004;25(4):141-150. doi:10.1016/j.displa.2004.09.002. —— 大/持续视差与视差变动是疲劳的两个主要因素。 5. Speranza F, Tam WJ, Renaud R, Hur N. **Effect of disparity and motion on visual comfort of stereoscopic images.** Proc SPIE 6055 (Stereoscopic Displays and Virtual Reality Systems XIII). 2006. doi:10.1117/12.640865. —— 视差与画面运动叠加显著降低立体观看舒适度。 6. Kramida G. **Resolving the vergence-accommodation conflict in head-mounted displays.** IEEE Trans Vis Comput Graph. 2016;22(7):1912-1931. doi:10.1109/TVCG.2015.2476178. —— HMD 中 VAC 的机制与解决路线综述(调节固定 ⇒ VAC 持续存在)。 7. **Dynamic lens and monovision 3D displays to improve viewer comfort.** arXiv, 2015(Banks 组)。 —— 常规 S3D 显示调节线索错误、造成调节-会聚不匹配的机制说明。 8. SMPTE ST 428-10 / ST 429-12(D-Cinema Distribution Master / Packaging — Closed Caption and Closed Subtitle)。 —— 数字影院字幕/隐藏字幕以平面叠加呈现的行业惯例(非深度规定,仅作惯例佐证)。 > 免责:第 3.2/3.3 节的换算公式与数值为**面向本项目场景的工程推导**(IPD、观看距离、 > 角分辨率取典型值),用于给出可操作初值,并非某篇论文的直接结论;实际参数应以 > 目标头显规格与主观验证为准。