小编har*_*052的帖子

ThreeJS:从场景中删除对象

我正在使用ThreeJS开发一个显示实体列表的Web应用程序,每个实体都有相应的"查看"和"隐藏"按钮; 例如,entityName 查看隐藏.当用户单击" 查看"按钮时,将调用以下函数并成功在屏幕上绘制实体.

function loadOBJFile(objFile){            
    /* material of OBJ model */                                          
    var OBJMaterial = new THREE.MeshPhongMaterial({color: 0x8888ff});
    var loader = new THREE.OBJLoader();
    loader.load(objFile, function (object){
        object.traverse (function (child){
            if (child instanceof THREE.Mesh) {
                child.material = OBJMaterial;
            }
        });
        object.position.y = 0.1;
        scene.add(object);
    });     
}

function addEntity(object) {
    loadOBJFile(object.name);
}
Run Code Online (Sandbox Code Playgroud)

在单击" 隐藏"按钮时,将调用以下函数:

function removeEntity(object){
    scene.remove(object.name);
}
Run Code Online (Sandbox Code Playgroud)

问题是,单击" 隐藏"按钮后,一旦加载,实体就不会从屏幕中删除.如何使" 隐藏"按钮起作用?

我做了小实验.我在函数内部scene.remove(object.name);之后添加,结果,当点击"查看"按钮时,没有实体绘制(如预期的那样)意味着内部工作正常.但我仍然无法弄清楚如何在removeEntity(object)中使用它.scene.add(object);addEntityscene.remove(object.name);addEntity

另外,我检查了scene.children的内容,它显示:[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

完整代码: …

javascript three.js

45
推荐指数
3
解决办法
9万
查看次数

如何访问threeJS中scene.children的元素?

我在ThreeJS场景中添加了一些对象(使用scene.add(object)).我知道对象的名称,只想从scene.children中获取它的索引.

我尝试使用scene.children.indexOf("objectName")但它返回-1索引.任何人都可以建议我该怎么办?

谢谢

three.js

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

three.js ×2

javascript ×1