gpt4 book ai didi

scenekit - 使用 ARKit 将 SCNText 添加到 SCNScene

转载 作者:行者123 更新时间:2023-12-02 08:00:55 26 4
gpt4 key购买 nike

我刚刚开始学习 ARKitexample 和 Scenekit。我读了一些Scenekit,发现为了添加文本,我需要使用SCNText。

我尝试这样写,但没有显示。

    guard let pointOfView = sceneView.pointOfView else { return }

let text = SCNText(string: "Hello", extrusionDepth: 4)
let textNode = SCNNode(geometry: text)
textNode.geometry = text
textNode.position = SCNVector3Make(pointOfView.position.x, pointOfView.position.y, pointOfView.position.z)
sceneView.scene.rootNode.addChildNode(textNode)

我只想在用户按下按钮时在 SCNScene 上添加一些文本(例如“hello world”)。

编辑

我看到了该文本,但由于我尚未设置平面(或 anchor ),因此我无法像在该文本前面一样查看该文本。我能怎么做?

最佳答案

这里至少有两个问题。

<小时/>

如果您将节点的位置设置为与相机的位置相匹配,您可能不会看到该节点的任何内容。您希望将事物放置在相机前面以便可以看到它们。相机总是朝其局部空间的 -z 方向看。有很多方法可以进行必要的数学计算,但这里有一种可能很方便(在手机上编码,所以 YMMV):

textNode.simdPosition = pointOfView.simdPosition + pointOfView.simdWorldFront * 0.5

这应该将你的物体放在相机前面半米处(或者更确切地说,相机当时所在的位置 - 它不会跟随相机)。它有效是因为 simdWorldFront是向量(0,0,-1),在局部空间中表示相机节点指向的方向,从局部空间转换到世界空间。

<小时/>

SCNText 的默认字体大小约为 16。但这是以场景单位为单位的,而场景单位在 ARKit 中映射为米。此外,“文本框”固定在其左下角。因此,您的文本很可能不可见,因为它高 16 米,位于您的右侧。

处理这个问题的一个简单方法是设置 scalepivot在使其内容小得多的节点上。

关于scenekit - 使用 ARKit 将 SCNText 添加到 SCNScene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44733842/

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