UE4_BIM替换材质处理流程

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的命名规范,一定会有摄像头的中文或者英文的关键字,根据这个关键字也可以去设置材质。上文中的测试案例用的就是模糊匹配。