我想加载多个 JSON 文件并控制其网格的可见性。为此,我将它们与它们的 JSON 文件名相关联。我得到了它的工作,但解决方案并不让我满意。
我修改了 THREE.JSONLoader 并将一个新参数传递给回调函数。因此,对于 three.js 的每个新版本,我都必须再次修补 three.js 文件。
这是我的工作解决方案(客户端)。请参阅 loader.load(filename, callback, meshname) 的新第三个参数。
有没有更好的解决方案,不需要打补丁的three.js 库?
谢谢
// Load the JSON files
var meshes = new Object();
var jsonFileNames = ['assembly/part1.json', 'assembly/part2.json', 'assembly/part3.json'];
for(var i = 0; i < jsonFileNames.length; i++){
var loader = new THREE.JSONLoader();
var meshName = jsonFileNames[i].split("/")[1].split(".")[0];
loader.load(jsonFileNames[i], function(geometry, meshName){
mesh = new THREE.Mesh(geometry, new THREE.MeshPhongMaterial({vertexColors: THREE.FaceColors}));
mesh.scale.set(0.2, 0.2, 0.2);
mesh.doubleSided = true;
scene.add(mesh);
meshes[meshName] = mesh;
}, meshName);
}
// ....
// Access their meshes
meshes[meshName].visible = true;