revit导出fbx及gltf不丢贴图及贴图位置设置的方法。

  revit自家导出fbx时,材质会全部丢失。导出gltf用github上的相关插件可以将颜色正确的导出。却无法将在revit中贴好的贴图完好的导出。查询网上办法,目前比较容易实现的一项是导入blender以及3Dmax重新将贴图设置一遍在导出。重新贴图很麻烦,并且很多人只熟悉revit一个软件,重新学习别的建模软件耗费的时间成本又较多。自己对revit二开将贴图部分重新编写一下也可,但研究revit相关API以及算法也是比较耗费时间成本的事情。

  经过我的摸索发现一个比较简单,不需要学习其他软件的方法。只需配置一次,以后导出fbx或gltf时按照流程都可有较好的效果。下面说一下相关方法。

 1、 首先我们要下载revit导lumion的插件

下载链接:https://pan.baidu.com/s/1uH630RGXV4F6vsiqmYBxOQ?pwd=9fqm 
提取码:9fqm

  也可去网上下载

2、点击export导出相关dea文件。

3、然后我们需要下载blender

这个直接去官网下载最新版就可以,blender是个免费的软件。占用空间也很小。我的方法blender只是在里面起到导入和导出的作用,所以大家不需要担心多学习软件的问题。

4、设置blender为中文

5、删除blender里面默认创建的立方体,导入我们的dea文件。

删除里面的立方体 灯光及摄像机,避免导出后,给后续工作人员带来不必要的麻烦。按delet删除就可以。

6、更换blender的显示模式,类似revit的着色模式真实模式的转换。

勾掉场景世界

7、加入python脚本一键更改材质

更换模式后一片漆黑是正常现象,这是blender里面的材质有一个值没有调好,在blender里面一个一个调材质过于麻烦,且需要学习blender里面如何调整材质。我写了一个python脚本可以一键更改材质值。若你的材质中金属的部分需要调金属度,可以在材质命名中加入金属两个字,我对这一块做了单独的处理。

复制代码

import bpy
 
# 遍历所有材质
for mat in bpy.data.materials:
    # 如果材质使用节点并且有原理化BSDF节点
    if mat.use_nodes and mat.node_tree.nodes.get("原理化BSDF"):
        # 获取原理化BSDF节点
        bsdf = mat.node_tree.nodes["原理化BSDF"]
        # 将alpha值设为1
        bsdf.inputs[21].default_value = 1
        if "金属" in mat.name:
          bsdf.inputs[6].default_value = 0.7
        elif "玻璃" in mat.name:
          bsdf.inputs[6].default_value = 0.05
          bsdf.inputs[21].default_value = 0.1
          mat.blend_method = 'BLEND'
          bsdf .inputs[0].default_value = (0.295122, 0.870218, 1, 0.5)
        else:
          bsdf.inputs[6].default_value = 0.05
          

运行脚本

然后我们就已经更改材质完成了。

8、导出模型

我们的模型材质就更改完成了,下一步只需要导出fbx和gltf就可以了。

另外导出FBX需要注意设置

需要把路径模式改为复制,点击它旁边图标改为和我一样。

最后若需要导出的模型fbx或gltf格式没有贴图,只有贴了颜色,或贴图在revit中没有位置和大小的修改。直接用github上的gltf导出插件即可。fbx可以用twinmotion插件即可。

这个是好用的至少是至今发现上最好用最实用,也是参考然后大改过的 比如解决了Node、纹理失、压缩等等问题的项目 主要是Revit二次开发的插件,其中主要是基于Revit2018进行的,实现从Revit中把建筑模型导出来,使用的是GLTF格式的编码。(这个是好用的至少是至今发现上最好用最实用,也是参考然后大改过的 比如解决了Node、纹理失、压缩等等问题的项目) 运行操作: 直接双击运行插件,然后选择需要导出的格式与路径,导出格式包括gltf 与glb二进制这些; 运行成功还有返回的信息,导出的格式以及文件等等; 主要使用了RevitAPI.dll 与RevitAPIUI.dll 来Revit二次开发,其中 : //add-in manger 只读模式 使用了SharpGLTF库,SharpGLTF是一个100%.NET标准库,旨在支持Khronos Group glTF 2.0文件格式。 所以使用SharpGLTF生成gltf、glb数据; 该库分为两个主要软件包: SharpGLTF.Core提供读/写文件支持,以及对glTF模型的低级别访问。 SharpGLTF.Toolkit提供了方便的实用程序来帮助创建,操纵和评估glTF模型。 simple example gltf保存为glb格式: var model = SharpGLTF.Schema2.ModelRoot.Load("model.gltf"); model.SaveGLB("model.glb"); IExportContext接口在数据导出中,执行如下的顺序: 将revit的数据解析为我们自己的数据需要继承重写IExportContext就能revit文件进行数据导出和数据转换; * 接口在数据导出中,无链接模型执行如下的顺序: * Start -> OnViewBegin -> onElementBegin -> OnInstanceBegin ->OnMaterial ->OnLight * ->OnFaceBegin OnPolymesh -> OnFaceEnd -> OnInstanceEnd-> OnElementEnd * ->OnViewEnd ->IsCanceled ->Finish、 * 假如有链接模型在执行完非链接的OnElementBegin以后,执行OnLinkBegin,然后执行链接模型里的OnElementBegin……依次类推 依赖环境:Autodesk.RevitAPi Autodesk.Revit.UI 安装nodejs 使用工具:使用npm 安装gltf-pipeline配置系统环境
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值