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