【问题标题】:A-Frame Daydream control?A-Frame Daydream 控件?
【发布时间】:2017-05-23 17:17:58
【问题描述】:

刚开始玩 A-Frame,我可以看到 vive-controls 和 oculus-touch-controls,但在 google daydream 中什么也看不到。

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

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

谢谢

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

【问题讨论】:

    标签: aframe daydream


    【解决方案1】:

    正在 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 屏幕提示(将手机放在耳机中,然后连接遥控器。)如果您正在连接到本地开发环境,您会看到安全连接警告,但这虽然很烦人,但不会不会阻止你工作。

    第二,现在您正在运行真正的 WebVR,您需要利用 Gamepad 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 组件,我将在此处发布一个链接。希望这可以帮助您入门!


    编辑: 看起来下面的建议效果很好。只需将“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
        }
    

    【讨论】:

      【解决方案2】:

      你可以试试……

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

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

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

      看看是否有事件等?

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多