web-dev-qa-db-ja.com

three.js:名前またはIDによるシーンオブジェクトへのアクセス

このように定義した配列からオブジェクトを生成しています(これら3つに限定されません):

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

次に、各ループを通過して、次のようにThree.JSによってオブジェクトを作成してシーンに追加します。

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

質問は:
上記の各ループで作成したオブジェクトにアクセスするにはどうすればよいですか?

29

あなたはこれを行うことができます:

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

またはシーングラフを再帰的に検索する

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

または、IDで検索できます。

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

three.js r.61

53
WestLangley