我试图嵌套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是遥远(有时负的,这不会使在屏幕空间感作为对象显然是在视图)。
基站的位置在NodeA上的坐标系来指定。所以我相信你想
rootPosition = [rootNode convertPosition:nodeB.position fromNode:nodeA]
在swift4:
nodeAchildPosition = scnScene.rootNode.convertPosition(nodeA.position, from: nodeAchild)