Как разместить SCNText внутри SCNPlane? - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь создать приложение AR с номерами SCNText и SCNPlane.И я пытаюсь поместить каждый SCNText в SCNPlane, но, как показывает этот рисунок , текст всегда выходит за пределы плоскости.

Мой вопрос: как я могу разместить каждый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
    }
}

1 Ответ

0 голосов
/ 21 февраля 2019

Особенность SCNText заключается в том, что его pivot point (он же origin point) расположен в нижней части контейнера его левого угла.Вот так:

enter image description here

Таким образом, вам нужно использовать следующую формулу для расчета местоположения центра точки поворота:

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

Вот полезный пост на эту тему.

Также полезно, чтобы ваш текст сделал небольшое смещение вдоль положительного направления оси Z .

Надеюсь, это поможет.

...