设想你是一位主题乐园的总设计师。游客(用户)走进这座立体乐园,最关心的问题永远是三件事:怎么走到想玩的项目?眼睛该往哪儿看?伸手能抓住什么?而你作为设计师,要规划每一条动线、每一处观演视角、每一个抓娃娃机的夹子灵敏度,甚至过山车推背感的强弱。这些看似琐碎的决策,拼起来就是完整的「3D 交互设计」。2D 网页像一张摊开的地图,用户只需点击与滚动;而 3D 应用是一整个可穿行的空间,用户需要移动、环顾、抓取、比划,还要从每一次反馈中体感「这个世界是活的」。本文沿着这座乐园的设计图纸,系统梳理实时 3D 应用中六类核心交互设计模式——空间导航、视角控制、拾取选择、手势交互、物理反馈与认知设计——带小白读者建立一套可复用的 3D 交互设计方法论。

岗位关联

3D 交互设计师是三维世界的「动线规划师」。掌握这些模式,你才能让用户在不迷路、不眩晕、不困惑的前提下,流畅地完成空间中的每项任务——这正是数字孪生、VR/AR、3D 游戏产品体验的胜负手。

目录
  1. 可视化演示
  2. 空间导航模式
  3. 视角控制设计
  4. 拾取选择机制
  5. 手势交互设计
  6. 物理反馈系统
  7. 认知设计原则
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示实时3D应用中的交互设计模式的核心机制,通过架构/数据/状态/性能四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

实时3D应用中的交互设计模式:D交互设 3D交互设计基础与空间认知 视角控制与空间导航模式 核心机制可视化 实时3D应用中的交互设计模式整体架构与关键组件

空间导航模式

想象你是乐园动线设计师,游客站在入口广场,脑海里只有一个问题:水上过山车怎么走?你可以给三种答案:步行过去(行走导航)、坐上观光车绕园一周(轨迹漫游)、乘坐直达电梯瞬间抵达(瞬移传送)。再配合地图路牌和远处可见的塔楼(空间锚点),游客就不会迷路。空间导航模式,就是回答「用户如何在 3D 世界里从 A 点抵达 B 点」的一系列交互方式。

在实时 3D 应用中,导航模式直接决定舒适度与沉浸感。行走/瞬移是最常用的一对:瞬移适合远距离,操作快且不易眩晕,但会打断空间连续感;行走适合近距离探索,沉浸感强,但连续高速移动容易引发晕动症。轨迹漫游则常用于数字孪生导览或过场展示,让镜头沿预设路线自动滑行,用户只需「坐在观光车上看」。空间锚点是场景中醒目的地标物,如高塔、光柱、特殊建筑,帮助用户持续建立「我在哪」的方向感;导航辅助则是小地图、箭头指引、目的地标记等辅助图层。

为了缓解行走导航的眩晕问题,工程上常给移动加上加速度缓冲:起步时缓慢加速、停步时缓慢减速,而不是瞬间变速。

回到乐园的比喻:好的动线设计不是让游客「瞬间闪现」到目标前,而是让每段路都有平滑的节奏、清晰的路牌和醒目的地标。空间导航模式选得好不好,决定了游客是享受逛园,还是晕头转向。

x(t)=x0+v0⋅t+12a⋅t2\displaystyle x(t) = x_0 + v_0 \cdot t + \frac{1}{2} a \cdot t^2
这个公式描述角色位置随时间的变化:起始位置叠加匀速运动,再叠加一段加速度修正项,让移动轨迹从「急停急走」变成「平滑起止」。
  1. 起始位置\(x_0\) 是角色在时间 \(t = 0\) 时的坐标,对应游客出发时所在的地点。
    x0x_0
  2. 匀速推进\(v_0 \cdot t\) 是初速度乘以时间,即如果速度恒定,位置会随时间均匀向前延伸,对应游客匀速步行。
    v0⋅tv_0 \cdot t
  3. 加减速缓冲\(\frac{1}{2} a \cdot t^2\) 是加速度带来的位移修正,让角色起步和刹车都有一段平滑过渡,避免瞬间变速造成的眩晕感。
    12a⋅t2\frac{1}{2} a \cdot t^2

视角控制设计

