Car*_*s C 7 swift arkit ios13 realitykit
我试图获得与他们父母相关的骨骼旋转,但我最终得到了非常奇怪的角度。
我已经尝试了所有方法,矩阵乘法、偏移、轴交换,但没有运气。

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
}
Run Code Online (Sandbox Code Playgroud)
在//RETRIEVE ANGLES HERE我尝试过不同的方法:
let n = SCNNode()
n.transform = SCNMatrix4(jointTransform)
print(n.eulerAngles)
Run Code Online (Sandbox Code Playgroud)
在这次尝试中,我将JointTransformation设置为 a,SCNNode.transform以便我可以检索eulerAngles以使它们具有人类可读性并尝试了解发生了什么。
我开始工作一些关节,但我认为这纯粹是巧合或运气,因为其余的骨骼旋转非常奇怪。
在其他尝试中,我使用jointModelTransforms(模型,而不是本地)来获取它们,因此所有变换都相对于骨架的根骨骼。
用这种方法我做矩阵乘法是这样的:
LocalMatrix = Inverse(JointModelMatrix) * (ParentJointModelMatrix)
Run Code Online (Sandbox Code Playgroud)
为了获得相对于其父级的旋转,但同样的情况,一些骨骼旋转正常,其他旋转很奇怪。我敢打赌纯属巧合。
为什么我想要获得骨骼旋转?
我正在尝试使用我的手机构建一个 MoCap 应用程序,该应用程序将旋转传递给 Blender,尝试从中构建 .BVH 文件,以便我可以在 Blender 上使用它们。
这是我自己的装备:

我以前用 Kinect 做过这件事,但我已经尝试了好几天在 ARKit 3 上做到这一点,但没有运气:(
小智 0
只是猜测\xe2\x80\xa6 这能完成这项工作吗?
\n\n let skeleton = bodyAnchor.skeleton\n let jointTransforms = skeleton.jointLocalTransforms\n\n for (i, jointTransform) in jointTransforms.enumerated() {\n print(Transform(matrix: jointTransform).rotation)\n }\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1211 次 |
| 最近记录: |