草图大师sketchup的模型加载到cesium里显示 带贴图

  • 前言
  • 一、sketchUp导出obj格式
  • 二、在Blender中转换数据
  • 1.导入数据
  • 2.调整尺寸和视图
  • 三、cesium中加载
  • 总结



前言

由于工作原因,拿到一个skp格式的模型,而且还有贴图和材质,需要加载到cesium里面,但是直接用草图大师导出为fbx格式的时候,FBX有一个基于文本(ASCII)和二进制版本,草图大师导出来的是基于文本的格式,也就是ASCII版本,并且还有一个文件夹是专门放贴图的,所以导入的cesiumlab里面转tileset的时候处理不了,就算处理了之后,模型也是全黑的,贴图和材质那些东西都没有,由此开始了我找方法的解决这个问题的漫漫长路。过程我就不赘述了,我就直接写我最终用成功的方法。


提示:以下是本篇文章正文内容,下面案例可供参考

一、sketchUp导出obj格式

从sketchup中导出obj格式,最终生成三个文件

blender 导出的fbx 在unity中没有贴图_贴图


blender 导出的fbx 在unity中没有贴图_加载_02

二、在Blender中转换数据

1.导入数据

如果将模型导入到Blender里面显示数据已经加进去了,但是模型却没有显示出来,那可能是模型尺寸太大或者太小了,所以导致的看不到

blender 导出的fbx 在unity中没有贴图_加载_03

2.调整尺寸和视图

我是因为模型太大了,导致在Blender中看不到,因为我用快捷键“Shift+C”显示全部的时候,依旧看不到模型,所以我推测是模型太大了,然后就修改缩放值,全部改成0.0001,这个缩放尺寸可以用不同的值试一下,找到最合适的值,我是之前修改成0.001发现还是太大了,所以改成了0.0001。

blender 导出的fbx 在unity中没有贴图_加载_04


然后调整一下视图的模式,看看是否贴图可以显示出来,如果可以,就直接导出glb格式

三、cesium中加载

该处使用的url网络请求的数据。

const entity = this.viewer.entities.add({
                name: "Cesium_Air",
                position: position,
                orientation: orientation,
                model: {
                    uri: "Assets/model/dapeng.glb",
                    minimumPixelSize: 128,
                    maximumScale: 20000,
                },
            });

最终结果

blender 导出的fbx 在unity中没有贴图_数据_05

总结

其实只要在sketchup中导出obj格式的,然后再到Blender中导出不管是glb还是fbx格式的,cesiumlab都可以加载了,只是如果是fbx格式的话,还需要在cesiumlab中转为tileset格式加载,反正我试了很多种方法,这种方式是保存模型和贴图最完整的。