演示如何使用WireframeHelper删除线框

threejs how to remove wireframe with WireframeHelper

本文关键字:删除 线框 WireframeHelper 何使用      更新时间:2023-09-26

我有一个函数来为对象添加线框,所以我使用下面的函数来做它,在第一个条件下,它是工作的,我可以应用线框

 function wireframe(state){
                        
                    
                      if(state=='on')
                      {
                          var wfh = new THREE.WireframeHelper( mesh, 0xf00e0e );
                          wfh.material.wireframe = true;
                          //wfh.material.linewidth = 1; // looks much better if your PC will support it
                          scene.add( wfh );                     
        
                      }
                      if(state=='off')
                      {
                           var wfh1 = new THREE.WireframeHelper( mesh,0xf00e0e );
                           wfh1.material.wireframe = false;
                           scene.remove(wfh1);  
                      }
                
            }

在第二种情况下,我想删除对象上应用的线框,所以用scene.remove(wfh1);删除场景,但它不起作用。线框图不会从对象中移除。

我认为这是你想要的。你需要一个全局变量来存储线框对象,只给它赋一次值(if语句),然后有选择地将它添加或从场景中删除。

var wfh;
function wireframe (state) {
    if  ( state=='on' )
    {
        if ( wfh === `undefined` )    // so you dont add a new wfh each time you call wireframe
            wfh = new THREE.WireframeHelper( mesh, 0xf00e0e );
        scene.add( wfh );                     
    }
    else if ( state=='off' )
    {
        scene.remove( wfh );  
    }
}