UE4 处理BIM流程
Revit
BIM的处理软件Revit
百度云网盘
链接:https://pan.baidu.com/s/1HW1E6_zcm6u-qkDG9Tj8cA
提取码:BNBN
DataSmith
链接:https://www.unrealengine.com/zh-CN/datasmith/plugins
有Revit版本
安装流程
-
安装Revit,是Autodesk 出品的软件,网上破解很多
-
安装DataSmith的插件到Revit
安装成功后,在软件里会有如下截图所示:
-
安装DataSmith的插件到UE4对应的引擎版本(如果引擎的插件里已经存在,就不需要安装了)
处理流程
-
用Revit打开BIM的源文件
-
使用Revit的DataSmith工具把文件从
.rvt
格式导成udatasmith
格式 -
使用ue4的 DataSmithImporter 导入
udatasmith
格式文件到UE4引擎中 -
导入设置如下
可根据项目具体需求选择是否导入灯光、相机、动画以及光照贴图
- 在场景中会生成一个
DataSmithSceneActor
的实例
要了解的东西
在BIM
模型的模型,在UE4里边一定会生成对应的StaticMeshActor
进行挂载。一个BIM
模型对应一个StaticMeshActor
。
实际情况会有Actor
的产生,有的映射成Actor
,有的映射成StaticMeshActor
,笔者暂时没搞清楚。
Actor
目前来看都没有Asset User Data
的属性字段,只有Actor里边挂载的组件才有。
必须选中组件才能看到。
StaticMeshActor
有Asset User Data
的属性字段。
我们要读取的就是DatasmithUserData
里的元数据
UDataSmith文件数据的读取
官方参考链接:https://docs.unrealengine.com/4.27/zh-CN/WorkingWithContent/Importing/Datasmith/Overview/UsingDatasmithMetadata/
支持蓝图和python对于udatasmith
上资源里的对象的键值对的读取操作
简单概括,BIM里得元数据一定是可以读出来的。但是不能修改。
在UDataSmith文件添加属性字段
用记事本可以打开.udatasmith
文件
文件的内容是xml格式
可以使用脚本语言对文件进行批量化处理
DataprepAsset
处理udatasmith
的一个工具
DataAsset的使用
- 新建一个Dataprep文件
DataPrep的主要操作步骤如下
执行逻辑之前的效果如下:
看到线管都是灰色的材质
执行上述的脚本会变成如下的截图效果
没有同步到项目之前,场景中是这个效果
同步之后场景是这个效果
每次点击完提交之后,这个文件就会变成这样的效果。如果想要再次修改提交,需要重新导入。因此需要多次修改完毕之后,再点击提交。
程序测试
-
编辑器模式
-
在Editor Utility Widget 测试
获取所有BIM元数据
根据Key获取Value 和 Actor
通过键值获取对应得Actor,Actor下边挂StaticMesh组件,组件上可以设置材质
GetAllObjectsAndValuesForKey
返回的是Objects的对象类型是DataSmithSceneActor
的类型
通过以上代码,把线管得颜色换成黄色
UE4 图层
导入.udatasmith
进入引擎之后,发现图层Layers
的Tab
也被展开
通过研究.udatasmith
文件可以发现
线框标红的地方,Element_Category
所有列举的值跟UE4 中的Layer的值是匹配对应的
图层的操作,UE4 专门有一套子系统负责处理图层
BIM材质替换标准
-
根据我们素材库的材质id,写入到对应的bim模型的属性字段中,通过观察
udatasmith
文档,可以找到bim的属性规则。因此我们可以加一个属性key
字段Element_BNMaterialID
,值为我们材质库的ID -
通过分析
Dataprep
的工具,可以发现该工具用的是模糊匹配。我们也可以用字段模糊匹配的方式进行设置。假设BIM模型里可能会有摄像头,摄像头按照bim的命名规范,一定会有摄像头的中文或者英文的关键字,根据这个关键字也可以去设置材质。上文中的测试案例用的就是模糊匹配。
最后的最后,如果您觉得这篇文章帮助到您,请资助下这位朋友的粮食,谢谢!