【问题标题】:How to find all SCNMaterials in a model, that uses texture files如何在使用纹理文件的模型中查找所有 SCNMaterials
【发布时间】:2019-03-04 01:57:55
【问题描述】:

我正在尝试使用以下代码在模型(.scn 文件)中查找所有带有纹理文件的 SCNMaterials

 NSArray *identifiers = [sceneSource identifiersOfEntriesWithClass:[SCNMaterial class]];
    for (NSString *identifier in identifiers) {
        // iterate thru' each material to find diffuse.contents with a file.
    }

但是标识符数组是空的。顺便说一句,模型加载正常。并且有几种命名材料。

  // materials from a node.
 (lldb) po [node.geometry materials]
<__NSSingleObjectArrayI 0x1c001d490>(
<SCNMaterial: 0x1c43c4920 'ITEM1'
  diffuse=<SCNMaterialProperty: 0x1c40cff10 | contents=foo.png>
  ambient=<SCNMaterialProperty: 0x1c42c1f80 | contents=UIExtendedSRGBColorSpace 0.408964 0.408952 0.408959 1>
  specular=<SCNMaterialProperty: 0x1c42c3d40 | contents=UIExtendedSRGBColorSpace 0 0 0 1>
  emission=<SCNMaterialProperty: 0x1c40ceb60 | contents=UIExtendedSRGBColorSpace 0 0 0 1>
  transparent=<SCNMaterialProperty: 0x1c40cb050 | contents=UIExtendedSRGBColorSpace 1 0.999974 0.999991 1>
  reflective=<SCNMaterialProperty: 0x1c40cb8a0 | contents=UIExtendedSRGBColorSpace 0 0 0 1>
  multiply=<SCNMaterialProperty: 0x1c40d2440 | contents=UIExtendedSRGBColorSpace 1 0.999974 0.999991 1>
  normal=<SCNMaterialProperty: 0x1c40d2360 | contents=UIExtendedSRGBColorSpace 1 0.999974 0.999991 1>
>
)

我做错了什么?有没有更好的方法来做到这一点?

【问题讨论】:

    标签: ios macos scenekit


    【解决方案1】:

    根据此帖子in Apple forums and the response by @toyos,看来此方法仅适用于 dae 文件,不适用于 scn 文件。我也可以确认。

    【讨论】:

      猜你喜欢
      • 2022-07-12
      • 1970-01-01
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      相关资源
      最近更新 更多