gpt4 book ai didi

swift - 以编程方式更改 scn 对象的 Material

转载 作者:搜寻专家 更新时间:2023-11-01 06:31:29 24 4
gpt4 key购买 nike

在我的场景编辑器中,我有一个带有黄色纹理的立方体,其名称为立方体。

如何在代码中更改立方体的 Material ?

基本上我应该是这样的:

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

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

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

但这行不通。什么是正确的方法?

最佳答案

您问题中的代码由于三个原因无法编译:

  1. childNode(named:)应该是 childNode(withName:recursively:) .既有重命名的参数,也有缺失的参数。

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

  3. SCNNode 没有 diffuse属性(property)。一个节点可能有一个 geometry 一个几何体可能有一个 firstMaterial . SCNMaterial 具有漫射特性。

根据您的需要,最后一行可能如下所示:

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

注意所有的问号:

  • cube 后面有个问号因为可能不存在具有该名称的节点。
  • geometry 后面有个问号因为并非每个节点都有几何图形。一些节点有灯或摄像头。一些节点只是节点层次结构的一部分。
  • firstMaterial 后面有个问号因为不是每个几何体都有 Material 。此外,一些几何元素有多个 materials .

关于swift - 以编程方式更改 scn 对象的 Material ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46716373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com