我有一个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时错过了一步吗?
答案 0 :(得分:3)
指定
node.geometry?.materials = [mat, mat2]
你说节点的第一面应该有材质mat
,第二面应该有材质mat2
(依此类推第3,第4,第5,第6等等因为你正在使用SCNPlane
,所以应该是它的正面和背面。
将您的文本合成在SceneKit外部的图像上,这样您就只有一个图像。或者,使用材质的transparent
属性作为文本(您可能希望使用SCNTransparencyMode.RGBZero
)来覆盖图像。 David Ronnqvist的SceneKit书中有很好的透明例子。