如何在使用纹理文件的模型中查找所有SCNMaterials

时间:2018-09-28 05:48:55

标签: ios macos scenekit

我正在尝试使用以下代码在模型(.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>
>
)

我在做什么错?有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

根据发布的信息in Apple forums and the response by @toyos,该方法似乎仅适用于dae文件,不适用于scn文件。我也可以确认。