LEAP MOTION + OCULUS + THREE.JS:无法使 "optimizeHMD = true" 工作(头戴式)

LEAP MOTION + OCULUS + THREE.JS: can't get "optimizeHMD = true" working (head mounted)

我将 Leap Motion 传感器连接到 Oculus Rift SDK2 设备,以便在 Three.js 场景中从 'head mounted' 模式识别我的手。

controller.use('handHold').use('transform', {
    optimizeHMD: true
  }).use('handEntry').use('screenPosition').use('riggedHand', {
    parent: scene,
    renderer: renderer,
    scale: getParam('scale'),
    positionScale: getParam('positionScale'),
    helper: false,
    offset: new THREE.Vector3(0, 0, 0),
    renderFn: function() {
      renderer.render(scene, camera);
      return controls.update();
    },
    materialOptions: {
      wireframe: true
    },
    dotsMode: getParam('dots'),
    stats: stats,
    camera: camera,
    boneLabels: function(boneMesh, leapHand) {
      if (boneMesh.name.indexOf('Finger_03') === 0) {
        return leapHand.pinchStrength;
      }
    },
    boneColors: function(boneMesh, leapHand) {
      if ((boneMesh.name.indexOf('Finger_0') === 0) || (boneMesh.name.indexOf('Finger_1') === 0)) {
        return {
          hue: 0.6,
          saturation: leapHand.pinchStrength
        };
      }
    },
    checkWebGL: true
  }).connect();

但我认为 'optimizeHMD = true' 行被忽略了,leap 传感器仍然像在桌面模式下一样识别我的手。

非常感谢您的帮助!

我对 Leap SDK 不是很熟悉,但我没有看到任何迹象表明 optimizeHMD 应该作为插件的选项传递,而是您需要设置的控制器对象上的状态。根据 this page and this example,在控制器构造期间,您可以将 optimizeHMD 作为参数传递给控制器​​,或者您可以稍后调用 controller.setOptimizeHMD(true|false) 来打开和关闭它。但是,我没有看到任何说明这是传递给其中一个控制器插件的有效选项。

我怀疑 HMD 和非 HMD 模式之间的转换可能基于这个标志发生在控制器级别,而这个标志只是被转换插件忽略了。