输入与移动
手柄、手,以及那个别扭的问题:怎么让一个站着不动的人在空间里移动。
XR 里的输入不是事件。没有 click,没有 keydown,指针底下也没有元素。每一帧你拿到的是一组输入源,各自带着姿态、类手柄的按键状态,可能还有一副 25 关节的手部骨架,而这些**意味着什么**,得你自己决定。捏合、抓取、指针射线、传送弧线:这些在 API 里一个都不存在,它们都是你从姿态里搭出来的。
这里三篇从具体走向有争议。手柄那篇最机械:输入源、几乎人人会栽一次的 targetRay 与 grip 之分、按键与轴的状态、还有触觉反馈。手部追踪把按键换成了几何 —— 同一套输入模型,但手势变成了两个关节之间的距离,加上一个**由你来定**的阈值。移动那篇则没有正确答案,因为约束根本不是技术性的。
最后那篇正是这一区要成组存在的理由。XR 里每一个输入决定,最终都会撞上身体:射线比手更好瞄准但没那么直接;一个你觉得干脆利落的捏合阈值,在别人手上就是一次次抓空;而拍视频最好看的平滑移动,恰恰是会让一部分用户不得不坐下的那一种。API 给你的是姿态,**舒适度是一个你没法从规范里读出来的设计问题**。
本区包含
按这个顺序读
手柄确立了输入源模型:一帧如何把设备、姿态和按键状态交给你。手部追踪默认你已经有了这套模型,只是把按键换成了骨架。
移动**刻意**放在最后。它同时依赖前两篇,还依赖一个前两篇都不需要的判断:你愿意对一个其实没在动的人,施加多少运动。