三.j. 隐形控制
- Immersive (VR) 函数
- 以 VR 控制器进行移动和旋转(用左拇指杆移动,用右拇指杆旋转)
- 使用 VR 控制器选择对象( R)
A按钮或触发)
- 浏览器窗口功能
- 键盘的移动和旋转( WASD 和箭头键)
- 使用鼠标选择对象
安装
npm install @depasquale/three-immersive-controls
使用量
import ImmersiveControls from '@depasquale/three-immersive-controls';
// Create the `camera`, `renderer`, and `scene` instances with Three.js
// ...
const controls = new ImmersiveControls(camera, renderer, scene, { /* options */ });
将此包含在渲染循环中 :
controls.update();
选项
initialPosition: THREE.Vector3- 玩家在现场的初始位置. 默认是
new THREE.Vector3(0, 1.6, 4)。 。 。 .
- 玩家在现场的初始位置. 默认是
lookAt: THREE.Vector3- 玩家最初方向的点。 (尚未执行。 )
floor: number | falsenumber(默认为0: 设置玩家无法通过下层的y位置(简单解决碰撞探测而不是导航).false:没有设定玩家沿y轴移动的限制.
gravity: true | falsetrue(默认) : 玩家的移动被限制在x和z轴上,而y的位置仍然位于floor设置.false:玩家也可以沿着y轴(飞行模式)垂直移动.
moveSpeed: { keyboard: number, vr: number }- 玩家收到键盘或VR控制器输入时通过场景移动的速度. 默认是
{ vr: 2.5, keyboard: 5 }。 。 。 .
- 玩家收到键盘或VR控制器输入时通过场景移动的速度. 默认是
rotateSpeed: number- 收到键盘或VR控制器输入时玩家旋转的速度. 默认是
1。 。 。 .
- 收到键盘或VR控制器输入时玩家旋转的速度. 默认是
tumble: true | false- 允许玩家在y轴之外再在x轴上旋转. 默认是
false。 。 。 .
- 允许玩家在y轴之外再在x轴上旋转. 默认是
showControllerModel: true | false- 以浸入模式显示 VR 控制器 。 默认是
true。 。 。 .
- 以浸入模式显示 VR 控制器 。 默认是
showEnterVRButton: true | false- 在 DOM 中添加一个按钮,允许用户在此功能被支持时进入浸入模式. 默认是
true。 。 。 .
- 在 DOM 中添加一个按钮,允许用户在此功能被支持时进入浸入模式. 默认是
showExitVRButton: true | false- 在现场玩家面前显示一个按钮,允许用户退出浸润模式. 默认是
true。 。 。 .
- 在现场玩家面前显示一个按钮,允许用户退出浸润模式. 默认是
vrControls: true | false- 激活活化(VR)控制. 默认是
true。 。 。 .
- 激活活化(VR)控制. 默认是
keyboardControls: true | false- 激活键盘控制器 。 默认是
true。 。 。 .
- 激活键盘控制器 。 默认是
mouseControls: true | false- 激活鼠标控制器 。 默认是
true. (使用鼠标输入的运动尚未执行,但使用鼠标进行对象选择。)
- 激活鼠标控制器 。 默认是
showFps: true | false- 显示
Stats指示器在 DOM 中,并在现场的玩家面前监视性能. 默认是false。 。 。 .
- 显示
实例
报告提供了实例 examples 目录。 要在浏览器中本地尝试, 请运行 :
npm run examples
或者试试看 这里。 。 。 .
来做
- 添加与导航相撞的探测
- 使用多种 VR 设备的测试( 目前仅使用 Oculus Quest 2 测试)
- 处理只有一个 VR 控制器的情况
- 为触摸屏设备添加控制
- 在现场更好地重新定位"Exit VR"按钮
- 可能的其他特征
- 远程传送
- 旋转和移动时的盲人
- 用鼠标输入移动
- 手迹追踪