ゲームプログラミングC++といる本にこのような記事があったのですが、
![
それぞれのボーンのローカル行列と、階層構想の親子関係がわかれば、ボーンのグローバル行列を計算できる
例えば、背骨の親がルートボーンならば、背骨のローカルポーン行列は、ルートボーンからの位置と方向である。
そして、ルートボーンのローカルポーズ行列は、グローバルポーズ行列と同じだ。
ゆえに、背骨のローカルポーズ行列(背骨local)に、ルートボーンのグローバルポーズ行列(ルートglobal)をかければ、
背骨のグローバルポーン行列(背骨global)がえられる。
(背骨global)= (背骨local)×(ルートglobal)
実際に
(背骨local)=(x,y)=(0,1)
(ルートglobal)=(x,y)=(2,2)
に設定して計算したのですが、どうやっても結果が、思ったようにならないのですが、どのように計算すればいいのでしょうか?
普通に
X=02=0
Y=12=2
とやったら、できなかったので、行列で計算するのかなと思い、独学で勉強してみて、行列の掛け算と拡大変換・回転変換・平行移動変換
など勉強したのですが、上の計算の結果(背骨global=x,y=2,3)にはたどり着けませんでした。
平行移動ならいけると思うのですが、平行移動は掛けるではなく、足す(opengl)なので違うかな~と...
単位行列を計算するのかなとも思ったのですが、ゲームプログラミングC++といる本に単位行列の子とは書かれていなかったので...
単位行列・逆行列は浅く学んでみたのですが、プログラムにどう作用しているのかわかりませんでした。<(_ _)>
例えばなのですが、変数Aという行列があり、それに逆行列をかけ代入したら、変数Aが保持する値が単位行列になってしまって、
元の値が消えてしまっていると思うのですが....
この変数A(単位行列の状態)に何をかけても、かけた値が返ってくると思うのですが...
変数A=
1, 2,5,
1,-1,1, * 逆
0, 1,2,
行列もプログラミングも初心者で、何が正しいのかわかりませんでした。
そもそも、行列の認識が違うのかもしれません。どの分野を勉強すればいいのでしょうか?
よろしければわかる方お教えください。<(_ _)>
回答2件
あなたの回答
tips
プレビュー