如何检查Three.js场景中是否已存在对象,然后将其替换?

时间:2018-09-28 16:09:30

标签: javascript three.js

如何检查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文件已加载,但没有出现在屏幕上。

1 个答案:

答案 0 :(得分:0)

删除现有文件后,应将其处理

existing.geometry.dispose();
existing.geometry = undefined;
existing.material.dispose();
existing.material = undefined;
scene.remove(existing)