微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Y 轴的旋转在基​​于标记的 AR 上最多只能旋转 90 度

如何解决Y 轴的旋转在基​​于标记的 AR 上最多只能旋转 90 度

我正在使用带有 A-Frame 的 AR.js,试图让我的角色(在本地访问中)根据标记的 Y 轴旋转旋转和播放和动画。角色是标记实体的孩子。想一想一个正在移动面对镜头的角色。我有一些代码来检测相机和标记间的角度,然后我播放 gltf 动画并为其添加旋转。

在 AFrame 寄存器组件内部看到这里,我添加了这个来检测两个角度之间的差异:

if (this.marker.rotation.y  > this.el.object3D.rotation.y + 30*(Math.PI/180)) {
    console.log("rotate");
    this.el.setAttribute('animation-mixer',{
      clip: 'turning-right',loop: 'once',crossFadeDuration: 0.4,});
    this.el.object3D.rotation.y += 30*(Math.PI/180);
     
  }

但我的问题是我无法准确检测标记的角度,因为它从 90 度到 0 度到 -90 度。

我用这一行打印出旋转,标记的Y旋转的值为0,从前面看一样,从后面看也一样。

console.log(this.marker.rotation.y)

我的期望是它会从 0 旋转到 360 或 180 到 -180。这将使我能够检测角色是否正在看向别处/从相机转过身。此刻,角色将转过身来,因为一旦我走到标记后面,就不知道它是在前面还是后面。

有什么方法可以改变角度模式,或者判断我是否落后?我尝试将 Euler 顺序从 XYZ 更改为 YXZ,但我仍然遇到相同的问题。

如果您想重现此问题,只需在 A-Frame 中跟踪 Hiro 标记,然后控制台记录 Y 轴上的旋转。

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。