【发布时间】: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>
>
)
我做错了什么?有没有更好的方法来做到这一点?
【问题讨论】: