【问题标题】:A-frame (VR) picking of nested entities嵌套实体的 A 帧 (VR) 拾取
【发布时间】:2017-04-29 21:24:36
【问题描述】:

我将 <a-box>'es 与 <a-entity> 包装器分组。
然后,我在 <scene> 中使用游标组件并尝试选择/选择构成 <a-entity> 包装器的单个对象,但只有包装器 <a-entity> 被选中,而不是单个对象。

我真的很好奇这个。我查看了所有 aframe cursor (https://aframe.io/docs/0.2.0/components/cursor.html) 文档,并没有具体提及这种情况。它确实提到 cursor 使用的 raycaster(https://aframe.io/docs/0.2.0/components/raycaster.html) 返回与投影光线相交的第一个实体......这将是分组实体。 ..所以总是返回它是有道理的。

当所有<a-box>'es 都附加到全局<a-scene> 时一切正常,并且可以单独选择它们。

我是否正确地假设只有当特定对象是全局实体(而不是嵌套实体)时拾取才能正常工作?

【问题讨论】:

    标签: aframe webvr


    【解决方案1】:

    不完全是。您可以将raycaster 组件添加到游标实体。并设置您要选择的特定对象。你可以看到我在how to set “objects” property in aframe raycaster component 之前问过的这个问题。

    【讨论】:

    • 我已经试过了,它不起作用... 。我想要选择的所有对象都添加了一个“v3d_cube”类
    • 我修改了raycaster组件源码,像这样init: function () { this.direction = new THREE.Vector3(); this.intersectedEls = []; this.objects = []; this.prevCheckTime = undefined; this.raycaster = new THREE.Raycaster(); this.updateOriginDirection(); },
    • 抱歉,我无法编辑我的最后一条评论。我修改了 raycaster 组件 refreshObjects 函数,在第 58521 行中注明了 this.objects = []。然后我注册了一个 update-raycaster 组件。代码是AFRAME.registerComponent('update-raycaster', { schema: {type: 'selector'}, init: function () { var raycasterEl = this.data; raycasterEl.components.raycaster.data.objects="#"+this.el.id; raycasterEl.components.raycaster.refreshObjects(); } });。将此update-raycaster="#cursor" 组件添加到您要选择的实体。对不起我的英语不好。希望我的话有用
    • 我试过你建议的代码。它抛出一个错误 Uncaught (in promise) TypeError: Cannot read property 'data' of undefined(...)
    • 我不知道你是怎么得到这个错误的。如果我能看到你的代码,也许我会发现问题。我写了一个演示版,发布在link。我将两个盒子组合成球体,我将update-raycaster="#cursor" 添加到粉红色的盒子中。因此,只能选择粉红色的框。
    猜你喜欢
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2016-10-07
    • 2017-11-27
    • 2014-07-16
    • 2021-08-18
    相关资源
    最近更新 更多