Javascript 单击事件在gltf模型中不提供网格名称
是否有一种简单的方法来计算在gltf模型中单击的子网格的名称?我在一帧的0.8.0上 我尝试了以下方法- HTML来源:Javascript 单击事件在gltf模型中不提供网格名称,javascript,dom-events,aframe,gltf,Javascript,Dom Events,Aframe,Gltf,是否有一种简单的方法来计算在gltf模型中单击的子网格的名称?我在一帧的0.8.0上 我尝试了以下方法- HTML来源: <a-scene embedded="" raycaster-autorefresh cursor="rayOrigin: mouse"> <a-assets> <a-asset-item id="male" src="../images/trying/scene.glt
<a-scene embedded="" raycaster-autorefresh cursor="rayOrigin: mouse">
<a-assets>
<a-asset-item id="male" src="../images/trying/scene.gltf">
</a-asset-item>
</a-assets>
<a-entity id="camera" camera="" position="0 1.6 0" look-controls wasd-controls>
</a-entity>
<a-entity gltf-model="#male" position="-14 -30 -125" rotation= "0 160 0" material-displacements></a-entity>
</a-scene>
但是,它仅提供第一个子网格的名称。类似地,evt.detail.intersection.point仅提供相同的x、y和z坐标,而与我在模型上单击的位置无关
我的要求是能够找出在gltf模型中单击了哪个子网格
类似地,evt.detail.intersection.point仅提供相同的x、y和z坐标,而与我在模型上单击的位置无关
这是一个错误-更新到a-Frame 0.8.2 per。在A帧0.8+中也不需要raycaster autorefresh
对于从连接到被单击的节点的节点获取名称的剩余问题,请考虑此代码:
this.el.addEventListener('click', (evt) => {
var object = evt.detail.intersection.object;
// name of entity to which component is attached
console.log(this.el.getObject3D('mesh').name);
// name of object directly clicked
console.log(object.name);
// name of object's parent
console.log(object.parent.name);
// name of object and its children
object.traverse((node) => console.log(node.name));
});
以上所有内容都将给出所单击网格周围的节点名称。如果没有演示,我无法猜测您希望单击哪些节点,或者存在哪些节点,因此我认为您需要从那里进行实验。另请参阅。谢谢您,唐。没有你我们怎么办。我升级到0.8.2,问题得到解决。我还删除了raycaster autorefresh,它工作得非常好
this.el.addEventListener('click', (evt) => {
var object = evt.detail.intersection.object;
// name of entity to which component is attached
console.log(this.el.getObject3D('mesh').name);
// name of object directly clicked
console.log(object.name);
// name of object's parent
console.log(object.parent.name);
// name of object and its children
object.traverse((node) => console.log(node.name));
});