4

ネストされた SCNNode の 3d 位置を x、y (CGPoint) 座標に変換しようとしています (オブジェクトにビューを重ねるため)。

私の SCNNode 構造は次のようになります。

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

NodeB の画面空間の 2 次元位置を取得したいと思います。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 はかなりずれています (オブジェクトがはっきりと表示されているため、画面空間では意味をなさない負の場合もあります)。

4

2 に答える 2

2

NodeB の位置は、NodeA の座標系で指定されます。だから私はあなたが望むと信じています

rootPosition = [rootNode convertPosition:nodeB.position fromNode:nodeA]
于 2015-12-04T21:54:26.733 に答える