触碰的判定体积要大于物体的视觉外形
别名: 接触体积 · 判定盒膨胀 · collider padding · 抓取体积
概念解释
虚拟茶杯的把手在画面里只有一根细杆。手指按视觉对过去,系统却报没碰到——用来做相交测试的判定体积(selection volume)如果跟网格一样瘦,追踪误差会让接触时有时无。判定体积必须比物体的视觉外形(visual hull)更大,才能在手还没精确贴上网格时给出稳定的「碰到了」。
它管的是「算不算抓到」,不是物体看起来有多厚。视觉可以保持细,体积可以单独加一圈边。
机制
直接触碰是一次三维相交查询:控制器尖端或指尖球体,对上物体的碰撞体。头显手部追踪的稳态误差通常在数毫米到一两厘米,手指本身也有厚度;视觉网格若按真实茶杯把手来建,查询球经常擦边而过。误差在表面附近抖动时,接触标志会以追踪噪声的频率开关,抓取变成一连串误入误出。
把碰撞体外扩一圈(padding)等于给手一个捕获盆(capture basin):一旦进入膨胀区就锁住接触,直到明显离开才释放。视觉仍用瘦网格,人眼看到的还是细把手;手「提前」碰到的是那圈看不见的体积。邻物间距小于两倍外扩半径时,两个捕获盆重叠,误抓开始出现——膨胀在救追踪,也在吃空间分辨率。
怎么研究
用虚拟手或指尖球做三维点选 / 抓取,系统改变碰撞体相对视觉网格的外扩半径,记录命中与误抓。薄杆、细环、钥匙这类视觉厚度接近追踪误差的刺激,比立方体更能暴露体积是否在工作。
自变量:外扩半径、视觉厚度、邻物间距、追踪噪声水平。 因变量:首次命中时延、接触标志抖振次数、邻物误抓率、主观「是否贴上了」。
引擎里把碰撞体画成半透明壳、把网格保持不透明,能直接看到人是抓到了壳还是抓到了形。只看任务时间会把「抓得慢」和「根本没判上」混在一起。
边界
物体本来就很大(沙发、门板),外扩的收益趋近于零,误碰旁侧的代价却还在。物体挤在一起、要精确挑其中一根线时,膨胀必须让路给分辨率,改用吸附到最近物或需要二次确认。带力反馈的装置用神物(god-object)把探针约束在表面外,判定策略和纯视觉头显不同,不能把同一套厘米级 padding 搬过去。透视眼镜对准真实物体时,判定体积若明显大于实物,手会看起来「隔空抓住」。
怎么落地
- 给可抓物体单独做碰撞体,默认比视觉网格外扩一到三厘米,细杆、按钮边缘再加大。
- 接触一旦建立,用滞回:进入阈值小于离开阈值,避免在表面抖动。
- 邻物间距小于外扩直径时,不要对每个物体同等膨胀;改为指向最近物并高亮,让人确认再抓。
- 验证:用一组细把手 / 细环做抓取,统计首次命中率和邻物误抓。命中仍不稳就继续加体积;误抓上升就停手,改间距或加确认,而不是继续膨。