クォータニオンを用いた親子関係とボーン構成

実現したいこと

pythonでのクォータニオンを用いたボーン構成とそのプロット

前提

初めて質問させていただきます。文章が拙いところもあるかと思いますがお許しと遠慮なくご質問ください
現在、モーションセンサを用いた姿勢推定に関する研究を行っています。そこでmocopiというソニーのセンサを用いて数値解析を行おうと思っています。

センサからの数値取得はできたのですが、そこからボーン情報を再構成する部分で詰まってしまいました。
具体的には各フレームにおいてTポーズでの各関節のXYZ座標、Qwxyzクォータニオン数値が27関節(根は腰)と固定値の親子情報を取得しました。この数値から、3次元座標空間にプロットしようとしたのですが、クォータニオンと親子情報の扱いに慣れておらず、再構成できませんでした。

データは
Qx0,Qy0,Qz0,Qw0,X0,Y0,Z0,Qx1,Qy1,,,,,,,,,,Qw26,X26,Y26,Z26
の形で、クォータニオンのノルム=1はすでにされています。
親子情報は説明するよりこちらの
https://www.sony.net/Products/mocopi-dev/jp/documents/Home/TechSpec.html
公式情報の図が分かりやすいかと思います。

現状

単純にQwxyzXYZQwxyz^-1の公式を各関節に作用させてもヒト型にならず、回転前の親情報または回転後の親XYZ情報を作用前、作用後に足し合わせ(原点に平行移動させて計算してもどす)などを試してみたのですが、よくわからないという状態です。numpyのquat関数と手書き変換はやってみました

ソースコードで書いてる人が見つからず、UnityやBlenderなどの外部ツールや数学的歴史背景ばかり出てきてしまいボーンや親情報の取り扱いについてあまり良い情報が得られていません。周りにも3D系はすくないので助言をお願いします。

以下、参考にしたサイト様です。

https://www.jtwtw.com/2011/11/blog-post.html?m=1
https://youtu.be/eWdawLuckus
https://github.com/seagetch/mcp-receiver/blob/main/doc/Protocol.md

コメントを投稿

0 コメント