A-Frame Daydream 控件?

A-Frame Daydream control?

刚开始玩 A-Frame,我可以看到 vive-controls 和 oculus-touch-controls,但 google daydream 什么都没有。

我查看了组件存储库,但没有看到任何看起来可以完成这项工作的东西。现在最接近调查的是游戏手柄 API,但令我惊讶的是我找不到任何东西。

我有一台 Pixel XL & daydream,我想加入控制器,而不仅仅是头部跟踪和基于注视的控制。有人能给我指出正确的方向吗?

谢谢

更新 - 我的 Daydream 控制器可以点击了! 运行 360-image-gallery(https://aframe.io/examples/showcase/360-image-gallery/) 接受来自 Daydream 控制器的点击。我想也许它在我之前的尝试中超时了,或者我没有正确配对它!我会继续玩的!

正在 Aframe 项目中设置 Daydream 遥控器。 Daydream 遥控器还没有组件,但我希望尽快完成一个组件——听起来他们将在即将发布的 Aframe 版本中提供主线支持。

但是可以手摇支撑没问题

首先,您需要做一些准备工作:

  1. 在您的 Pixel 上下载 Chrome Beta 56:https://www.google.com/chrome/browser/beta.html .
  2. 打开 Chrome Beta,导航到 chrome://flags 并启用 WebVR 和 Gamepad 标志。

现在,您将能够在真正的 WebVR 中启动使用 Aframe v0.4 或更高版本构建的体验。您会收到常见的 Daydream 屏幕提示(将您的 phone 放在耳机中,然后连接遥控器。)如果您连接到本地开发环境,您会看到安全连接警告,但是,虽然烦人,不会阻止你工作。

其次, 既然您是 运行 真正的 WebVR,您需要利用游戏手柄 API 从您的 Daydream 遥控器获取信息。让我们先记录它已连接。

    window.addEventListener('gamepadconnected', function(evt) {
      console.log("Gamepad connected at index %d: %s. %d buttons, %d axes.",
        e.gamepad.index, e.gamepad.id,
        e.gamepad.buttons.length, e.gamepad.axes.length);
    });

第三, 现在您正在记录连接,您将需要设置更新循环以获取游戏手柄的当前状态。您可以使用 requestAnimationFrame 执行此操作。按照此处的教程进行操作:https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API

一旦我发布了基本的 dayframe-remote 组件,我将在此处 post link。希望这有助于您入门!


编辑: 看起来下面的建议很有效。只需将 "Daydream Controller" 作为跟踪控件的 ID 传递:tracked-controls="id: Daydream Controller".


这是 Daydream 控制器输出示例。目前,似乎只有触控板按钮暴露在外,而不是应用程序或主页按钮。

    { 
      axes: [0, 1],
      buttons: [{
        pressed: false,
        touched: false,
        value: 0
      }],
      connected: true,
      displayId: 16,
      hand: "left",
      id: "Daydream Controller",
      index: 0,
      mapping: "",
      pose: {
        angularAcceleration: null,
        angularVelocity: [0, 0, 0],
        hasOrientation: true,
        hasPosition: false,
        linearAcceleration: [0,0,0],
        orientation: [0,0,0,1],
        position: null
      },
      timestamp: 1234567890123
    }

你可以尝试的东西...

tracked-controls 中当前 A-Frame 0.4.0 支持的工作方式:

如果您指定它应该只匹配空字符串的 ID 值 '' 那么它应该匹配任何具有姿势的游戏手柄...所以您可以尝试类似

<a-entity tracked-controls="id:"></a-entity>

看看是否有事件等?

A-Frame 主分支现在包含一个 Daydream 控制器组件:https://aframe.io/docs/master/components/daydream-controls.html