UE4_BIM替换材质处理流程

本文介绍如何利用Revit和DataSmith插件将BIM模型导入UE4,并实现材质替换及元数据读取。涉及安装流程、处理步骤、材质替换标准等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UE4 处理BIM流程

Revit

BIM的处理软件Revit

百度云网盘

链接:https://pan.baidu.com/s/1HW1E6_zcm6u-qkDG9Tj8cA
提取码:BNBN

DataSmith

链接:https://www.unrealengine.com/zh-CN/datasmith/plugins

有Revit版本

安装流程

  1. 安装Revit,是Autodesk 出品的软件,网上破解很多

  2. 安装DataSmith的插件到Revit

    安装成功后,在软件里会有如下截图所示:
    在这里插入图片描述

  3. 安装DataSmith的插件到UE4对应的引擎版本(如果引擎的插件里已经存在,就不需要安装了)

在这里插入图片描述

在这里插入图片描述

处理流程

  1. 用Revit打开BIM的源文件

  2. 使用Revit的DataSmith工具把文件从.rvt格式导成udatasmith格式

  3. 使用ue4的 DataSmithImporter 导入udatasmith格式文件到UE4引擎中

  4. 导入设置如下

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xp4Le6Se-1635990357330)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/wpsE2CF.tmp.jpg)]

可根据项目具体需求选择是否导入灯光、相机、动画以及光照贴图

  1. 在场景中会生成一个DataSmithSceneActor的实例

要了解的东西

BIM模型的模型,在UE4里边一定会生成对应的StaticMeshActor进行挂载。一个BIM模型对应一个StaticMeshActor

实际情况会有Actor的产生,有的映射成Actor,有的映射成StaticMeshActor,笔者暂时没搞清楚。

Actor 目前来看都没有Asset User Data 的属性字段,只有Actor里边挂载的组件才有。

必须选中组件才能看到。

在这里插入图片描述

StaticMeshActorAsset User Data 的属性字段。

在这里插入图片描述

我们要读取的就是DatasmithUserData里的元数据

UDataSmith文件数据的读取

官方参考链接:https://docs.unrealengine.com/4.27/zh-CN/WorkingWithContent/Importing/Datasmith/Overview/UsingDatasmithMetadata/

支持蓝图和python对于udatasmith上资源里的对象的键值对的读取操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-URqanRQo-1635990357333)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/image-20211103111944404.png)]

在这里插入图片描述

简单概括,BIM里得元数据一定是可以读出来的。但是不能修改。

在UDataSmith文件添加属性字段

用记事本可以打开.udatasmith文件

文件的内容是xml格式

可以使用脚本语言对文件进行批量化处理

DataprepAsset

参考链接:https://learn.unrealengine.com/course/3751568/module/7270951?moduletoken=UHxxnDLPW8RiGi4KqsDRDGuixEPZ7JeomQJAPOObimqnqy4sD8RMfUq0veNjVZ&LPId=0

处理udatasmith的一个工具

DataAsset的使用
  1. 新建一个Dataprep文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eqCQYBo3-1635990357334)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/image-20211103143524081.png)]

DataPrep的主要操作步骤如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ixg8Vfji-1635990357335)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/image-20211103144543198.png)]

执行逻辑之前的效果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ee16Ruc8-1635990357335)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/image-20211103144746943.png)]

看到线管都是灰色的材质

执行上述的脚本会变成如下的截图效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t4c69sjN-1635990357336)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/image-20211103144905287.png)]

没有同步到项目之前,场景中是这个效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ec7Wbi6S-1635990357336)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/image-20211103144956088.png)]

同步之后场景是这个效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2qpFMMXj-1635990357336)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/image-20211103145208044.png)]

每次点击完提交之后,这个文件就会变成这样的效果。如果想要再次修改提交,需要重新导入。因此需要多次修改完毕之后,再点击提交。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3iSrZkIm-1635990357337)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/image-20211103145353053.png)]

