我正在尝试将SCNNode的convertTransform转换为Eigen但我显然没有得到幕后发生的事情。
let targetNodeTransform = targetNode?.convertTransform(transform, from: nil)
我正在使用Eigen所以我认为变换的逆是相同的。情况似乎并非如此,那么当从世界坐标空间到对象坐标空间时,convertTransform中会发生什么?我正在寻找convertTransform背后的数学,所以我可以使用Eigen实现它。
答案 0 :(得分:0)
确定这相当于上面的convertTransform返回的值。
let targetNodeTransform = SCNMatrix4Mult(transform, SCNMatrix4Invert((targetNode?.worldTransform)!));
根据SCNNode的worldTransform
上的文档世界变换是节点的坐标空间变换 相对于场景的坐标空间。这种转变是 节点的transform属性与其父节点的连接 节点,父节点的父节点,依此类推,直到场景的rootNode对象。