1

好的,据我了解,可以在模型的编辑器中为 .dae 或在 Xcode 中用作 SCNNode 的任何 3D 模型创建材料:

在此处输入图像描述

最上面的材料会自动应用,一切都很好。我的问题是我想以编程方式在整个游戏中创建的这些材料之间进行切换。

我试图通过以下方式获得一系列这些材料:

node.geometry?.materials

但是,这只返回第一个材料。我已经尝试了everybting,但无法找到获取其他材料并切换到它们的方法。现在我正在尝试:

childNode.geometry?.materials = [(childNode.geometry?.material(named: "test"))!]
//childNode is the node

其中 test 是第二种材料,但它发现它为零。如何以编程方式在多种材质之间切换?

4

1 回答 1

2

如果材质实际上没有分配给材质槽之一(例如漫反射),则它也不是几何体的一部分。

您可以将第二种材料分配给另一个插槽,然后在将材料读入属性后在代码中重置其颜色以供以后使用。

我自己使用的另一个选项是将多种材料分配给同一模型的不同面(在第三方 3d 软件中)。导出为 dae,添加到 xcode,然后自动将几何体划分为单独的元素,每个元素都有自己的材质。然后我可以在 xcode 中进行调整,并以与您尝试相同的方式进行迭代。

于 2017-10-02T03:05:29.100 回答