SCNText - 背景“讲话泡泡”

时间:2017-11-02 10:43:42

标签: arkit scntext

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

这是示例代码。它将添加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"

希望对某人有帮助