我正在尝试使用以下代码在模型(.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>
>
)
我在做什么错?有更好的方法吗?
答案 0 :(得分:0)
根据发布的信息in Apple forums and the response by @toyos,该方法似乎仅适用于dae文件,不适用于scn文件。我也可以确认。