【问题标题】:SCNMaterial with text not appearing over SCNMaterial with image带有文本的 SCNMaterial 没有出现在带有图像的 SCNMaterial 上
【发布时间】:2016-05-22 22:42:56
【问题描述】:

我有一个带有图像的 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 是 String)

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

【问题讨论】:

    标签: ios swift scenekit scnnode


    【解决方案1】:

    通过指定

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

    你是说你的节点的第一个面应该有材质mat,第二个面应该有材质mat2(等等第三、第四、第五、第六等等面)。因为您正在使用SCNPlane,这应该是它的正面和背面。

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

    【讨论】:

    • 您在 SceneKit 之外修改图像的建议让我重新考虑了我的方法。我在搜索时找到了this,并将另一个函数合并到我的代码中,该函数将复制图像,仅用于添加到该平面。现在我可以在我的图像上看到文字。感谢您指出正确的方向。
    猜你喜欢
    • 2018-07-31
    • 1970-01-01
    • 2012-06-10
    • 2017-12-13
    • 2023-03-26
    • 2018-09-15
    • 1970-01-01
    • 2018-01-22
    • 2019-12-09
    相关资源
    最近更新 更多