Three.js getObjectByName not a function

Joe

Erfahrenes Mitglied
Hey ihr,

Ich versuche Zugriff auf ein Object zu erhalten jedoch wirft es mir nur jedesmal den Fehler das getObjectByName not a function wäre.

Ich gebe den Objecten einen Namen mit:
Javascript:
......
          // position square
           mesh.position.set(x, y, z);

           // rotate square to face target
           mesh.lookAt(sphere.position);
          
           <!-- Hier -->
           mesh.name="Square"+i;
          
           parent_obj.add(mesh);
         };
......

Und würde später gern mit den Object arbeiten.. zb Highlighting, löschen oder zoomen.
Jedoch wirft mir der Befehl getObjectByName immer nur den Fehler es sei keine Funktion.
Javascript:
...
      init();
       animate();
       console.log(scene);
       object = scene.getObjectByName("Square10");
       console.log(object);
     </script>
...

Laut der etwas dürftigen Dokumentation ist dies aber durchaus eine Funktion.

Hier das Beispiel ohne meine Zugriffsversuche:
http://callumprentice.github.io/apps/squares_on_sphere/
http://jsfiddle.net/NZEBH/47/



Es muss doch möglich sein mir ein Object zu holen um es zu bearbeiten.
Wäre für etwas Hilfestellung dankbar.
 
Zuletzt bearbeitet:
Code:
object = scene.__objects[10].name;
            console.log(object);
Wirft mir nun meinen Namen aus also in meinen Fall "Square6".
Scheint als müsste ich in einer foreach Schleife die Arrays durchforsten nach meinen Namen. Das gibt zum einem bei dieser derben komplexen Datenstruktur aber nicht die Sicherheit die Mesh Objekte komplett zu bearbeiten (zb löschen). Auch muss man hier aufpassen das man nicht ausversehen falsche Dinge löscht wie zb Objects3D anstatt der Mesh's.

Abgesehen davon das dies ohne den Befehl getObjectByName wesentlich langsame sein sollte ist noch nicht gesagt das ich das Object auch so wie gewünscht bearbeiten kann zb. Highlighting. Fragt sich vorallem warum funktioniert der Befehl hier nicht?

Für Gedanken oder Ideen bin ich immer dankbar.
 
Problem ist gelöst.
Das Beispiel verwendete eine manipulierte oder veraltete Version von Three.js. Trackball.js muss manuell dazu eingebunden werden da diese nicht wie im Beispiel Bestandteil von Three.js ist.
 
Zurück