トップページ > 過去ログ > 記事閲覧
MV1SetFrameUserLocalMatrixについて
名前:ジュンヤ 日時: 2011/08/05 16:45

前回に引き続き質問させていただきます。 Kinectで座標を取得して、 DrawSphere3DとDrawLine3Dで描画するところまでできました。 h t t p://w w w.youtube.com/watch?v=SbClTXBNQMs そこで今度は、MV1SetFrameUserLocalMatrixのサンプルを参考にして、 MMDモデルをリアルタイムにアニメーションさせようと思いましたが、 座標変換処理が上手くいかずに思い通りになりませんでした。 サンプルのようにMV1SetFrameUserLocalMatrixの第3引数に行列を指定して、 そこから移動する距離を指定するという方法でなく、 DrawSphere3Dなどのように直接描画したい座標を指定する方法はないでしょうか? よろしくお願いします。

Page: 1 |

Re: MV1SetFrameUserLocalMatrixについて ( No.1 )
名前:yasi 日時:2011/08/06 04:43

動画を拝見させていただきました。 自分はKinectに詳しくないので質問を質問で返すようで申し訳ないのですが、 Kinect側からはどのような情報が得られているのでしょうか? それによってジュンヤさんが本当にやりたい事への回答が違ってくると思います。 動画では各関節にスフィアが使用されていた為、実際に動きに合わせてスフィアが回転しているのか、 それともただ座標に移動しただけなのか不明なため 間違えていたら申し訳ありませんが、動画と質問内容から察するに、 Kinect側からは各関節ポイントの傾き情報無しのワールド座標(Pos)のみ、 もしくはディスプレイ座標+深度情報しか得られていないのではないかと推測しますが いかがでしょうか? もしそうであればそこから先、その座標情報をどう使用して各フレームに適用させるかは プログラマの考え方に委ねられています。 モーションキャプチャのデータからモデルを動かすというのは、 各関節間の長さの違いなどの問題から精度を出す事は簡単ではありません。 恐らく一番単純な手段としてはKinectから得られた親子関係同士の座標(例えば肩と肘)から 傾きベクトルを計算して設定する方法だとは思いますが、 そういったレベルの話はこちらよりKinect関連を専門にしている掲示板などで 質問されたほうが回答は早いかもしれません。
Re: MV1SetFrameUserLocalMatrixについて ( No.2 )
名前:ジュンヤ 日時:2011/08/06 19:38

>Kinect側からはどのような情報が得られているのでしょうか? Kinect内部でのワールド座標が得られるので、スクリーン座標に変換して、 それを少し手を加えて、画面上に描画できるようにしてます。 yasiさんのおっしゃる通りディスプレイ座標+深度情報しか得られてない状況です。 やはり単に座標を得ただけでは、アニメーションするのは難しそうですね。 関数の使い方以前の問題だと思いましたので、参考になりそうな情報をさがして1から考えなおしてみることにします。

Page: 1 |