更改子节点的颜色

时间:2015-06-23 04:00:27

标签: swift ios8 scenekit

目前,当我改变孩子的节点颜色时,它会导致所有其他子节点的颜色变化,这是我不想要的。

我用这种方式改变子节点的颜色:

let materials = node.geometry?.materials as! [SCNMaterial]
let material = materials[0]
material.diffuse.contents = UIColor.grayColor()

3 个答案:

答案 0 :(得分:10)

默认情况下,如果您有多个节点分配了相同的While 1=1 BEGIN select top 1 @email_id=email_id, @email_type=email_id, @from_add=from_addr, @to_add=to_addr, @reply_add=reply_addr, @Mysubject=subject, @message=letter_body from outbound_email_queue if @@ROWCOUNT = 0 break begin TRAN begin try DELETE FROM outbound_email_queue WHERE EMAIL_ID = @email_id exec msdb.dbo.sp_send_dbmail @recipients=@to_add ... etc. commit tran end try begin catch rollback tran select -1 end catch END 实例,那么这些节点也具有相同的材质。更改材质会更改使用该材质的所有节点的外观。

SCNGeometry对象并不直接表示几何数据 - 它实际上只是一组几何数据和一组材料之间关联的轻量级表示。因此,当您想要在具有不同材质的多个节点上渲染相同的几何体时,只需复制几何对象......它们仍然可以共享基础数据,因此渲染时成本可以忽略不计,但是您和#39;能够独立改变他们的材料。

复制几何体后,您可以单独更改两个几何体上的 材质集,但这些集仍然共享相同的SCNGeometry个实例。 (这很有用,因为几何体可以有多种材质,每种材质都是一组属性,因此尽可能有效地分享它们。)因此,您可以为每个几何体分配新材料,或者取消分享材料。

SCNMaterial

在WWDC 2014关于Building a Game with SceneKit的讨论中对此进行了很好的讨论。相关位在视频中约为37:15,在PDF中为幻灯片159。

答案 1 :(得分:5)

根据@sambro评论和@rickster代码,以下是现成的答案:

curl -X POST{"name":"groupname"} -ik -u application:password-H 'Content-Type: application/json' -H 'Accept: application/json' https://localhost/crowd/rest/usermanagement/1/user/group/direct?username=username.

答案 2 :(得分:0)

现在已简化

    let searchNode = node.childNode(withName: "YOUR_CHILD_NODE_NAME", recursively: true)
    searchNode?.geometry?.firstMaterial?.diffuse.contents = UIColor.red

在这里,它搜索完整的树。子节点,子子节点等,直到找到具有特定名称的节点。