我有关于Raycaster模型的问题。我理解这个想法以及它与网格相交的事实,我可以对其进行转换,但是例如,如果我创建了具有内部THREE.Object3D的JS对象,它们对网格进行分组(对于它们的UI),我怎么能知道何时相应的<单击对象的em> instance ?
想象一个按钮。这个按钮有几个特征和一个内部_model,它保存着它的THREE.js图形形式(比如一个boxGeometry和一个构建这个按钮的textGeometry)。当按钮添加到场景中时,它将buttonInstance.getModel()添加到场景中,并将自身添加到对象的存储库以保持对它的引用。
如果我想单击此按钮,我会创建一个raycaster并从“按钮”数组(对象3D或表示此对象的网格)中获取相交对象。
但是如何触发事件或与按钮实例本身交互?我有网格但无法理解如何将它与实例本身联系起来。
任何线索?我在三节中搜索过很多关于光线投射的内容,但所有的例子都与改变网格的颜色或位置有关。
_raycaster.setFromCamera(new THREE.Vector2(0,0), _camera);
_activeBtns = _raycaster.intersectObjects(_buttons, true);
_activeBtns[0].object.parent.position.set(curPos.x, curPos.y, curPos.z-.2); // alter position of the Object3D that holds textMesh and BoxMesh
但是,如果所有按钮都有两个网格,我怎么知道哪个按钮是“点击”的呢?我不知道一旦它们在场景中就能识别它们的方式了吗?
由于
d
答案 0 :(得分:0)
@uhara,@ WestLangley。最后,我选择通过网格在场景中的uuid来“绑定”它们,因为抽象对象也可以访问网格。