ich ThreeJS bin mit einer Web-Anwendung zu entwickeln, die eine Liste von Einheiten zeigen, die jeweils mit entsprechender „Ansicht“ und Taste „Hide“; z.B. entityName Ansicht Ausblenden. Wenn der Benutzer auf Schaltfläche klickt, wird die folgende Funktion aufgerufen und die Entität erfolgreich auf dem Bildschirm gezeichnet. ThreeJS: Entfernen Objekt aus Szene
function removeEntity(object){
scene.remove(object.name);
}
Das Problem ist, Einheit nicht von Bildschirm geladen einmal entfernt wird, wenn ausblenden Schaltfläche geklickt wird
: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);
}
Und klicken ausblenden Taste wird folgende Funktion aufgerufen. Was kann ich tun, um zu verstecken Schaltfläche zu arbeiten?
Ich habe kleines Experiment. Ich habe scene.remove(object.name);
direkt nach scene.add(object);
innerhalb addEntity
Funktion und als Ergebnis, wenn „Ansicht“ Schaltfläche geklickt, keine Einheit gezogen (wie erwartet), was bedeutet, dass scene.remove(object.name);
innerhalb addEntity
ganz gut gearbeitet. Aber ich kann immer noch nicht herausfinden, wie man es in removeEntity (object) verwendet.
Auch überprüfte ich Inhalte von scene.children und es zeigt: [object Object], [object Object], [object Object], [object Object], [object Object], [object Object]
vollständige Code: http://devplace.in/~harman/model_display1.php.html
Bitte fragen Sie, wenn Sie mehr Details benötigt wird. Ich habe mit rev-59-dev und rev-60 von ThreeJS getestet.
Danke. :)
Vielleicht hast du update scene vergessen (render it)? Gibt es Renderupdate vorhanden (requestAnimationFrame loop oder renderer.render (...))? –
Ich versuchte durch Aufruf von animate() (update() und render() werden innerhalb von animate()) nach 'scene.remove (Objektname);' in 'removeEntity (Objekt)', aber keine Änderung aufgerufen. :( – harman052