ARKit: Placing an SCNText at a particular point in front of the camera

前端 未结 1 1438
鱼传尺愫
鱼传尺愫 2020-12-06 02:59

I\'ve managed to get a cube (SCNNode) placed on a surface where the camera is pointed, however I am finding it very difficult to do the simple (?) task of also placing text

相关标签:
1条回答
  • 2020-12-06 03:33

    The coordinate center for an SCNGeometry is its center point. But when you are creating a SCNText the center point is somewhere in the bottom left corner:

    You need to center the text first. This can be done by checking the bounding box of the node containing your text and setting a pivot transform to change the texts center to its actual center:

    func center(node: SCNNode) {
        let (min, max) = node.boundingBox
    
        let dx = min.x + 0.5 * (max.x - min.x)
        let dy = min.y + 0.5 * (max.y - min.y)
        let dz = min.z + 0.5 * (max.z - min.z)
        node.pivot = SCNMatrix4MakeTranslation(dx, dy, dz)
    }
    

    Edit:

    Also note this answer that explains some additional pitfalls: A text with 16 pts font size is 16 SceneKit units tall. But in ARKit 1 SceneKit units = 1 meter!

    0 讨论(0)
提交回复
热议问题