タグ

DirectXと回転行列に関するedo_m18のブックマーク (2)

  • ゲームつくろ~質問箱 [One Topic All View / Re[4]: 球体にそった移動 / Page: 0]

    はじめまして、sayuと申します。 今制作しているゲームで、球体にそった移動をさせようとしています。 イメージとしては地球と人間のような関係です。 (3Dです。) 前後左右の移動入力に対し、現在位置からその方向へ移動させたいと思っています。 『その16 オブジェクトを任意の平面に立たせる姿勢制御』と、 掲示板での『クォータニオンでの姿勢』を参考に色々と試したのですが うまくいきませんでした。 そこで、一旦0から考え直そうと思っています。 何か良い方法がありましたら教えて頂けないでしょうか。 よろしくお願いします。 sayuさん、ご質問頂きましてありがとうございます。 返信が遅れまして申し訳ありません。 平面ではなくて球面上でキャラクタを移動させるには少し特別な考え方をする必要があります。 平面の場合、キャラクタが立つ時の足がかりとなる「重力」はワールドのY軸の逆方向になります。球体の場合、

  • その58 やっぱり欲しい回転行列⇔クォータニオン相互変換

    算出されるyzwの符号に注目です。真のxの符号が+の時は正しく出ていますが、真のxの符号が-の場合は符号が反転しています。しかし、実はこれは問題ないんです。というのは「回転クォータニオンのQと-Qは同じ回転になる」という性質があるためです。時計の回転する長針を正面から見るか裏から見るかの違いでして、同じ回転であるのに違いありません。つまり、4*|x|さえ分かれば良いんです。そして、それはもう先の式で計算してあるではないですか(^-^)v。±の符号の「+」を採用して4*|x|を作ればいいだけです。 ここまでの情報があれば「よしゃー、変換はこれでできたぜ!」と思いたくなります。しかし、実は落とし穴がありまして、もう少し考慮が必要になります。右辺を4*|x|で割る時、xが0である可能性があるんです。例えば回転軸nが(0,1,0)とすると、|x|はあっさりと0になってしまいます。この場合、4*|x

  • 1