当我单击3D模型时,我想要获取能够删除该对象的对象ID,名称或对象。
function onDocumentMouseDown( event ) {
if (enableRaycasting){
event.preventDefault();
mouse.set( ( event.clientX / window.innerWidth ) * 2 - 1, - (
event.clientY / window.innerHeight ) * 2 + 1 );
raycaster.setFromCamera( mouse, camera );
var intersects = raycaster.intersectObjects( scene.children, true );
console.log(intersects);
if ( intersects.length > 0 ) {
scene.remove(intersects[0]); //doesnt work
scene.remove(intersects[0].object); //doesnt work
scene.remove(intersects[1]); //doesnt work
scene.remove(intersects[1].object); //doesnt work
console.log(intersects[0].object.name) //Bot_Skinned_0
console.log(intersects[0].object.id)// output: 72
}
render();
}
}
问题:创建对象时,ID为21,模型名称为“ BotSkinned”(因为我编码为object.name = "BotSkinned"
)。然后将对象添加到场景中:
scene.add( object );
console.log(scene.getObjectByName("BotSkinned").id); //output: 21
通过Raycasting,我想得到那个物体,然后删除它,但是这些删除命令均无效,并且名称和ID也不同。有人知道如何获取正确的object.id
吗?那将是最简单的解决方案。
编辑:当然,我只能说scene.remove(scene.getObjectByName("BotSkinned"))
,但是光线投射应该可以给我确切的对象,因为将来我会拥有很多这些对象。
答案 0 :(得分:0)
这是正确的ID:intersects [0] .object.parent.parent.parent.id; 因此,现在可以轻松删除它:scene.remove(scene.getObjectById(intersects [0] .object.parent.parent.parent.id))。 希望它与gltf,collada等类似。.