如何检查Three.js场景中是否存在对象,然后将其替换?我怀疑这是更多问题而不是Three.js问题,但是…
我有一个表单,该表单是在单击时启动的,要求用户基本上自定义一些与模型相关的选项。提交后,我希望应用程序检查对象是否已存在于同一位置(我通过在创建对象时为该对象分配名称来实现此目的)。如果已经有东西,请用新选择替换它。
我已经启用了检查机制,但是替换时仍然遇到问题:
var places = [];
$('#submit').off().on("click", function(){
//create a variable that stores info from the selections
place = motifClass.toString() + placeValue.toString();
motifChecker(place);
if (places.indexOf(place) === -1 ){
places.push(place);
};
….
var loader = new STLLoader().load(‘/assets/object.stl’, function( geometry ){
…
mesh.name = place;
place = "";
scene.add(mesh);
};
});
function motifChecker(){
var existing = scene.getObjectByName(place);
if ( places.includes(place) ){
scene.remove(existing);
}
};
将删除该对象,但似乎没有替换它。我的浏览器控制台告诉我新的stl文件已加载,但没有出现在屏幕上。
答案 0 :(得分:0)
删除现有文件后,应将其处理
existing.geometry.dispose();
existing.geometry = undefined;
existing.material.dispose();
existing.material = undefined;
scene.remove(existing)