如何使用pythonOCC从 GLB文件中读取自定义数据(包括extras与用户数据)

编程语言 2026-07-10

我正在使用pythonOCC将一个3D模型导出为GLB格式。在导出过程中,我在每个面上使用 TDataStd_NamedData 存储自定义元数据:

...
user_data = TDataStd_NamedData.Set(some_shape_label)
user_data.SetString("some_variable", str(value))
....

这会在每个GLB节点上正确地保存为 extras

现在,当我尝试使用 RWGltf_CafReaderTDataStd_NamedData 来读取它时,这个属性始终找不到。

.....
shape = shape_tool.GetShape(label)
    named_data = TDataStd_NamedData()
    if label.FindAttribute(TDataStd_NamedData.GetID(), named_data):
        if named_data.HasStrings():
            print("Yes") # does not print

问题:

  1. RWGltf_CafReader 实际上会导入 extras 吗?
  2. 如果没有,使用pythonOCC读取GLB extras / 用户数据的正确方法是什么?是否可以与形状同时读取?

解决方案

RWGltf_CafReader 不会导入glTF extras,因此加载后 TDataStd_NamedData 将为空。
要访问自定义元数据,可以单独解析GLB(例如,使用 pygltflib),然后将其手动映射到导入的形状。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章