Three.js - 从开始重新加载场景

时间:2015-10-21 10:08:00

标签: javascript three.js scene

我正在创建某种Visual Editor:我正在添加/删除/转换对象。

我的初始场景只有一个平面作为楼层(5000x5000)。

我希望能够从头开始“重新加载”场景,也就是说通过点击“新建”按钮删除除地板以外的所有内容。

怎么可能?

1 个答案:

答案 0 :(得分:1)

您可以遍历场景对象,检查您在那里拥有的对象然后将其删除。如果您想要保留一些网格物体,请在它们上设置属性或名称,并检查该名称。

以下示例函数clearScene()会在场景中删除所有网格中具有keepMe - 属性设置为 false 根本没有:

floor = new THREE.Mesh( /* ...  */ );
floor.userData = { keepMe: true };

// ...

function clearScene() {
    var to_remove = [];

    scene.traverse ( function( child ) {
        if ( child instanceof THREE.Mesh && !child.userData.keepMe === true ) {
            to_remove.push( child );
         }
    } );

    for ( var i = 0; i < to_remove.length; i++ ) {
        scene.remove( to_remove[i] );
    }
}

Jsfiddle:http://jsfiddle.net/L0rdzbej/138/

@gaitat

基于此answer删除错误修正