我刚开始学习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)
Run Code Online (Sandbox Code Playgroud)
我只想在用户按下按钮时在SCNScene上添加一些文本(如"hello world").
编辑
我看到那个文字,但由于我没有设置平面(或锚),我不能把它看作好像我在那个文本前面.我能怎么做?
你这里至少有两个问题.
如果将节点的位置设置为与摄像机的位置匹配,则可能看不到该节点的任何内容.你想把东西放在相机前面让他们看到.摄像机始终朝向其本地空间的-z方向.有很多方法可以做必要的数学运算,但这里有一个方便的(在电话上编码,所以YMMV):
textNode.simdPosition = pointOfView.simdPosition + pointOfView.simdWorldFront * 0.5
Run Code Online (Sandbox Code Playgroud)
这应该将您的物体放在相机前半米处(或者更确切地说,相机在那一刻 - 它不会跟随相机).它的工作原理是因为simdWorldFront是矢量(0,0,-1),它在局部空间中表示相机节点指向的方向,从局部空间转换为世界空间.
默认字体大小为SCNText16,但是在场景单元中,场景单元映射到ARKit中的米.此外,"文本框"固定在其左下方.所以很可能你的文字不可见,因为它高16米,在你的右边.
处理此问题的一种简单方法是在节点上设置scale或pivot使其内容更小.
| 归档时间: |
|
| 查看次数: |
3836 次 |
| 最近记录: |