好的,根据我的理解,可以在模型的编辑器中为.dae或在Xcode中用作SCNNode的任何3D模型创建材料:
自动应用最顶层的材质,一切都很好。我的问题是我想以编程方式在我的游戏中创建的这些材料之间进行SWITCH。
我尝试通过以下方式获取这些材料的数组:
node.geometry?.materials
然而,这仅返回第一个材料。我已经尝试了各种各样的方法,但无法找到一种方法来获取其他材料并切换到它们。现在我正在尝试:
childNode.geometry?.materials = [(childNode.geometry?.material(named: "test"))!]
//childNode is the node
其中测试是第二种材料,但它发现为零。如何以编程方式在多种材料之间切换?
答案 0 :(得分:2)
如果材料实际上未分配给其中一个材质槽(例如漫反射),则它也不是几何体的一部分。
您可以将第二种材质指定给另一个插槽,然后在将材质读入稍后要使用的属性后,在代码中重置其颜色。
我自己使用的另一个选项是将多种材质分配给同一模型的不同面(在第三方3d软件中)。导出为dae,添加到xcode,然后xcode自动将几何分割为单独的元素,每个元素都有自己的材质。然后我可以在xcode中进行调整,并按照您尝试的方式进行迭代。