在屏幕空间转换嵌套SCNNode位置到CGPoint

问题描述 投票:1回答:2

我试图嵌套SCNNode的3D位置转换到一个x,y(CGPoint)坐标(用于叠加在对象上的视图)。

我SCNNode结构如下:

      +-----------+
      | Root node |
      +-----+-----+
            |
            |
       +----+---+
    +--+ Node A +--+
    |  +--------+  |
    |              |
    |              |
    |              |
+---+----+    +----+---+
| Node B |    | Node C |
+--------+    +--------+

我想获得基站的屏幕空间的2D位置。我知道的convertPosition:projectPoint:方法,但我正确使用这些我不认为。

任何指针?

编辑:

目前正在尝试这样的事情:

SCNVector3 rootPosition = [[[[self view3D] scene] rootNode] convertPosition:[nodeB position] fromNode:nodeB];
SCNVector3 projectedPoint = [[self view3D] projectPoint:rootPosition];
NSLog(@"x %f y %f z %f", projectedPoint.x, projectedPoint.y, projectedPoint.z);

结果x,y,z是遥远(有时负的,这不会使在屏幕空间感作为对象显然是在视图)。

ios 3d scenekit scnnode
2个回答
1
投票

基站的位置在NodeA上的坐标系来指定。所以我相信你想

rootPosition = [rootNode convertPosition:nodeB.position fromNode:nodeA]

0
投票

在swift4:

nodeAchildPosition = scnScene.rootNode.convertPosition(nodeA.position, from: nodeAchild)
© www.soinside.com 2019 - 2024. All rights reserved.