我正在尝试将嵌套 SCNNode 的 3d 位置转换为 x, y (CGPoint) 坐标(用于在对象上覆盖视图)。
我的 SCNNode 结构如下所示:
+-----------+
| Root node |
+-----+-----+
|
|
+----+---+
+--+ Node A +--+
| +--------+ |
| |
| |
| |
+---+----+ +----+---+
| Node B | | Node C |
+--------+ +--------+
我想获得 NodeB 的屏幕空间 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 相差很远(有时是负数,这在屏幕空间中没有意义,因为对象清晰可见)。