为什么在WebXR中错误地计算了光线投射方向?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么在WebXR中错误地计算了光线投射方向?相关的知识,希望对你有一定的参考价值。
我试图在基于网络的增强现实应用程序中使用常规的Three.js光线投射(与AR命中测试相反,这个问题不是关于真实飞机上的命中测试)。
Web应用程序使用带有aframe-xr component的A-Frame在ios的WebXR Viewer和android的WebARCore中获得WebXR支持,并且增强现实在这两个实验性浏览器中一般都可以正常工作。
然而,在aframe-xr
或three.xr.js和WebXR polyfill库中它包含的内容导致在具有WebXR支持的实验性浏览器中不正确地投射光线投射的方向向量。光线投射的原点很好(在相机的当前位置),但是方向总是在下方偏移(y坐标太小)并且在它应该的位置稍微向左(x坐标太小)偏移。
巧合(或不),y似乎在1.6米附近偏移A-Frame
默认偏移相机。或曾经,因为这似乎已经降级到Three.js
最新(未发布)版本的A-Frame
aframe-xr
依赖于工作。
一般来说,这不是光线投射的问题,正如这个reproduction of the issue in Glitch所证明的那样,我的测试结果如下:
Device/Example run | Normal 0.7.0 | WebXR | Normal 0.8.0 |
-----------------------|----------------|---------------|------------------|
Windows Chrome w/mouse | Correct | Correct | Correct |
S8 Chrome | Correct | Correct | Correct |
S8 WebARCore | Correct | Incorrect | Correct |
iPad Safari | Correct | Correct | Correct |
iPad WebXR Viewer | Correct | Incorrect | Correct |
“正确”表示方向按预期计算,球体出现在我的手指或鼠标光标下方,“不正确”表示方向向量出错,球体出现在错误的位置。
这些例子的代码在这里:https://glitch.com/edit/#!/delirious-watch
WebXR库中发生了什么以抵消计算出的光线投射方向,以及如何修复它?
奖金信息:我也用aframe-ar component中的separate glitch here对此进行了测试。 Raycasting在Android上的WebARCore中正常工作(我相信不使用webxr polyfill),但是错误的,虽然在iPad上的WebXR Viewer中有不同的偏移量(我相信使用了webxr polyfill)。
更新:根据下面Roberto的评论,将webxr-polyfill
中的SITTING_EYE_HEIGHT常量更改为0是向正确方向迈出的一步,但不是完整的解决方案。随着这种变化 - can be tried here - 如果我在移动或旋转设备之前加载网页并进行光线投射,实际上会正确计算光线投射方向,但是一旦移动或旋转设备,光线投射方向就不正确。
我对填充代码没那么多(我正在使用iOS查看器),但我记得在polyfill中的某个地方有一个SITTING_EYE_HEIGHT常量。它目前设置为1.1米。也许您应该使用该值来补偿代码中的高度。这是确切的行:https://github.com/mozilla/webxr-polyfill/blob/e4fa65a9bdb09e8e753014436d2f5b76c949e047/polyfill/XRViewPose.js#L57
以上是关于为什么在WebXR中错误地计算了光线投射方向?的主要内容,如果未能解决你的问题,请参考以下文章