最近在做地理信息可视化的项目时,涉及到了cesium使用obj格式的模型。但是在cesium中使用obj格式的模型并不是最好的选择,因为它不能很好地控制模型的细节和材质。转而使用cesium中的json格式可以更好地满足我们的需求。
那么,在cesium中将obj格式的模型转换为json格式,我们可以使用官方提供的插件Cesium3DTilesConverter。这个插件不仅可以将obj转换成json格式,还可以将其他格式如3ds、fbx等转换成json格式。下面是具体的步骤:
// 导入插件 const Cesium3DTilesConverter = require('Cesium3DTilesConverter'); // 转换 const convertResult = await Cesium3DTilesConverter.convert({ input: '输入路径/xxx.obj', outputDirectory: '输出路径', binary: true, // 是否压缩二进制数据 separate: true, // 是否拆分对象 separateSize: 100, // 每个拆分对象的最大大小 });
可以看到,转换方法比较简单,主要需要指定输入路径、输出路径等参数。如果需要压缩二进制数据、拆分对象等,也可以在参数中指定。
转换完成后,我们就可以将json格式的模型导入到cesium中了。使用cesium的Cesium3DTileset加载模型即可:
const tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({ url: '模型路径/xxx.json', maximumScreenSpaceError: 2, }));
完成以上步骤后,我们就可以在cesium中使用json格式的模型了。不仅可以更好地控制模型的细节和材质,还能够方便地与其他cesium组件进行交互。