【问题标题】:SCNText - background "speech bubble"SCNText - 背景“讲话泡泡”
【发布时间】:2018-04-14 20:40:11
【问题描述】:

如何在 SCNtext 中插入背景(例如“语音气泡”或矩形)? 具体来说,如果我将“Hello World”插入为 SCNText(显然然后作为场景中的 SCNNode),那么我如何才能仅为该文本添加背景?它会是一个 UIimage,它将作为 SCNNode 插入到“Hello World? (请记住,SceneKit 中没有任何 SCNNode 的背景)

【问题讨论】:

  • 完成后我想试试你的应用。

标签: arkit scntext


【解决方案1】:

您可以将 SCNPlane 用作另一个 SCNNode,将 SCNMaterial 分配给它的几何体,并将该材质的diffuse.contents 属性设置为您要使用的背景图像。然后是的,将其放置在与 SCNText 节点相同的位置,但 position.z 值略低于 SCNText 节点,因此它将位于其后面。如果您打算移动或旋转文本节点,请将 SCNPlane 节点添加为文本节点的子节点。

【讨论】:

  • 感谢您的回答。这是我在 SceneKit 中寻找更复杂的解决方案数小时后所做的。令人惊讶的是,我认为没有什么比这更好的了。
【解决方案2】:

这是一个示例代码。它将添加SCNPlane 作为SCNTextNode 的背景:

let minVec = textNode.boundingBox.min
let maxVec = textNode.boundingBox.max
let bound = SCNVector3Make(maxVec.x - minVec.x, 
                           maxVec.y - minVec.y, 
                           maxVec.z - minVec.z);

let plane = SCNPlane(width: CGFloat(bound.x + 1), 
                    height: CGFloat(bound.y + 1))
plane.cornerRadius = 0.2
plane.firstMaterial?.diffuse.contents = UIColor.black.withAlphaComponent(0.9)

let planeNode = SCNNode(geometry: plane)
planeNode.position = SCNVector3(CGFloat( minVec.x) + CGFloat(bound.x) / 2 , 
                                CGFloat( minVec.y) + CGFloat(bound.y) / 2,CGFloat(minVec.z - 0.01))

textNode.addChildNode(planeNode)
planeNode.name = "text"

希望对大家有帮助

【讨论】:

    猜你喜欢
    • 2018-11-16
    • 2015-07-29
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多