gpt4 book ai didi

swift - ARKit:将 SCNText 放置在相机前面的特定点

转载 作者:搜寻专家 更新时间:2023-10-30 21:50:28 27 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

Center point for a box

Center point for text

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

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 米!

关于swift - ARKit:将 SCNText 放置在相机前面的特定点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44828764/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com