问题描述
编辑:TLDR 目前无法知道片段级别的材料名称。
我想从节点的片段中读取材质并根据使用 Revit 材质名称作为键的贴图更改它们的材质。
我有以下来自模型节点的“材料和饰面”属性(通过 Viewer3D 检索):
有没有办法设置三种材料的名称以匹配模型数据(或完全使用它们)?
理想情况下,我可以将这三种材料与从该节点提取的以下材料相匹配:
解决方法
不幸的是,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": {
}
}
}
}
...
}