我将尝试将嵌套的SCNNode的3D位置转换为x,y(CGPoint)坐标(用于在对象上叠加视图)。
我的SCNNode结构如下:
我想获取NodeB在屏幕上的2D位置。我知道convertPosition:和projectPoint:方法,但我认为我没有正确使用它们。
有任何指针吗?
编辑:
目前尝试类似这样的代码:
生成的 x、y、z 值偏差很大(有时甚至为负数,在屏幕空间中这是没有意义的,因为对象显然在视野内)。
我的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 值偏差很大(有时甚至为负数,在屏幕空间中这是没有意义的,因为对象显然在视野内)。