swift – ARKit:将SCNText放置在相机前面的特定位置

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

我已经创建了SCNText和后续的SCNNode,但是当我将它添加到rootNode时,文本似乎总是被添加到我的头上并从相机向右移动(这告诉我那是全局原点).

即使我使用与立方体相同的位置值,SCNText节点仍然位于同一位置的头顶.

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

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磅字体大小的文字是16个SceneKit单位高.但在ARKit 1 SceneKit单位= 1米!

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...