乐园里每场演出都需要设计机位:观众席是固定视角,手持云台跟拍主播是跟随视角,围绕舞台转圈的摄影机是轨道环视,游客自由走动观看是自由视角。视角控制设计,回答的是「用户的眼睛应该放在哪里、能往哪里看」。3D 世界里镜头(Camera)代表用户的眼睛,镜头控制直接影响空间理解与操作精度。

实时 3D 应用中最常见的是三类视角:跟随视角(第三人称)让镜头始终在角色身后,适合动作与角色扮演;自由视角(第一人称或自由飞行)让用户完全控制观察方向,适合探索与设计工具;轨道环视(Orbit)让镜头围绕目标物体旋转,焦点永不丢失,是 3D 编辑器和购物展示的主流选择。视角切换则需要平滑过渡——硬切会让用户瞬间丢失方向感,就像演出中途突然换了观众席座位。

轨道环视有个经典工程细节:垂直方向的旋转角必须被「钳制」在一个安全范围内。如果不加限制,用户可以一直向上翻越,镜头越过天顶后画面会瞬间上下颠倒,造成严重的方向混乱。

回到乐园的比喻:再自由的观众也不能爬到舞台顶棚去看演出。视角控制的关键不是「给用户全部自由」,而是「在自由与不眩晕之间找到精确的边界」。

ϕclamped=max⁡(ϕmin⁡, min⁡(ϕmax⁡, ϕ))\displaystyle \phi_{clamped} = \max\left( \phi_{\min},\, \min\left( \phi_{\max},\, \phi \right) \right)
这是「垂直视角角度限制」公式:把用户当前的俯仰角 \(\phi\) 限制在最小角与最大角之间,防止镜头翻转过顶。
  1. 当前角度\(\phi\) 是相机当前的垂直俯仰角,也就是用户抬头或低头的角度值。
    ϕ\phi
  2. 上下限约束\(\phi_{\min}\) 与 \(\phi_{\max}\) 设定了合法视角的边界,一般取 \(-89^\circ\) 到 \(89^\circ\),留出 1° 余量避免万向锁问题。
    ϕmin⁡,ϕmax⁡\phi_{\min}, \phi_{\max}
  3. 双重钳制内层 \(\min\) 把角度压到上限以下,外层 \(\max\) 把角度抬到下限以上,最终 \(\phi_{clamped}\) 永远落在安全区间。
    max⁡(ϕmin⁡,min⁡(ϕmax⁡,ϕ))\max(\phi_{\min}, \min(\phi_{\max}, \phi))

拾取选择机制

乐园里的抓娃娃机是所有人的最爱:你摇动操纵杆(鼠标或触屏),夹子从镜头方向伸出,精准夹住目标玩偶。拾取选择机制,就是 3D 世界里的「抓娃娃机」——回答「用户如何从三维场景中选中一个物体」。2D 网页只要判断鼠标是否落在按钮矩形里,3D 场景却有前后遮挡、空间重叠和深度关系,远比 2D 复杂。

最核心的技术是射线检测(Raycasting):从镜头位置发射一条看不见的射线,穿过屏幕上的鼠标光标位置,笔直射入 3D 场景;射线沿途碰到的第一个物体就是「被选中」的目标。为了降低计算量,工程上常用包围盒拾取:不拿射线与物体精细网格做碰撞,而是先与简化后的长方体或球体包围盒求交,快得多,精度也足够。拾取还需要设置距离阈限——太远的物体默认不可选中,如同抓娃娃机的夹子够不到最远的玩偶。高亮反馈则是拾取后的「确认信号」:物体描边发光、颜色变化或抖动一下,让用户明确知道「我选中了它」。

射线检测的数学本质是一条参数直线:给定起点和方向,逐步增大距离参数寻找第一个交点。

回到乐园的比喻:抓娃娃机好玩的秘诀,是让人「看得见、够得着、抓得准」。拾取设计同样如此:射线要准、距离要合理、选中的反馈要足够显眼,游客才会觉得「这个世界听我的话」。

