在VR游戏中, 使用双手(控制器)直接对虚拟世界中的对象进行交互, 已经成为一种”标准化”的设计, 一切看起来能够用手去交互的物体, 都需要附合物理规则.
简单的物理对象, 通常只是一个刚体(Rigidbody), 这种只需要模拟重力和惯性运动就可以了, 最多再调节一下摩擦力, 弹性, 空气阻力等, 所以在技术上借助物理引擎的帮助是比较简单的.
稍微复杂一点儿的物理对象, 是带有约束(Constraint)关系的, 比如门, 抽屉, 转盘, 滑杆, 绳索等等. 这里以最常见的滑动和转轴约束进行一下分析, 它们都是把位移或者旋转限制在一个轴上, 计算起来比较简单.
对带有约束的物理对象进行交互, 难点在于如何使物理对象仍然严格按约束关系来运动. 在 VR下双手与物体的交互 中提到过, 要想使一个物理对象动起来, 可以有三种方法: 设置位置, 设置速度(施加冲量), 释加力. 然而, 设置位置这种方式, 是不遵循物理定律的, 会导致物理对象脱离约束的运动范围, 频繁地被拉扯回来. 而施加速度或力的方式, 虽然能够保证物理对象严格地按照约束来运动, 但是很难保证物理对象的位置跟手是一致的. 因为VR下的交互, 通常是用手抓着不放进行拖动来完成的, 如果物理对象不跟着手同步一起动, 那么这个体验就不能算过关.
出于手感的考虑, 肯定是手的抓握点保持跟手同步运动的效果最为理想, 所以只能选择第一种设置位置的方法. 但是对于带有约束关系的物理对象, 这个是比较难保证的. 因为它们被限制在了一个轴上运动, 而我们的手不是. 因此, 如果要同步手的移动到这个物理对象上, 需要把手的位置按照约束关系进行映射. 比如滑动, 需要映射到滑动轴上; 比如转动, 需要把运动映射成旋转角. 这样的话, 相当于在交互时, 自行模拟了约束关系, 让设置的位置(或角度)保持在合理的约束范围内.
但是, 这么做有两个问题:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有