一、主要步骤
- 使用revit软件导出fbx模型;
- 使用glTFExport导出gltf模型,导出的gltf模型具有属性。但是此处导出gltf模型,不是为了在cesium中加载该gltf模型,主要目的是获取组件属性信息;
- 将fbx模型导入到3dmax中;
- 在3dmax软件编辑模型,主要过程有:删除无关的模型;设置模型轴的对齐方式;重新对fbx模型赋予纹理;将模型坐标改为0(模型多时耗时很久);
- 从3dmax软件中批量导出模型位置和obj模型,然后批量转为gltf模型;
- 根据导出的模型位置文件,生成i3dm和tileset.json;
- 把gltf模型放到i3dm同目录下,就做好了切片,可以直接在cesium中加载展示了;
二、详细过程
- revit导出fbx模型

- Revit导出gltf模型

- 3dmax中具体编辑模型的步骤

将fbx模型导入到3dmax系统中按下h快捷键,选中一个模型,放大到该模型位置。
选中不需要的模型删除,然后对剩余的模型,编辑轴。


保存为3dmax文件,然后重新打开,选中所有对象,然后创建组。

对创建的组,进行移动,坐标设为0,然后再解开组。

修改模型纹理,按照以下步骤,修改需要修改的模型颜色,然后保存,这样导出的obj模型是有颜色的,否则可能会丢失颜色。

点击脚本,新建脚本 ,将以下代码粘贴进去,并执行,获取所有的模型位置,模型的范围,
fn getPos=(
max select all
selObj = selection as Array
out_file = createfile "F:/Document/3dsMax/export/batchExport/output_pos.txt"
for i=1 to selObj.count do(
select selObj[i]
--path = "F:/Document/3dsMax/export/batchExport/"+(i as string)+ ".obj"
--exportFile path #noprompt selectedOnly:true using:ObjExp
print(i)
format "%,%,%,%,%,%,%,%\n" (i as string) ($.name) ($.center.x) ($.center.y) ($.center.z) ($.max.x - $.min.x) ($.max.y - $.min.y) ($.max.z - $.min.z) to:out_file
)
close out_file
)
getPos()
输出文件

新建脚本文件,并执行
将所有的模型位置改为0
fn formatPos=(
max select all
selObj = selection as Array
for i=1 to selObj.count do(
select selObj[i]
$.center=[0,0,0]
)
)
formatPos()
导出所有的模型,格式为obj
fn exportAll=(
max select all
selObj = selection as Array
out_file = createfile “F:/Document/3dsMax/export/batchExport/output_key.txt”
for i=1 to selObj.count do(
select selObj[i]
path = “F:/Document/3dsMax/export/batchExport/”+(i as string)+ “.obj”
exportFile path #noprompt selectedOnly:true using:ObjExp
print(i)
format “%,%\n” (i as string) ($.name)to:out_file
)
close out_file
)
exportAll()
批量转为gltf模型
使用obj2gltf工具将obj模型转为gltf模型
- 生成切片模型
访问网址:http://124.71.40.104/bim-tools/login.html,登录账号密码为test/test

将生产出的压缩包,解压。将导出的gltf模型放入目录下,就可以使用cesium加载展示了。
常见问题:
1.转换过程中导出的obj丢失纹理,可以改为批量导出fbx,fbx再批量转换为gltf,这样纹理就不会丢失了。Fbx转为gltf格式可以使用FBX2glTF.exe软件。