带有文本的 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 书籍在行星示例中有很好的透明度示例。
我有一个带有图像的 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 书籍在行星示例中有很好的透明度示例。