问题描述
从此处> https://docs.mapbox.com/mapbox-gl-js/example/add-3d-model/,我发现示例中的3D模型是从“ https://docs.mapbox.com/mapbox-gl-js/assets/34M_17/34M_17.gltf”加载的。
- 我想知道除.gltf以外还支持哪些类型的文件?我可以从Revit,Sketchup,AchiCAD等加载模型吗?
- 我可以在哪里托管3D文件?我可以从Dropbox,Google Drive等加载它吗?
解决方法
Three js allows you to load many different formats,包括Collada(.dae),FBX(.fbx),OBJ / MTL,3MF,and more。您需要将加载程序脚本替换为要加载的脚本。
文件可以与正在执行的页面托管在不同的域中,但是很可能您需要处理启用了CORS的域。
如果您要努力使用Mapbox和Three js,我建议您签出Threebox,这是一个插件,可以简化仅用几行代码,实际上就是三行代码之间的交互。 js loader示例将减少为仅以下几行。
map.on('style.load',function () {
map.addLayer({
id: 'custom_layer',type: 'custom',renderingMode: '3d',onAdd: function (map,mbxContext) {
window.tb = new Threebox(
map,mbxContext,{ defaultLights: true }
);
let options = {
type: 'gltf',//'gltf'/'mtl'
obj: './models/radar/34M_17.gltf',//model url
units: 'meters',scale: 1,rotation: { x: 90,y: 180,z: 0 },//default rotation
anchor: 'center'
}
tb.loadObj(options,function (model) {
model.setCoords(origin);
tb.add(model);
});
},render: function (gl,matrix) {
tb.update();
}
});
})