Autodesk Forge Viewer:将片段材质连接到 Revit 模型数据

问题描述

编辑:TLDR 目前无法知道片段级别的材料名称

我想从节点的片段中读取材质并根据使用 Revit 材质名称作为键的贴图更改它们的材质。

我有以下来自模型节点的“材料和饰面”属性(通过 Viewer3D 检索):

Node Data from "Materials and Finishes"

并且我从该节点的片段中获得了以下三种材料:

THREEjs Materials from Node Fragments

有没有办法设置三种材料的名称以匹配模型数据(或完全使用它们)?

理想情况下,我可以将这三种材料与从该节点提取的以下材料相匹配:

Material Data

解决方法

不幸的是,SVF 文件格式(由模型衍生服务生成并由 Forge Viewer 加载)不保留材料名称。片段只是根据其在列表中的索引与特定材料相关联。

“材料和饰面”数据基本上只是原始文件(在本例中为 Revit 模型)的特定属性,在其他文件格式中可能不可用。

编辑:我尝试查看 Materials.json.gz 文件,不幸的是,其中也不包含名称:

{
    "name": "LMVTK Simple Materials","version":  "1.0","scene":    {
        "SceneUnit":    8215,"YIsUp":    0
    },"materials":    {
        "0":    {
            "version":  2,"userassets":   ["0"],"materials":    {
                "0":    {
                    "tag":  "","proteinType":  "","definition":   "SimplePhong","properties":   {
                        "integers": {
                            "mode": 4
                        },"booleans": {
                            "color_by_object":  false,"generic_is_metal": false,"generic_backface_cull":    true
                        },"scalars":  {
                            "generic_transparency": {
                                "units":    "","values":   [0]
                            }
                        },"colors":   {
                            "generic_diffuse":  {
                                "values":   [{
                                        "r":    0,"g":    1,"b":    0,"a":    1
                                    }]
                            }
                        }
                    },"transparent":  false,"textures": {
                }
                }
            }
        },"1":    {
            "version":  2,"colors":   {
                            "generic_diffuse":  {
                                "values":   [{
                                        "r":    0.400000,"g":    0.400000,"b":    0.400000,"textures": {
                }
                }
            }
        }
...
}