オンライン3Dエディタから.jsonをエクスポートしましたが、ロードして、this exampleのように20個のバージョンをインスタンス化しようとしています。私のコードは、すべての20のバージョンが実際に同じオブジェクトのように動作しています。与えられたx、z座標で別々のオブジェクトとしてシーンに追加されていない理由はわかりません。ThreeJS - .json 3Dファイルの複数のメッシュ
var serverObject;
var allBrains = []
var xCenter;
var zCenter;
var spacing = .2;
var newServ;
var objectLoader = new THREE.ObjectLoader();
objectLoader.load("asset_src/model.json", function(obj) {
//give it a global name, so I can access it later?
serverObject = obj
//see what's inside of it
obj.traverse(function(child) {
if (child instanceof THREE.Mesh) {
console.log(child)
}
})
//was trying to add transparency this way, but ended up
//going through the online editor to apply it
// var cubeMaterial1 = new THREE.MeshBasicMaterial({
// color: 0xb7b7b7,
// refractionRatio: 0.98
// });
//Do i need to instantiate my mesh like this, if so, how do I make sure that it gets the materials from the json? The json has 6 children each with a different material
// serverObject = new THREE.Mesh(obj, cubeMaterial1);
//make 20 versions of the file
for (var i = 0; i < 20; i++) {
xCenter = Math.cos(toRadians(i * spacing))
zCenter = Math.sin(toRadians(i * spacing))
serverObject.scale.set(.09, .09, .09)
//this amount of offset is correct for the scale of my world
//i was going to use my xCenter, zCenter but tried to simplify it till it works
serverObject.position.set((i * .1), controls.userHeight - 1, i * .1);
allBrains.push(serverObject)
//I've attempted a number of ways of adding the obj to the scene, this was just one
scene.add(allBrains[i]);
}
// see that there are 20 meshes
console.log(allBrains)
});
私の最後のコンソールログのリターンは次のようになります。現時点では
ありがとうございました!それはうまくいった。将来の人にclone()を使って新しい作業バージョンを投稿するにはどうすればいいですか? – EJW