Aframe 是否有重新居中/重置方向的方法?

Aframe 是否有重新居中/重置方向的方法?,aframe,Aframe,我只是想知道是否有一个内置的功能来重置头部旋转。 我见过的大多数虚拟现实SDK(Oculus、Carboard等)都有一种方法可以将当前旋转设置为默认的正向旋转。 有没有一种简单的方法可以在a帧中执行此操作?您可以在相机周围添加一个包装实体,并在事件中,将实体包装绕Y轴的旋转设置为相机绕Y轴的旋转为负值 下面是@jhsu使用shake.js的一个示例(但在React中): import React from 'react'; import Camera from './Camera'; impo

我只是想知道是否有一个内置的功能来重置头部旋转。 我见过的大多数虚拟现实SDK(Oculus、Carboard等)都有一种方法可以将当前旋转设置为默认的正向旋转。
有没有一种简单的方法可以在a帧中执行此操作?

您可以在相机周围添加一个包装实体,并在事件中,将实体包装绕Y轴的旋转设置为相机绕Y轴的旋转为负值

下面是@jhsu使用shake.js的一个示例(但在React中):

import React from 'react';
import Camera from './Camera';
import Shake from 'shake.js';

class Player extends Component {
  componentDidMount() {
    this.shaker = new Shake({
      threshold: 5,
      timeout: 250,
    });
    this.shaker.start();
    window.addEventListener('shake', this.reorient, false);
  }

  reorient() {
    if (this.camera) {
      const rotation = this.camera.getAttribute('rotation');
      this.setState({
        orientation: { x: 0, y: -1 * rotation.y, z: 0 }
      });
    }
  }

  cameraMounted = (camera) => {
    this.camera = camera;
  }

  render() {
    return <Camera
      rotation={this.state.orientation}
      onMount={this.cameraMounted}
    />
  }
}
从“React”导入React;
从“./Camera”导入相机;
从“Shake.js”导入Shake;
类播放器扩展组件{
componentDidMount(){
this.shaker=新的震动器({
阈值:5,
超时:250,
});
这个.shaker.start();
window.addEventListener('shake',this.reorient,false);
}
重新定向(){
如果(这个相机){
const rotation=this.camera.getAttribute('rotation');
这是我的国家({
方向:{x:0,y:-1*旋转。y,z:0}
});
}
}
摄像头安装=(摄像头)=>{
这个。照相机=照相机;
}
render(){
返回
}
}
一个组成部分是:

AFRAME.registerComponent('resetorientation', {
  init: function () {
    var el = this.el;
    el.addEventListener('resetorientation', function () {
      var y = el.querySelector('[camera]').getAttribute('rotation').y;
      el.setAttribute('rotation', {y: -1 * y});
    });
  }
});

<a-entity id="cameraWrapper" resetorientation><a-camera></a-camera></a-entity>

document.querySelector('#cameraWrapper').emit('resetorientation');
AFRAME.registerComponent('resetorientation'{
init:函数(){
var el=this.el;
el.addEventListener('resetorientation',函数(){
var y=el.querySelector(“[camera]”)。getAttribute('rotation').y;
el.setAttribute('rotation',{y:-1*y});
});
}
});
document.querySelector(“#cameraWrapper”).emit('resetorientation');

非常感谢您!这种方法适合我。