空间计算中的视觉与运动舒适度设计
Design considerations for vision and motion
2023年6月5日
一句话判断
如果你打算为 Apple Vision Pro 开发空间计算应用,这场 Session 是必看的人体工程学入门课——它从神经科学层面解释了为什么某些 3D 内容会让人眩晕、眼疲劳,以及如何系统性地避免这些问题。
这场 Session 讲了什么
Apple Vision Science 团队的 Manda Paul 和研究科学家 Herman Damveld 联合分享了空间计算体验中视觉舒适度和运动舒适度的设计准则。内容围绕两条主线展开:
视觉舒适度方面,Session 深入讲解了人眼感知深度的原理。大脑依赖多种视觉线索来判断深度——熟悉的大小、相对尺寸、模糊程度、运动视差、光影遮挡、纹理密度等。当这些线索缺失、冲突或具有误导性时,用户的眼睛无法正确会聚,就会出现复视或眼部疲劳。Session 特别提到了重复纹理模式(repeating patterns)这个容易被忽略的陷阱——当左右眼锁定到重复图案中不同的元素时,大脑会产生错误的深度感知。
运动舒适度方面,Session 从前庭系统(vestibular system)和视觉系统的协作原理出发,解释了”感知冲突”(sensory conflict)的根源。当眼睛看到的运动和内耳感知到的运动不一致时,就会产生晕动症。Session 给出了多种场景下的具体建议,包括虚拟物体运动、头部锁定内容、窗口内运动和振荡运动的处理方式。
值得深挖的点
深度线索的系统性框架:Session 将深度线索分为三大类问题——缺失、冲突和误导,并逐一给出了设计对策。这个框架可以当作空间计算 UI 的设计 checklist 使用。对于稀疏场景,需要主动添加背景、光影、遮挡关系等辅助线索;对于重复纹理,可以通过缩小图案范围或用其他设计元素打断来解决。
内容参数的四维调优:距离、尺寸、对比度、亮度——这四个参数不是独立优化的,而是需要根据使用场景联动调整。长时间阅读的内容应放在一臂距离之外,高对比度适合文本阅读,低对比度或透明度适合引导注意力转移。暗场景到亮场景的过渡需要放慢,给眼睛适应的时间。
眼部运动的人体工程学:向下看和左右看是最省力的方向,向上看和对角线方向最费力。需要长时间注视或阅读的内容应放在视线中心偏下的位置。如果某些体验必须要求极端的眼球旋转角度,应设计为短暂交互,或提供将内容移至视野中心的选项。
代码片段
这场 Session 偏设计理论,不涉及具体代码实现。但其设计准则会直接影响 SwiftUI 和 RealityKit 中的以下 API 使用方式:
// 在 RealityKit 中放置内容时注意深度距离
// 长时间阅读内容建议放在 1 米以外
let entity = ModelEntity(mesh: .generateBox(size: 0.3))
entity.position = SIMD3<Float>(0, 0, -1.2) // 放在舒适的阅读距离
// 窗口内容应避免放置在需要大幅仰视的位置
// 推荐位置:视线中心偏下
最佳实践
- 永远不要让深度线索自相矛盾:如果相对尺寸暗示物体 A 在前方,遮挡关系也必须一致,否则大脑会”卡死”在深度判断上。
- 手动渲染立体内容时格外小心:如果选择手动渲染立体视频等内容,确保每只眼睛的视差(disparity)完全正确。错误的视差会导致严重的视觉冲突和极度不适。
- 预留休息点:在体验流程中设计自然的停顿点,让用户可以休息眼睛。不要设计没有中断点的连续沉浸体验。
- 近处内容仅用于短暂交互:离用户最近的空间只用于需要瞬间注意力的内容或直接手部交互,不要把长时间阅读的内容放在眼前。
- 运动与用户预期一致:虚拟物体的运动方式要符合物理世界的经验。加速、减速、振荡都需要有合理的物理依据,避免突兀的速度变化。
还有什么值得关注
- Session 多次强调”允许用户调整内容深度”——这说明 Vision Pro 的交互设计中,用户自定义舒适距离是一个重要的系统级特性。
- 头部锁定内容(head-locked content)被特别点名需要注意——这类内容在视野中固定不动,但用户转头时会产生视觉与前庭系统的感知冲突,使用时需非常克制。
- 窗口内的滚动和快速运动也需要控制速度和加速度,不能因为是在窗口内就觉得随意。
- 如果你对人体感知科学感兴趣,Session 中关于双目会聚(binocular convergence)和前庭-视觉冲突的科普部分值得反复看,这是理解空间计算舒适度问题的理论基础。