2016-10-26 1 views
0

J'ai beaucoup de fichiers json que je charge avec loader.load en utilisant three.js. Ils sont affichés lorsque je clique sur le contenu du texte qui correspond au nom de fichier json.Comment cacher des objets json sur une scène avec la fonction loader.load de three.js?

Comment puis-je décharger ou masquer un objet avec un second clic?

Voici mon code:

document.getElementById("dest").getElementsByTagName("span").onclick = function(element, key) {myFunction()}; 
    function myFunction() { 
     document.getElementById("dest").getElementsByTagName("span").height = "100%"; 
     var t = event.target.textContent; 
     var a = t.slice(1,t.length-1); 
     path = 'examples/brain_parts/' + groupNames[a] + '.json'; 

       loader.load(path, 
         function (geometry, materials, data) { 
         var material = new THREE.MultiMaterial(materials); 
         var object = new THREE.Mesh(geometry, material); 
         object.scale.set(5,5,5); 
         object.position.set(0, 0, 0); 
         scene.add(object); 
         render(); 

       }) 

    } 
+0

Bienvenue sur Stack Overflow! Il semble que vous ayez oublié d'inclure le code que vous avez mentionné, vous devriez éditer votre question et l'ajouter. –

Répondre

0
var a = t.slice(1,t.length-1); 
var objName = "groupNames" + a; 

puis de traverser la scène, à la recherche de l'objet qui a un « nom » de attibute égale à la valeur objName. Ou vous pouvez faire

var obj = scene.getObjectByName(objName); 

Si vous avez trouvé un, puis retirez-le, si vous ne trouvez pas alors appeler

loader.load(... 
    var object = new THREE.Mesh(geometry, material); 
    object.name = objName; 
    ... 
); 
+0

var obj = scene.getObjectByName (objName) revient indéfini – maria

+0

@maria vous pouvez le faire récursivement avec var obj = scene.getObjectByName (objName, true); – prisoner849

+0

@maria if (obj) {show/hide} autre {loader.load()} – prisoner849