我想删除现场的一些圆柱体,以便可以将新的圆柱体放在另一个位置。
这就是我放置气瓶的方式(这只是显示出来,以便您了解我要做什么)。
for (i = 0; i < aantalLangs; i++) {
var geometry = new THREE.CylinderGeometry( (langsDiameter * scale), (langsDiameter * scale) , langsLengte * scale , 20 );
var material = new THREE.MeshBasicMaterial( {color: 0xffe26f} );
var cylinder = new THREE.Mesh( geometry, material );
scene.add( cylinder );
cylinder.position.set( 0 , 0 ,onderRandRooster);
onderRandRooster -= (langsMaas * scale);
cylinder.rotation.z = Math.PI / 2;
}
我使用此功能将其删除。
function ClearMesh(){
scene.remove(scene.getObjectByName(cylinder));
scene.remove(scene.getObjectByName(cylinder2));
}
我想使用此按钮来移除气瓶。
<button onclick="ClearMesh();">Clear mesh</button>
答案 0 :(得分:1)
如果要使用Object3D.getObjectByName()
,则必须应用字符串作为参数。更确切地说,您目前未在应用程序中设置的Object3D.name
。这样的事情应该起作用:
// in your for loop
var cylinder = new THREE.Mesh( geometry, material );
cylinder.name = 'cylinder' + i;
// in your ClearMesh() function
scene.remove( scene.getObjectByName( 'cylinder1' ) );
此外,如果圆柱体网格具有相同的属性,请考虑在创建它们的圆柱体网格时重新使用它们的材料和几何形状。只需在for
循环之外声明它们即可。否则,您应该使用相应的.dispose()
方法,以便在卸下气缸时释放引擎的内部资源。请查看https://stackoverflow.com/a/40730686/5250847,了解更多详细信息。
three.js R103