Three.js - 从头重新加载场景

Three.js - Reload Scene from start

我正在创建某种可视化编辑器:我是 adding/deleting/transforming 个对象。

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

我希望能够从头开始 "reload" 场景,也就是说通过单击按钮 "New".

删除地板以外的所有内容

怎么可能?

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

以下示例函数 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 的删除错误修复