【问题标题】:ARKit: Placing an SCNText at a particular point in front of the cameraARKit:将 SCNText 放置在相机前面的特定点
【发布时间】:2017-12-03 08:51:44
【问题描述】:

我已经设法将一个立方体 (SCNNode) 放置在相机指向的表面上,但是我发现很难完成将文本也放置在同一位置的简单 (?) 任务。

我已经创建了 SCNText 和后续的 SCNNode,但是当我将它添加到 rootNode 时,文本似乎总是被添加到我的头顶和右侧的相机之外(这告诉我这是全局原点)。

即使我使用与立方体完全相同的位置值,SCNText 节点仍会放置在我头顶的同一位置。

抱歉,如果这是一个基本问题,我以前从未在 SceneKit 工作过。

【问题讨论】:

    标签: swift scenekit arkit


    【解决方案1】:

    SCNGeometry 的坐标中心是它的中心点。但是当您创建 SCNText 时,中心点位于左下角的某处:

    您需要先将文本居中。这可以通过检查包含文本的节点的边界框并设置枢轴变换以将文本中心更改为其实际中心来完成:

    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)
    }
    

    编辑:

    另请注意this answer,它解释了一些额外的陷阱: 16 pts 字体大小的文本是 16 个 SceneKit 单位高。但在 ARKit 1 SceneKit 中,单位 = 1 米!

    【讨论】:

    • 知道如何在 obj-c 中执行此操作吗?
    猜你喜欢
    • 2018-02-22
    • 2017-11-20
    • 2018-08-24
    • 2021-07-07
    • 2019-03-20
    • 2018-12-01
    • 1970-01-01
    • 2018-01-30
    • 2018-10-04
    相关资源
    最近更新 更多