P⃗(t)=O⃗+t⋅D⃗\displaystyle \vec{P}(t) = \vec{O} + t \cdot \vec{D}
射线方程:从原点 \(\vec{O}\) 出发,沿着方向 \(\vec{D}\) 前进 \(t\) 个单位的距离,得到的点 \(\vec{P}(t)\)。拾取就是从 \(t=0\) 开始不断向前找,碰到物体就停。
  1. 射线原点\(\vec{O}\) 是射线发射的起点,即镜头在三维空间中的坐标,可以理解为抓娃娃机夹子伸出的出口。
    O⃗\vec{O}
  2. 方向向量\(\vec{D}\) 是单位方向向量,决定了射线射向何方,由鼠标光标在屏幕上的位置经投影逆变换计算得出。
    D⃗\vec{D}
  3. 距离参数\(t\) 是沿方向前进的距离。让 \(t\) 从 0 开始增大,直到与某个物体的包围盒相交,此时返回 \(t\) 值即可算出命中点的准确坐标。
    tt

手势交互设计

乐园官方 App 里有张可缩放旋转的 3D 地图:你用两根手指向外一撑,地图就放大,这是捏合缩放;单指滑动,地图旋转,这是滑动旋转;轻轻一点某个项目图标,就弹出详细介绍,这是轻点确认。手势交互设计,回答的是「用户如何用手指的姿势操作 3D 场景」,它是移动端和 VR/AR 设备上的核心交互语言。

捏合缩放的本质是跟踪两根手指之间的距离变化,映射成场景缩放系数。滑动旋转则把单指位移映射为相机旋转角度——横滑改变水平方位角,纵滑改变俯仰角。轻点确认是一种低干扰的触发方式,适合选择、打开、确认等高频简单操作。手势冲突是隐藏的深坑:单指滑动和双指捏合同时发生时,系统必须靠「手指数量 + 移动距离阈值」仲裁该执行哪个手势,就像一个裁判同时盯着两个运动员的犯规动作。

捏合缩放的核心是距离比例映射:手指张开到两倍的初始距离,场景就放大到两倍。

回到乐园的比喻:好用的 App 地图应该像一张智能导游图——你拉大看细节,缩小看全局,不会因为手指交叉就误触误划。手势设计的目标,就是让每个动作都「按直觉发生,且彼此不打架」。

Snew=Sold×dcurrentdreference\displaystyle S_{new} = S_{old} \times \frac{d_{current}}{d_{reference}}
缩放系数更新公式:用当前两指距离占初始基准距离的比例,乘以上一帧的缩放系数,得到新的缩放系数。
  1. 基准距离\(d_{reference}\) 是两个手指刚刚按下时的初始间距,作为缩放的「记忆基准点」。
    dreferenced_{reference}
  2. 当前距离\(d_{current}\) 是手指移动过程中两指间实时变化的最新距离。
    dcurrentd_{current}
  3. 比例映射\(\frac{d_{current}}{d_{reference}}\) 表示距离放大或缩小了多少倍,与上一帧的缩放系数 \(S_{old}\) 相乘得到新系数 \(S_{new}\),实现跟手的缩放效果。
    Sold×dcurrentdreferenceS_{old} \times \frac{d_{current}}{d_{reference}}

物理反馈系统

坐过山车时,俯冲的推背感让你手心出汗;坐旋转木马时,轻柔的起伏让你放松。物理反馈系统,就是对「这个世界手感」的设计——回答「当用户推动、碰撞、下坠、抓取时,3D 世界应该给出什么样的力学回应」。没有物理反馈的世界像一盘散沙:桌子一推就穿墙、石头轻碰就飞走、物体悬在空中不掉落。

实时 3D 中最常见的是三类物理模拟。碰撞响应保证物体之间不会互相穿透——你推箱子时箱子会挡在墙边,而不是嵌入墙面;这也叫防穿模。重力模拟让物体下落、让角色落地,增强场景的真实感。触觉反馈则是更高阶的一层:手柄或手机马达在「碰撞瞬间」震动一下,像过山车座椅在俯冲时的机械抖动;弹性动画则是给刚硬物理加上柔软外壳,比如球落地时压扁又弹回,让动作看起来更有生命力。真实感要克制:在游戏和 AR 里,「增强物理感」往往比「精确物理」更重要。

