在ThreeJS模型加载器中删除PointLight

时间:2016-12-07 19:18:09

标签: three.js

我正在尝试删除点光源(或者最好是任何光源),但我是ThreeJS的新手......我尝试了babylonScene.remove(object);但是我得到一个错误,"无法调用遍历未定义& #34;或那些影响的东西。如果这是建议的方法,很高兴发布错误。

以下代码取自ThreeJS示例代码以及其他删除代码。

https://github.com/mrdoob/three.js/blob/master/examples/webgl_loader_babylon.html

  var loader = new THREE.BabylonLoader( manager );
    loader.load( data.src, function ( babylonScene ) {
        babylonScene.traverse( function ( object ) {
            if ( object instanceof THREE.Mesh ) {
                object.material = new THREE.MeshPhongMaterial( {
                    color: Math.random() * 0xffffff
                });
            }
    else if(object instanceof THREE.PointLight){
      console.log("Removing PointLight");
      object.remove();
    }
   });
   ...
    }, onProgress, onError );

1 个答案:

答案 0 :(得分:1)

最好的想法是将光线强度设置为0,这意味着你不会再看到它了:

var loader = new THREE.BabylonLoader( manager );
loader.load( data.src, function ( babylonScene ) {
    babylonScene.traverse( function ( object ) {
        if ( object instanceof THREE.Mesh ) {
            object.material = new THREE.MeshPhongMaterial( {
                color: Math.random() * 0xffffff
            });
        }
else if(object instanceof THREE.PointLight){
  console.log("Removing PointLight");
  object.intensity = 0
}
});
...
}, onProgress, onError );

希望这有帮助!