【问题标题】:How do I detect Gear VR inputs in React VR scene?如何在 React VR 场景中检测 Gear VR 输入?
【发布时间】:2017-05-30 10:06:33
【问题描述】:

我正在尝试使用 React VR 创建一个 Web 应用程序并使用 Samsung Gear VR 运行它。

在我的场景中处于 VR 模式时,我看不到默认的白点(VR 指针)。因此,诸如“onInput”和“onClick”之类的方法不起作用。如果我在 VR 模式之外查看相同的场景,即使使用 Gear VR 中提供的浏览器,相同的方法也能正常工作。

我错过了什么吗?如何在 Gear VR 的 VR 模式下访问这些方法?

示例代码在普通网络浏览器(包括 Gear VR 中的浏览器)中运行良好,但在我使用 VR 时却不行。

<Text
    style={{
        // backgroundColor: '#777879',
        fontSize: 0.2,
        transform: [{translate: [0, 0, -5]}],
        color: this.state.textColor
    }}
    onEnter={() => this.setState({textColor: 'gold'})}
    onExit={() => this.setState({textColor: 'white'})}>
    This text will turn gold when you look at it.
</Text>

【问题讨论】:

    标签: gear-vr react-360


    【解决方案1】:

    你需要添加一个光线投射器:

    为此,您需要执行以下操作:

    在您的项目中,转到&lt;project root&gt;/vr/client.js。 在 init 方法之前,添加一个 SimpleRaycaster 常量。

    const SimpleRaycaster = {
        getType: () => "simple",
        getRayOrigin: () => [0, 0, 0],
        getRayDirection: () => [0, 0, -1],
        drawsCursor: () => true
    };
    
    function init(bundle, parent, options) {
    
    //...
    

    然后,在init方法中,设置cursorVisibility: visible并将光线投射器添加到raycasters的数组中:

    function init(bundle, parent, options) {
      const vr = new VRInstance(bundle, 'Example', parent, {
          raycasters: [
              SimpleRaycaster // Add SimpleRaycaster to the options
          ],
          cursorVisibility: "visible", // Add cursorVisibility
          enableHotReload: true,
        ...options,
      });
      vr.render = function() {
        // Any custom behavior you want to perform on each frame goes here
      };
      // Begin the animation loop
      vr.start();
      return vr;
    }
    
    window.ReactVR = {init};
    

    就是这样。现在您的视图中间应该有一个白点。

    【讨论】:

    • 感谢您的回答。这似乎在 Chrome Canary 中运行良好。悬停效果现在正在起作用。 :) 我还没有尝试使用 GearVR。我需要检查单击操作是否也有效。一旦这样做,我将在此处更新并将您的答案标记为已接受。再次感谢。
    • @gdebojyoti,这是最简单的光线投射器(光标),因为它是基于凝视的,所以它可以毫无问题地与 GearVR 一起使用。但是,它不适用于控制器。 .如果要将鼠标或控制器用作光线投射器,则需要使用自定义光线投射器。目前我正在开发一个通用的光线投射器,它适用于所有设备和所有支持 WebVR 的浏览器。当我准备好分享时,我会更新你。
    猜你喜欢
    • 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
    相关资源
    最近更新 更多