2017-10-12 62 views
0

在我的场景编辑器我有一个黄色的质感与多维数据集的名字立方体。变化材料编程

如何更改代码立方体的材料?

基本上我应该是这样的:

let scene = SCNScene(named: "art.scnassets/cubeScene.scn")! 

var cube = scene.rootNode.childNodes(named:"cube") 

cube.diffuse.contents = UIImage(named: "grid.png") 

但是,这并不工作。什么是正确的方法?

回答

1

在你的问题中的代码无法编译,原因有三:

  1. childNode(named:)应该childNode(withName:recursively:)。有重命名的参数和缺少的参数。

  2. childNode(withName:recursively:)返回的值是一个可选节点(SCNNode?) - 因为有可能与该名称的节点。

  3. SCNNode没有diffuse属性。节点威力geometry和几何威力firstMaterialSCNMaterial具有漫反射属性。

根据您的需求,最后一行可能看起来是这样的:

cube?.geometry?.firstMaterial?.diffuse.contents = /* ... */ 

注意所有的问号:

  • 有一个问号cube后,因为有可能不存在具有该名称的节点。
  • geometry后一个问号,因为不是每一个节点都有一个几何形状。一些节点有光线或照相机。有些节点只是节点层次结构的一部分。
  • firstMaterial后一个问号,因为不是每个几何形状的材料。另外,一些几何元素有多个materials