程序测试

  1. 编辑器模式

  2. 在Editor Utility Widget 测试

获取所有BIM元数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t5zQohFI-1635990357337)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/image-20211103162131615.png)]

根据Key获取Value 和 Actor

通过键值获取对应得Actor,Actor下边挂StaticMesh组件,组件上可以设置材质

GetAllObjectsAndValuesForKey 返回的是Objects的对象类型是DataSmithSceneActor的类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yqkHsijc-1635990357338)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/image-20211103170139676.png)]

通过以上代码,把线管得颜色换成黄色

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y4agEqFr-1635990357338)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/image-20211103170411520.png)]

UE4 图层

导入.udatasmith进入引擎之后,发现图层LayersTab也被展开

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FIlfbDR6-1635990357339)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/image-20211103170814501.png)]

通过研究.udatasmith文件可以发现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lNdAlrvR-1635990357339)(UE4%20BIM%20%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.assets/image-20211103171147817.png)]

线框标红的地方,Element_Category所有列举的值跟UE4 中的Layer的值是匹配对应的

图层的操作,UE4 专门有一套子系统负责处理图层

在这里插入图片描述

BIM材质替换标准

  1. 根据我们素材库的材质id,写入到对应的bim模型的属性字段中,通过观察udatasmith文档,可以找到bim的属性规则。因此我们可以加一个属性key字段

    Element_BNMaterialID ,值为我们材质库的ID

  2. 通过分析Dataprep的工具,可以发现该工具用的是模糊匹配。我们也可以用字段模糊匹配的方式进行设置。假设BIM模型里可能会有摄像头,摄像头按照bim的命名规范,一定会有摄像头的中文或者英文的关键字,根据这个关键字也可以去设置材质。上文中的测试案例用的就是模糊匹配。

最后的最后,如果您觉得这篇文章帮助到您,请资助下这位朋友的粮食,谢谢!

请添加图片描述

### Datasmith 无法导入骨骼网格体的原因 当遇到Datasmith无法成功导入骨骼网格体的情况时,这通常与源文件中的动画数据结构有关。如果源场景中存在复杂的嵌套层次或者不支持的骨架绑定方式,则可能导致该问题的发生[^1]。 另外一种常见原因是,在某些特定版本的软件之间可能存在兼容性差异,尤其是当使用的第三方建模工具更新频率较高而Datasmith尚未完全适配最新特性的时候[^2]。 ### 解决方案 为了克服上述提到的问题并顺利实现骨骼网格体的导入,可以尝试以下几种方法: 对于因复杂层级关系引起的问题,建议先简化模型结构再进行导出操作;确保所有的骨骼节点都处于同一级目录下,并且保持简单的父子链连接形式[^3]。 针对可能存在的版本兼容性问题,确认所用到的所有应用程序均为官方推荐搭配组合内的稳定版次。必要时可考虑降级或升级至相互匹配的支持范围之内[^4]。 此外还可以利用中间件作为桥梁来转换格式,比如FBX文件格式具有良好的跨平台通用性和广泛的工业标准接受度,通过将其设置为目标输出类型往往能够有效提高成功率[^5]。 ```python # Python脚本用于批量处理待转码资产 import unreal_engine as ue def batch_convert_assets(source_folder, target_format="fbx"): assets = ue.get_editor_asset_library().list_assets(source_folder) for asset in assets: current_path = f"{source_folder}/{asset}" if ".dae" in current_path or ".obj" in current_path: # 假设原始资源为Collada(.dae) 或 Wavefront (.obj) new_path = current_path.replace(".dae", "." + target_format).replace(".obj", "." + target_format) options = {"export_maya": False, "axis_conversion": (False, True, False), "apply_unit_scale": True} result = ue.convert_asset(current_path, new_path, **options) if not result.was_successful(): print(f"Failed to convert {current_path}") batch_convert_assets("/Game/SourceAssets") ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值