通过SWIFT程序更改SceneKit节点纹理



我有一个兽人。SCN文件。在兽人中有一个兽人的节点,我在那里指定了所有的纹理。它在加载默认加载的蒙皮时工作。当我试图在下面的代码中更改皮肤时,整个东西就会变成灰白色。

以下两个项目都创建了白色兽人。此外,由于某种原因,它会调用两次。为什么?

self.sceneView.scene.rootNode.enumerateChildNodes { (node, stop) in
if node.name == "Orc" {
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "OrcDiffuse2.tga")
node.geometry?.firstMaterial?.diffuse.contents = material
}
}

self.sceneView.scene.rootNode.enumerateChildNodes { (node, stop) in
if node.name == "Orc" {
node.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "OrcDiffuse2.tga")
}
}

如果我用它已经拥有的相同皮肤替换漫反射,我会得到柔软的白色网格的相同结果:

self.sceneView.scene.rootNode.enumerateChildNodes { (node, stop) in
if node.name == "Orc" {
node.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "T_Orc_diffuse.png")
}
}

将整个SCNMaterial()指定给材质漫反射部分的内容。您可以使用/配置SCNMaterialProperty()并将其分配给diffuse,或者只尝试以下操作:

node.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "art.scnassets/OrcDiffuse2.tga")

如果你想使用整个SCNMaterial(),那么你必须完全配置它并这样分配:

node.geometry?.firstMaterial = material

最新更新