web-dev-qa-db-fra.com

three.js: accès aux objets de scène par nom ou ID

Je génère des objets à partir d'un tableau que j'ai défini comme ceci (ce n'est pas limité à ces trois):

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

Maintenant, il passe par chaque boucle pour créer et ajouter les objets à la scène par Three.JS comme ceci:

$.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;          
});

La question est:
Comment puis-je accéder aux objets que j'ai créés dans chaque boucle ci-dessus?

29
Siamak A.Motlagh

Tu peux le faire:

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

ou pour rechercher récursivement le graphique de la scène

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

Vous pouvez également effectuer une recherche par ID.

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

three.js r.61

53
WestLangley