将3D SceneKit节点位置映射到2D坐标-projectPoint不起作用

Pas*_*cal 0 xcode ios scenekit swift

我正在SceneKit中显示由几个SNNode组成的3D模型。

我在sceneview-overlay视图上显示2D SpriteKit节点。2D节点的位置应始终在特定3D SCNNode的前面。

如何将3D位置映射到SpriteKit 2D位置?

我试过了let screenPoint = sceneView.projectPoint(my3dNode),但这是行不通的:即使my3dNode位于屏幕中央,该函数也会返回非常奇怪的值(例如,负值或超过1000)。

你有什么想法吗?

Ash*_*Ash 5

可能是因为它是从未翻译,未修改的节点位置投射出来的,或者该节点是另一个节点的子节点,从而更改了其参照系。尝试使用myNode.presentation.worldPosition作为的输入projectPoint

[编辑]

仔细阅读一下,您是否会更好地创建精灵的平面纹理,将其附加到有问题的节点上,为其设置“广告牌”约束,并设置其Z顺序以便始终显示在前面?