【问题标题】:Aframe How do I simulate a 6dof controller on the Oculus GO controller using the touchpad to move the controller forward, back, left, and right?Aframe 如何在 Oculus GO 控制器上模拟 6dof 控制器,使用触摸板将控制器向前、向后、向左和向右移动?
【发布时间】:2018-11-21 07:36:05
【问题描述】:

enter image description here如果我们可以在 Oculus Go 控制器上模拟 6dof 控制会怎样?想象我们将控制器 3d 模型变成一只手,它仍然只是旋转,但想象我们使用触摸板在空间中向前、向左、向右或向后移动手,触摸板让您沿着 z 和 x 轴移动在太空中,但加速度计/陀螺仪为您提供 y 和 x 轴。所以加速度计/陀螺仪充当手臂,触摸板充当手/手腕,一只可以前后移动且只能左右扭动的手,用扳机握住,手不能向上倾斜或下来,但手臂可以弥补这一点。那么我该如何构建呢?

【问题讨论】:

    标签: aframe


    【解决方案1】:

    https://www.npmjs.com/package/aframe-thumb-controls-component 提供在方向上按下拇指板的事件(例如,thumbupstartthumbleftend)。

    编写一个组件来监听这些事件,设置一个属性(例如,this.buttons.left = true,然后tick 处理程序需要根据按下的按钮更新this.el.object3D.position

    还需要考虑相机的朝向。 https://github.com/aframevr/aframe/blob/master/src/components/wasd-controls.js 是一个很好的起点,它是相似的,它监听按键并转换位置。只需修改为使用拇指控件即可。

    更多提示:

    <script src="https://unpkg.com/aframe-thumb-controls-component@1.1.0/dist/aframe-thumb-controls-component.min.js">
    
    AFRAME.registerComponent('thumb-movement-controls', {
      init: function () {
        this.buttons = {
          left: false, right: false, up: false, down: false
        };
    
        this.el.addEventListener('thumbleftstart', () => {
          this.buttons.left = true;
        });
    
        this.el.addEventListener('thumbleftend', () => {
          this.buttons.left = false;
        });
      },
    
      tick: function () {
        // Really simplified movement. Does not take into account camera heading or velocity / time, but wasd-controls shows how.
        if (this.buttons.left) {
          this.el.position.x -= 0.001;
        }
      }
    });
    
    <a-entity daydream-controls thumb-controls thumb-movement-controls></a-entity>
    

    【讨论】:

    • 今晚 4 ​​位经验丰富的 web 编码员,javascript 编码员,一起努力按照您的指示使用 Daydream 控制器完成这个目标,我们工作了 4 个小时,我们尝试了很多不同的东西,我们创建了在 VR 控制台中查看 Daydream 控制器在做什么。我们仍然无法让它工作。在 aframe 中自定义 Daydream 控制器的难度等级似乎很高,但我想知道是不是只有我们,或者这个控制器是否特别困难。在 Oculus Go 上自定义触控板会更容易吗?
    • 每个控制器的过程都是一样的。我附上了另一个提示。来自 webdev 世界的 3D / 控制器工作完全不同。 A-Frame 已经通过帮助您抓取/查询游戏手柄、模型、按钮事件和拇指控件来抽象大量内容,将拇指轴转换为方向事件非常复杂 :) ... 如果您遇到困难,请发表评论在特定部分。
    • 能够让触控板左键单击为框设置动画。但后来我们尝试用相机实体 id 替换盒子实体 id,并试图让相机在右触控板点击时旋转 15 弧度,那是行不通的。我还尝试将 Oculus Go 控制器代码添加回其中,但我们所做的新触控板修改都没有使用它。包括当 Solo 控制器代码被注释掉时。最终弄清楚 emit 的工作原理被证明是控制器和动画多个实体的解决方案。差不多好了。我将重新检查移动控件组件以获取线索。谢谢
    • 问题是我似乎无法将拇指控件与传送控件与带有旋转的相机元素结合起来我的代码开始感觉像是一场噩梦,看看silly-diver.glitch.me 有一次我让左侧触控板触发一个盒子来拆分实体在另一点上,我让传送工作,但它在传送期间创建了一个左右白日梦控制器,这完全搞砸了。这是带有多个实体动画的旧版本代码,这些实体在第二次触发时具有后续动画typhoon-rule.glitch.met
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 2010-11-08
    • 2016-07-13
    相关资源
    最近更新 更多