Я использую ThreeJS для разработки веб-приложения, которое отображает список сущностей, каждый из которых имеет соответствующие кнопки "Вид" и "Скрыть"; например 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);
сразу после scene.add(object);
внутри функции addEntity
, и в результате, когда нажата кнопка "Вид", ни один объект не нарисован (как ожидалось), что означает, что scene.remove(object.name);
отлично работал в пределах addEntity
. Но все же я не могу понять, как использовать его в removeEntity (object).
Кроме того, я проверил содержимое scene.children, и он показывает: [Object Object], [Object Object], [Object Object], [Object Object], [Object Object], [Object Object]
Полный код: http://devplace.in/~harman/model_display1.php.html
Пожалуйста, спросите, требуется ли более подробная информация. Я тестировал с rev-59-dev и rev-60 от ThreeJS.
Спасибо.:)