7

親に関連するボーンの回転を取得しようとしていますが、かなり奇妙な角度になってしまいます。

私はすべて、行列の乗算、オフセット、軸の交換、そして運がないことを試しました。

guard let bodyAnchor = anchor as? ARBodyAnchor else { continue }

let skeleton = bodyAnchor.skeleton
let jointTransforms = skeleton.jointLocalTransforms

for (i, jointTransform) in jointTransforms.enumerated() {

    //RETRIEVE ANGLES HERE
}

//RETRIEVE ANGLES HERE私はさまざまなアプローチを試しました:

let n = SCNNode()
n.transform = SCNMatrix4(jointTransform)
print(n.eulerAngles)

この試行では、jointTransformationをに設定して、 eulerAnglesSCNNode.transformを取得して人間が読めるようにし、何が起こっているのかを理解しようとします。

私はいくつかの関節を動かすことができますが、それは純粋な偶然か運だと思います.残りの骨は非常に奇妙に回転します.

他の試みでは、 jointModelTransforms (Local ではなく Model) を使用してそれらを取得し、すべての変換が Skeleton の Root ボーンに関連するようにします。

このアプローチでは、次のような行列乗算を行います。

LocalMatrix = Inverse(JointModelMatrix) * (ParentJointModelMatrix)

親に相対的な回転を取得するには、同じ状況で、一部のボーンは正常に回転し、他のボーンは奇妙に回転します。まったくの偶然でしょう。

ボーンの回転を取得する必要があるのはなぜですか?

Blender に回転を渡す携帯電話で MoCap アプリを構築しようとしています。これから .BVH ファイルを構築しようとしているので、Blender で使用できます。

これは私自身のリグです:

Kinectでこれをやったことがありますが、ARKit 3で何日もやろうとしましたが、うまくいきませんでした:(

4

2 に答える 2