javascript - 如何从场景中删除对象

标签 javascript three.js

我想移除场景中的一些圆柱体,以便我可以将新的圆柱体放在另一个位置。

这就是我放置圆柱体的方式(这只是为了让您了解我想要做什么)。

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>

最佳答案

如果你想使用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' ) );

此外,如果您的 Material 和几何体具有相同的属性,请考虑在创建圆柱体网格时重复使用它们。只需在 for 循环之外声明它们。否则,您应该使用相应的 .dispose() 方法,以便在移除气缸时释放引擎的内部资源。看看https://stackoverflow.com/a/40730686/5250847了解更多详情。

three.js R103

关于javascript - 如何从场景中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55470625/

相关文章:

javascript - 更新运行时添加的 JQuery 进度条

javascript - 如何在 Python 中存储从 Javascript 动态生成的 HTML 表单元素?

javascript - 在页面中添加两次时 Jquery 库出现问题

javascript - 在javascript中使用reduce()按多个键对数组的值进行分组

javascript - 如何检测被其他面孔隐藏的 3D 形状的面孔(从 Angular 看不到)?

javascript - 在 three.js 程序中运行 webgl 函数

javascript - 为面添加厚度

javascript - 数学题

javascript - 加速 THREE.js 的方法

javascript - 将当前 View 存储在 cookie 中