2015-12-04 15 views
0

我试图将嵌套的SCNNode的3d位置转换为x,y(CGPoint)坐标(用于覆盖对象上的视图)。在屏幕空间中将嵌套的SCNNode位置转换为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是遥远(有时是负的,这是没有意义的屏幕空间作为对象显然是在视图中)。

+0

你可以发布你到目前为止? – wogsland

+0

@wogsland用代码编辑。 – jxd

回答

1

NodeB的位置是根据NodeA的坐标系指定的。所以我相信你想

rootPosition = [rootNode convertPosition:nodeB.position fromNode:nodeA] 
相关问题