物理反馈最底层的依据是牛顿第二定律:力、质量与加速度之间的关系。同一个力推木球和石球,木球飞得远,石球几乎不动。

回到乐园的比喻:过山车和安全座椅的每一颗螺丝都在告诉你「你现在很安全地飞驰」。物理反馈的设计目标,是让用户从指尖到身体都确信:这个 3D 世界有重量、有阻挡、有温度。

F=m⋅a\displaystyle F = m \cdot a
力等于质量乘以加速度。这也是 3D 物理引擎计算物体运动的核心公式:推一下,物体获得加速度;质量越重,加速度越小。
  1. 作用力\(F\) 是施加给物体的总作用力,比如玩家推动箱子时手柄输入的推力。
    FF
  2. 物体质量\(m\) 是物体的质量属性。在物理引擎里,质量决定物体对力的「抵抗程度」。
    mm
  3. 加速度\(a\) 是物体获得的加速度,由 \(a = F / m\) 算出——质量越大,加速度越小,这正是「大象比兔子更难推动」的 3D 版直觉。
    aa

认知设计原则

最后,也是最容易被忽略的一层:游客的脑子。乐园再漂亮,如果路牌藏在草丛里、每个景点的售票规则都不一样、走错路无法回头,游客就会又累又焦虑。认知设计原则,回答的是「如何让用户的大脑顺畅理解 3D 世界的规则」。它决定了交互设计的品质上限。

核心原则有四条。模式可见性:让用户一眼就能看出「这里可以走、这个物体可以抓」——交互提示要直接出现在可交互对象上,而不是藏在帮助菜单里。设计一致性:同类型的物体会话保持一致的操作方式,比如所有门都用同一个手势打开;一旦改变,用户就要重新学习。容错与恢复:允许用户犯错并提供撤销路径,比如误删模型可以一键恢复、误操作可以倒退,让用户敢于大胆探索。学习曲线:新用户可以先用少量简单操作完成任务,再逐步解锁高级操作——就像乐园先用观光车带游客熟悉全园,再鼓励他们自由探索。

