用几何体放置 SCNNode

Placing SCNNode with geometry

我正在使用以下代码创建一个框以放置在我的 AR 场景中:

let box = SCNBox(width: side, height: side, length: side, chamferRadius: 0.008)
box.firstMaterial?.diffuse.contents = UIColor(red: 220/255, green: 65/255, blue: 23/255, alpha: 0.6)
box.firstMaterial?.diffuse.contents = UIImage(named:"test1")!
let nodo = SCNNode(geometry: box)
nodo.position = position

我想弄清楚的是如何使盒子在屏幕尺寸(图片 space)中具有恒定尺寸。

我想让放置在 3D 场景中的盒子节点看起来总是一样的大小,比方说 30x30 像素...

因此,无论我在 ARKit 相机周围移动 phone 时离盒子多远或多近,我都希望盒子在视口中始终在屏幕上显示相同的大小。

我怎样才能做到这一点?

如果您需要您的对象是 3D 的,解决方案是使用对象和相机之间的距离在每一帧中对其进行缩放。有一个 similar answer here.

如果您想要一个 2d 平面,您可以使用 UIKit 放置它,并通过将 3D 点投影到 2D 系统并使用这些值作为视图的坐标来更新每一帧的位置。 (Reference)