我使用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);
}
点击隐藏按钮,调用以下函数:
function removeEntity(object){
scene.remove(object.name);
}
问题是,当点击“隐藏”按钮时,实体不会从屏幕上移除。我可以做什么让隐藏按钮工作?
我做了小实验。我添加了scene.remove(object.name); right after scene.add(object);在addEntity函数中,作为结果,当“视图”按钮单击时,没有实体绘制(如预期),意味着scene.remove(object.name);在addEntity中工作正常。但仍然我无法弄清楚如何使用它在removeEntity(对象)。
另外,我检查scene.children的内容,它显示:[object Object],[object Object],[object Object],[object Object],[object Object]
请问,如果需要更多的细节。我测试了rev-59-dev和rev-60的ThreeJS。
谢谢。 🙂