用户做选择的速度与选项数量有关,这正是认知负荷的数学模型——希克定律(Hick's Law)。

回到乐园的比喻:认知设计就是乐园的「无声服务系统」——路牌永远出现在你犹豫的位置,规则永远不突然变化,走错路口总有回头路。用户不会记得这些设计,但他们会记得「这个乐园真顺畅、真舒服」。

T=a+b⋅log⁡2(n+1)\displaystyle T = a + b \cdot \log_2(n + 1)
决策时间随选项数量呈对数增长:选项从 2 个加到 4 个,反应时间只增加一点点;但如果从 2 个加到 20 个,用户就会明显变慢。
  1. 基线时间\(a\) 是无论选项多少都必需的固定反应时间,相当于「看到路牌后本能地愣一下」的时间。
    aa
  2. 每项成本\(b\) 是每个备选项带来的额外决策时间系数;选项越陌生、越难区分,\(b\) 就越大。
    bb
  3. 对数增长\(\log_2(n + 1)\) 表示决策负担随选项数按对数增长而非线性增长:4 个选项比 2 个选项只多约一个「单位」的思考时间。
    log⁡2(n+1)\log_2(n + 1)

AI 应用场景

数字孪生工厂巡检

阶段:3D 场景交互层

解决的问题:传统工厂巡检需要人到现场看设备,效率低且有安全风险。数字孪生平台把整个工厂搬进 3D 场景,通过空间导航模式让维护人员「瞬移」到任意车间,用射线拾取点击任意设备,立即查看温度、振动、能耗等实时数据。搭配轨道环视视角,可围绕设备观察结构细节,巡检效率提升数倍。

具体案例:某钢铁集团的数字孪生平台上,操作员从总览大屏一键瞬移到高炉车间,用鼠标点击高炉感应器,系统弹出实时温度曲线;点击异常设备时,高亮反馈让其快速定位,同时手柄传来轻微震动,警示该设备超过正常温度阈值。

VR 家居设计体验馆

阶段:交互反馈层

解决的问题:传统家装设计靠 2D 图纸,用户难以感知空间尺度。VR 家居应用中,用户用双指捏合缩放查看户型、抓取沙发在房间中拖放,物理反馈系统实时检测碰撞——沙发靠到墙边会被「挡住」而不是穿模,掉落在地毯上会微微弹起,让用户直观感受家具的尺寸与空间关系。

具体案例:某家具品牌 VR 体验馆中,用户戴上头显,站在虚拟客厅中央,用一只手「拿」起茶几放到电视墙前;放手时茶几因重力自然落地,轻触手柄产生落地的震感;用户绕茶几走一圈(空间导航),从各个角度确认尺寸是否合适,最后轻点确认下单。

AR 工业装配指导

阶段:空间认知层

解决的问题:复杂设备的装配依赖纸质手册,工人容易看错步骤。AR 眼镜把装配步骤以 3D 箭头和零件模型叠加在真实设备上,手势交互设计让工人用「轻点」确认当前步骤、用「滑动旋转」从任意角度比对零件,认知设计原则保证每个步骤只有 3~5 个选项,避免决策过载。

具体案例:某航空发动机装配线上,工人佩戴 AR 眼镜,看到虚拟扳手精确指示拧紧位置;射线拾取技术让工人可以用目光标记已完成的位置,系统自动记录进度并高亮下一步;操作出错时,弹性动画提示零件回弹到原位,并提供一键撤销。

Python 演示

python50 行
import math  def dot(a, b):    return a[0]*b[0] + a[1]*b[1] + a[2]*b[2]  def sub(a, b):    return (a[0]-b[0], a[1]-b[1], a[2]-b[2])  def ray_hit_sphere(origin, direction, center, radius):    oc = sub(origin, center)    b = dot(oc, direction)    c = dot(oc, oc) - radius * radius    disc = b * b - c    if disc < 0:        return None    t = -b - math.sqrt(disc)    return t if t >= 0 else None  def pick(objects, origin, direction):    best = None    best_t = float('inf')    for name, center, radius in objects:        t = ray_hit_sphere(origin, direction, center, radius)        if t is not None and t < best_t:            best_t = t            best = name    return best  def main():    camera = (0, 0, 0)    aim = (0.5, 0.2, 5)    length = math.sqrt(dot(aim, aim))    direction = tuple(v / length for v in aim)    objects = [        ('宝箱', (1, 0, 3), 0.5),        ('石门', (-1, 0, 4), 0.5),        ('火把', (0.5, 0.2, 5), 0.3),        ('雕像', (2, 1, 8), 0.8),    ]    result = pick(objects, camera, direction)    print('射线从镜头出发,命中的物体是:', result)  if __name__ == '__main__':    main()
目的:用纯 Python 实现 3D 拾取的核心算法——从镜头发射射线,检测与多个球体物体相交,返回最近的命中物体。
  1. def ray_hit_sphere(origin, direction, center, radius):定义射线与球体的相交检测函数,返回交点距离参数 t
  2. oc = sub(origin, center)计算镜头到球心的向量,把问题转化为「点是否在球面上」
  3. disc = b * b - c判别式:小于 0 说明射线与球体无交点,如同抓娃娃机的夹子落空
  4. t = -b - math.sqrt(disc)取较小的正根,即离镜头最近的进入点
  5. if t is not None and t < best_t:遍历所有物体时保留 t 值最小的,对应「最近命中」原则
  6. direction = tuple(v / length for v in aim)将瞄准向量归一化为单位向量,保证射线方程中的 t 精确代表距离

常见误区

误区我以为在网页按钮上加个阴影、让它能立体旋转,就算把 2D 交互变成 3D 交互了。

正解3D 交互的核心不是视觉立体感,而是「三维空间关系」:用户需要移动自己或镜头、感知深度、从任意角度观察并操作带位置与朝向的物体。悬浮按钮本质仍是 2D 平面交互,只是披了层立体皮肤。判断标准很简单:去掉立体装饰后这个交互还能成立吗?成立就还是 2D 思维。

为何常见:因为 2D 和 3D 的最终呈现都依赖屏幕,视觉上的「立体感」最容易误导人,导致把动画效果误当成空间交互设计。

误区我总认为 3D 应用应该给用户完全自由的视角,能三百六十度随便翻转才是高级体验。

正解完全自由意味着用户要自己管理所有空间方位信息,很容易迷失方向、翻转过顶后画面颠倒、甚至引发严重眩晕。成熟的 3D 交互会用「受约束的自由」:垂直角度被钳制在安全范围、相机距离有上下限、切换视角时平滑过渡。自由是手段,稳定不迷失才是目标。

为何常见:人们容易把「自由度」等同于「体验质量」,却忽略了空间认知的负担——就像给游客一张没标路线的自由地图,最终只会让人迷路。

误区我以为 3D 拾取和 2D 没本质区别,反正都是「鼠标点在哪,就判断那个位置有没有可点的东西」。

正解2D 是平面坐标系命中测试,3D 则是「从镜头沿鼠标方向发射一条射入场景的线」,还要考虑深度、前后遮挡、最近命中。射线要与物体的三维包围盒或网格求交,返回的是空间交点坐标而非屏幕像素。这正是「夹子从镜头伸出够向玩偶」与「手指直接按在平面照片上」的本质区别。

为何常见:因为最终都表现为「点一下选中物体」,屏幕结果的相似性掩盖了底层计算逻辑的巨大差异。

误区我总觉得实时 3D 应该尽量逼真模拟现实物理——重力、摩擦、碰撞全按真实值来,这样体验才够「硬核」。

正解完全真实的物理往往不好用:箱子推半天推不动、球滚得追不上、物体被撞飞后就找不到了。好的 3D 交互采用「游戏化物理」——适度增强弹性、放大碰撞反馈、延迟重力生效,让操作更有手感和愉悦感。物理的使命是服务交互意图,不是成为交互障碍。

为何常见:接触过物理引擎的人容易崇拜「真实模拟」的正确性,却忽略了交互设计的第一目标是易用性。

误区我总认为交互设计要把捏合、旋转、长按、双击、三指滑动全支持上,功能越全越专业。

正解每增加一个手势,用户就要多记一个「动作与结果」的映射关系,还会带来手势冲突和误触。Hick 定律告诉我们:选项(功能)越多,用户决策越慢。成熟的手势设计遵循「少而准」:核心操作 2~3 个手势足够,且手势之间有清晰的区分度和冲突仲裁优先级。

为何常见:功能清单看起来越丰富,似乎显得产品越强大,不少人因此忽视了认知负荷与误触风险。

面试题

Q1. 3D 交互设计中,「空间导航」最核心解决的问题是?

单选题 · easy

  • A.让用户记住更多快捷键
  • B.帮助用户在三维空间中移动到目标位置← 正确答案
  • C.提升场景画面的渲染分辨率
  • D.增加 3D 模型的多边形数量

答案:B。空间导航回答「用户如何在 3D 世界里从 A 点抵达 B 点」,核心是位移与寻路。快捷键是操作效率问题,渲染分辨率是视觉质量问题,多边形数量是建模问题,都与导航的本职无关。

Q2. 以下哪一项是「瞬移式导航」的典型优点?

单选题 · easy

  • A.可以完整展示沿途的风景
  • B.操作难度低且不易引发眩晕← 正确答案
  • C.需要更复杂的物理引擎支撑
  • D.必须借助手柄才能完成操作

答案:B。瞬移是点选目标位置后直接抵达,避免了连续视觉流动引发的晕动症,且只需一次点选操作,难度低。展示沿途风景是轨迹漫游的优点;瞬移不需要物理引擎参与;瞬移在 PC、移动端和 VR 中都能实现,并非必须手柄。

Q3. 轨道环视(Orbit)摄像机的主要特征是?

单选题 · mid

  • A.摄像机始终固定在角色头顶俯视地面
  • B.摄像机围绕目标物体旋转并始终保持焦点← 正确答案
  • C.摄像机完全无规律地随机自由移动
  • D.摄像机固定不动只允许做缩放操作

答案:B。轨道环视的镜头绕着目标物体旋转,视线始终锁定焦点,是 3D 编辑器和商品展示的主流视角。头顶俯视是跟随视角的一种特例而非轨道环视;完全随机移动没有设计意义;轨道环视除了缩放还支持旋转查看角度。

Q4. 垂直视角钳制算法的主要作用是?

单选题 · mid

  • A.防止相机翻转过顶导致画面方向混乱← 正确答案
  • B.提高场景渲染的效率从而提升帧率
  • C.限制用户看到距离太远的物体
  • D.让场景画面的整体亮度更高

答案:A。钳制把俯仰角限制在 \(-89^\circ\) 到 \(89^\circ\) 之间,防止镜头越过天顶后发生上下颠倒。渲染效率取决于面数和遮挡剔除,场景可见距离由视锥体裁切决定,亮度由光照决定,均与垂直角钳制无关。

Q5. 在射线拾取公式 \(\vec{P}(t)=\vec{O}+t\vec{D}\) 中,参数 \(t\) 的含义是?

单选题 · mid

  • A.射线方向向量的模长
  • B.从起点沿射线方向前进的距离参数← 正确答案
  • C.被拾取物体的材质编号
  • D.鼠标光标的屏幕坐标纵轴值

答案:B。\(t\) 是沿方向向量推进的距离参数,命中物体时返回的 \(t\) 值可用于计算交点的三维坐标。方向向量 \(\vec{D}\) 的模长在归一化后为 1;材质编号与屏幕坐标都是完全无关的概念。

Q6. 当两个物体沿射线方向一前一后排列时,拾取算法应选择哪个?

单选题 · hard

  • A.屏幕外形看起来最大的物体
  • B.\(t\) 值最小的物体(最近的交点)← 正确答案
  • C.场景中总面数最多的物体
  • D.高亮效果最明显的物体

答案:B。射线拾取遵循「最近命中」原则,只取第一个与射线相交的物体,后面的物体被遮挡。外形大小与面数无关拾取判定,高亮只是选中后的反馈状态,不参与选择逻辑。

Q7. 双指捏合缩放时,两指间距从 5mm 变为 10mm,缩放系数一般如何变化?

单选题 · hard

  • A.缩小为原来的一半
  • B.保持原有大小不变
  • C.放大为原来的两倍← 正确答案
  • D.变为原来的四倍

答案:C。缩放系数按 \(\frac{d_{current}}{d_{reference}}\) 映射,距离从 5mm 变为 10mm 即比例为 2,新系数等于旧系数乘以 2。缩小一半是比例取倒数的情况,保持不变是比例恒为 1 的情况,四倍则是比例平方,均不符合直接比例映射逻辑。

Q8. 以下哪些属于实时 3D 中物理反馈系统的常用手段?

多选题 · mid

  • A.碰撞检测与响应防止穿模← 正确答案
  • B.重力模拟让物体自然下落← 正确答案
  • C.手柄震动产生触觉反馈← 正确答案
  • D.小地图箭头指引方向

答案:ABC。碰撞响应、重力模拟、触觉反馈都是物理反馈的组成部分,分别作用于空间阻挡、运动规律和体感层。小地图箭头属于导航辅助,对应认知设计中的空间锚点与方向指引,不在物理反馈范畴内。

Q9. 为避免用户在 3D 场景中迷路,认知设计可以采用哪些策略?

多选题 · mid

  • A.放置醒目的高塔或光柱作为空间锚点← 正确答案
  • B.保持相同类型物体的交互方式一致← 正确答案
  • C.提供小地图与目标方向箭头← 正确答案
  • D.关闭场景中的全部提示标识

答案:ABC。空间锚点帮助建立方位感,一致性降低学习成本,小地图与箭头是直接的方向辅助,三者都能减少迷路。关闭提示标识虽然减少视觉干扰,却会让用户失去指向信息,反而加剧迷失。

Q10. 关于希克定律 \(T = a + b \cdot \log_2(n+1)\),以下说法正确的是?

多选题 · extreme

  • A.\(n\) 表示菜单中可选项目的数量← 正确答案
  • B.\(b\) 是每增加一比特信息所需的决策时间← 正确答案
  • C.\(a\) 表示固定的基线反应时间← 正确答案
  • D.选项越多,决策时间呈线性增长

答案:ABC。希克定律中 \(n\) 是选项数,\(b\) 是每个比特信息的决策成本,\(a\) 是基线反应时间。由于公式用对数函数,选项数增加时决策时间按对数增长而非线性增长,D 错在混淆了对数增长与线性增长。