我正在创建某种Visual Editor:我正在添加/删除/转换对象。
我的初始场景只有一个平面作为楼层(5000x5000)。
我希望能够从头开始“重新加载”场景,也就是说通过点击“新建”按钮删除除地板以外的所有内容。
怎么可能?
答案 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删除错误修正