【问题标题】:Daydream Controller OrientationDaydream 控制器方向
【发布时间】:2017-05-22 20:42:09
【问题描述】:

我想在 Raycaster 或遥控器指向的地方绘制一个图元。我正在aframe 或three.js 中寻找某种“获取方向”方法。有没有一种简单快捷的方法来获取我的控制器指向的世界坐标? 提前致谢!

更新: 代码如下:

HTML: [...]

<a-entity id="remote" daydream-controller raycaster="objects: .selectable">
<a-cone id="ray" color="cyan" position="0 0 -2" rotation="-90 0 0" radius bottom="0.005" radius-top="0.001" height="4"></a-cone>
<a-box id="position-guide" visible="false" position="0 0 -2"></a-box>
</a-entity

这是 HTML 的 javascript:

var rayEl = document.querySelector('#remote');
rayEl.addEventListener(
var rayElDirection = new THREE.Vector3(0,0,-1);
rayEl.object3D.getWorldDirection(rayElDirection);
console.log("Raycaster Direction: " + rayElDirection);

【问题讨论】:

    标签: three.js aframe webvr daydream


    【解决方案1】:

    为了将白日梦数据加载到 Object3D,I found a PR that i'm not sure is in the current build,但您可能只是将其作为自己的脚本加载,只要它在三个.js 之后加载。

    一旦你有了它,你就可以得到控制器的方向 - 因为它扩展了 THREE.Object

    您可以查看Object3D's documentation 以查找可用功能。 THREE.Object.getWorldDirection() 将为您提供 Daydream 控制器指向的向量。

    将它与 .getWorldPosition() 结合起来,例如,您可以将控制器的表示放在场景中的该位置以进行调试。

    【讨论】:

    • 谢谢!我尝试了 getWorldDirection() 函数,但它似乎给了我控制器的当前位置,而不是它指向的方向。我已经尝试了不同的方法,但似乎没有任何效果。当我试图从四元数中获取信息时,这些值似乎也不代表实际方向。我尝试了以下方向:var rayElDirection = new THREE.Vector3(0,0,-1); rayEl.object3D.getWorldDirection(rayElDirection); 但正如我提到的,它似乎只能获得当前的远程位置。
    • 我不知道 rayEl 是什么。你能链接到你用来访问白日梦控制器的实现吗?如果您将数据错误地加载到 object3d 中,那么它将无法正常工作。它也可能旋转 90 度或任何意味着您可能需要旋转的东西,但它应该是指向正 Z 轴的单位向量。 daydreamcontroller.getworlddirection() 将返回一个指向该对象正轴的向量。这就是函数的作用。另一方面,getworldposition() 将返回该 Object3D 的位置。只需分享代码或无法帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多