添加3D模型:支持哪些类型的文件?以及在何处托管3D文件?

问题描述

从此处> 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”加载的。

  1. 我想知道除.gltf以外还支持哪些类型的文件?我可以从Revit,Sketchup,AchiCAD等加载模型吗?
  2. 我可以在哪里托管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();
        }
    });
})

除了其他功能,例如内置光线投射,模型选择,拖动和旋转,拖动和移动,动画,高度上的工具提示和标签或阳光阴影 Eiffel tower gif

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...