0

我有一个带有图像的 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 的步骤吗?

4

1 回答 1

3

通过指定

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

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

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

于 2016-02-12T05:36:24.140 回答