带有文本的 SCNMaterial 未出现在带有图像的 SCNMaterial 上

SCNMaterial with text not appearing over SCNMaterial with image

我有一个带有图像的 SCNNode(由 SCNPlane 组成),我想在图像上放置文本。我知道 SCNNode 可以有不同的材料。我的问题是我可以在 SCNNode 上加载图像,但是当我加载它时文本没有出现。我的代码看起来像这样:

let mat = SCNMaterial()
let mat2 = SCNMaterial()
let node = SCNNode(geometry: SCNPlane(width: 6, length: 9))

mat.diffuse.contents = imgName
mat2.diffuse.contents = strName

node.geometry?.firstMaterial?.locksAmbientWithDiffuse = true
node.geometry?.materials = [mat, mat2]

(imgName 是一个 UIImage,strName 是一个字符串)

如果我尝试在图像 ([mat2, mat]) 之前加载文本,我只会得到一个空白平面。我是否错过了准备 SCNMaterial 的步骤?

通过指定

node.geometry?.materials = [mat, mat2]

你是说你的节点的第一个面应该有 material mat,第二个面应该有 material mat2(依此类推第 3、4、5、6 等面孔)。由于您正在使用 SCNPlane,那应该是它的正面和背面。

在 SceneKit 之外的图像上合成文本,这样您就只有一张图像。或者,使用 material 的 transparent 属性 作为文本(您可能希望使用 SCNTransparencyMode.RGBZero)来覆盖图像。 David Ronnqvist 的 SceneKit 书籍在行星示例中有很好的透明度示例。