将SCNNode放置在几何体上

时间:2019-03-04 18:45:27

标签: ios swift scenekit arkit

我正在使用以下代码创建一个放置在我的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

我要弄清楚的是如何使盒子的屏幕尺寸(图像空间)恒定。

我希望将box节点放置在3D场景中,使其看起来始终相同,例如30x30像素...

因此,无论我在移动手机的ARKit摄像机周围移动时,距框有多远或多近,我都希望框在视口中始终在屏幕上显示相同的大小。

我该如何实现?

1 个答案:

答案 0 :(得分:1)

如果您需要将对象置于3D模式,解决方案是使用对象与相机之间的距离在每一帧进行缩放。有一个similar answer here

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