2016-09-15 41 views
-1

我試圖將SCNNode的convertTransform轉換爲Eigen,但我顯然不知道幕後會發生什麼。SCNNode的convertTransform - 幕後製作

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

我使用Eigen,所以我認爲變換的逆將是相同的。這似乎並非如此,那麼當從世界座標空間轉到對象座標空間時,convertTransform中發生了什麼?我正在尋找convertTransform背後的數學,所以我可以使用Eigen來實現它。

+1

你問'convertTransform'後面的數學嗎?或者你理解數學,但不知道如何用C++/Eigen來表達它? –

+0

您的更新會回答您的問題,除非您還想將其寫入特徵(不知道「worldTransform」是什麼,我假設原點和不旋轉)。 –

回答

0

確定這等於上面的convertTransform返回的值。

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

據對SCNNode的worldTransform

的世界轉換的文檔是節點的空間變換 相對座標到場景的座標空間。此轉換是節點的轉換屬性與其父節點 ,父節點的父節點等連接,直到場景的根節點對象。