2016-09-15 8 views
-1

私はSCNNodeのconvertTransformをEigenに変換しようとしていますが、私は舞台裏で何が起こっているのか明確には分かりません。SCNNodeのconvertTransform - 背景の背後

let targetNodeTransform = targetNode?.convertTransform(transform, from: nil) 

私はEigenを使用しているので、変換の逆数は同じであると思いました。それはそうではないようですので、ワールド座標空間からオブジェクト座標空間に移動するときにconvertTransformで何が起きていますか?私はconvertTransformの背後にある数学を探していますので、Eigenを使って実装することができます。

+1

あなたは 'convertTransform'の背後にある数学を求めていますか?あるいは、数学を理解していますが、C++/Eigenでそれをどのようにフレーズするか分かりませんか? –

+0

あなたがEigenに書いたことがない限り、更新はあなたの質問に答えます( 'worldTransform'が何であるか分からないという事実を除いて、私は原点と回転を仮定しません)。 –

答えて

0

これは、上記のconvertTransformから返された値に相当します。

let targetNodeTransform = SCNMatrix4Mult(transform, SCNMatrix4Invert((targetNode?.worldTransform)!)); 

世界は変革SCNNodeのworldTransformのドキュメント

によると、ノードのシーンの座標空間への相対的な空間変換 座標です。この変換は、 というノードの変換プロパティと、親の ノード、親の親などの変換プロパティをシーンのrootNodeオブジェクトまで連結したものです。

関連する問題