【问题标题】:How to place SCNText inside SCNPlane?如何将 SCNText 放置在 SCNPlane 中?
【发布时间】:2019-04-26 17:17:17
【问题描述】:

我正在尝试创建一个具有多个 SCNTextSCNPlane 的 AR 应用程序。 我试图将每个SCNText 放在SCNPlane 内,但正如figure 所示,文本总是在平面之外。

我的问题是如何将每个 SCNText 放在 SCNPlane 内?

这是我的代码部分:

func displayMark() {

    var str = ["Orange ","Apple ","Banana ","limon", "onion"]

    var x : Float = 1
    var i = 0
    while i<5 {

    let text = SCNText(string: str[i], extrusionDepth: 0)
    let material = SCNMaterial()
    material.diffuse.contents = UIColor.black
    text.materials = [material]

    let node = SCNNode()
    node.position = SCNVector3(0, x/15 , 0)
    node.scale = SCNVector3(0.0009, 0.0009, 0.0009)


    let planeNode2 = SCNNode(geometry: text)
     node.addChildNode(planeNode2)

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



    let plane = SCNPlane(width: CGFloat(bound.x),
                         height: CGFloat(bound.y))
    plane.cornerRadius = 5
    plane.firstMaterial?.diffuse.contents = UIColor.gray.withAlphaComponent(0.8)


    let planeNode = SCNNode(geometry: plane)
    node.addChildNode(planeNode)
    planeNode.name = "text"
        i = i + 1
        x = 1 + x

        self.sceneView.scene.rootNode.addChildNode(node)
        self.sceneView.autoenablesDefaultLighting = true
    }
}

【问题讨论】:

    标签: ios swift scenekit augmented-reality arkit


    【解决方案1】:

    SCNText 的特点是它的 pivot point(又名origin point)位于其左角容器的底部。 像这样:

    所以你需要使用下面的公式来计算一个轴心点的中心位置:

    /*   ( Max dist - Min dist ) / 2                            for X and Y    */ 
    

    这是关于此主题的useful post

    您的文本沿Z 轴的正方向略微偏移也有好处

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-15
      • 2017-12-03
      • 1970-01-01
      • 2018-08-24
      • 2018-12-09
      • 2020-07-31
      • 2019-05-09
      • 2018-10-26
      相关资源
      最近更新 更多