Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

three.js: Access Scene Objects by Name or ID

I'm generating objects from an array which I've defined like this (It's not limited to these three):

var links = [['Linkedin','img/linkedin.png','-300','-230', '600'],
             ['Google+', 'img/google.png',  '0',   '-230', '600'],
             ['Twitter', 'img/twitter.png', '300', '-230', '600']];

Now it goes through the each loop to create and add the objects to the scene by Three.JS like this:

$.each(links, function(i, item) {
    var thisItemTexture = THREE.ImageUtils.loadTexture(item[1]);
    thisItemGeo = new THREE.CubeGeometry(60, 60, 60,1 ,1 , 1);
    thisItemMat = new THREE.MeshBasicMaterial({map: thisItemTexture });
    thisItem =    new THREE.Mesh(thisItemGeo, thisItemMat);
    scene.add(thisItem);
    thisItem.position.x = item[2];
    thisItem.position.y = item[3];
    thisItem.position.z = item[4];
    thisItem.castShadow = true;
    thisItem.receiveShadow = true;          
});

The question is:
How can I access the objects that I've made in the each loop above?

like image 826
Siamak Motlagh Avatar asked Oct 17 '13 12:10

Siamak Motlagh


1 Answers

You can do this:

myObject.name = "objectName";
...
var object = scene.getObjectByName( "objectName" );

or to recursively search the scene graph

var object = scene.getObjectByName( "objectName", true );

Alternatively, you can search by ID.

var object = scene.getObjectById( 4, true );

three.js r.61

like image 83
WestLangley Avatar answered Oct 02 '22 17:10

WestLangley