threejs如何使用WireframeHelper删除线框

时间:2014-06-25 11:25:44

标签: javascript three.js

这里我有为对象添加线框的功能,所以我使用以下函数来执行它,在第一个条件下它正在工作,我可以应用线框

 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);,它不起作用线框不会从对象中删除

1 个答案:

答案 0 :(得分:1)

我认为这就是你想要的。你需要一个全局变量来存储线框对象只为它分配一次值(如果声明),然后有选择地添加它或从场景中删除它。

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 );  
    }
}